소개
이 문서에서는 이벤트 기반 티켓 생성을 위해 Catalyst SD-WAN을 ServiceNow와 통합하는 단계별 프로세스에 대해 설명합니다.
사전 요구 사항
요구 사항
Cisco는 다음을 권장합니다.
- Cisco Catalyst SD-WAN 솔루션에 대한 지식
- 관리자 권한이 있는 ServiceNow의 활성 계정입니다.
- SD-WAN Manager 전송 VPN(Virtual Private Network)에서 인터넷 연결
- ServiceNow가 온프레미스에서 호스팅되는 경우, VPN 0의 SD-WAN Manager에서 ServiceNow에 대한 연결을 확인합니다.
사용되는 구성 요소
이 문서의 정보는 다음 소프트웨어 및 하드웨어 버전을 기반으로 합니다.
- 20.15.3.1 버전을 실행하는 Cisco Catalyst SD-WAN Manager.
- Cisco IOS® XE Catalyst SD-WAN 17.15.3 버전을 실행하는 C8000v.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
네트워크 다이어그램
연결 다이어그램
설정
팁: 이러한 통합을 위해 SD-WAN Manager의 Webhooks를 ServiceNow로 직접 사용합니다.
이 컨피그레이션에는 두 가지 부분이 있습니다.
- ServiceNow API를 구성하고 SD-WAN Manager의 HTTP POST 메시지를 수락 및 처리할 준비를 합니다.
- SD-WAN Manager Webhook 구성
ServiceNow 컨피그레이션
인스턴스 생성
- ServiceNow 자격 증명을 사용하여 ServiceNow 개발자 포털 https://developer.servicenow.com/dev.do에 로그인합니다.
- 시작 페이지에서 "인스턴스 요청"을 클릭하고 릴리스(취리히, 요코하마 또는 Xanadu)를 선택합니다.
그림 1
그림 2
3. 인스턴스가 준비되는 동안 몇 분 정도 기다립니다.
4. 몇 분 후에 페이지를 새로 고쳐 PDI(Personal Developer Instance)를 만듭니다.
그림 3
앱 만들기
5. App Engine Studio를 클릭합니다.
6. 시작 대화 상자를 닫습니다.
7. 앱 만들기를 클릭합니다.
그림 4
8. 이 앱의 이름을 지정하고 계속을 클릭합니다.
그림 5
9. 역할을 기본값으로 유지하고 계속을 누릅니다.
그림 6
10. 이 앱을 만들 때까지 몇 분 정도 기다립니다.
11. 앱 대시보드로 이동합니다.
앱 만들기
12. App Home에서 "Try it out"을 클릭하여 ServiceNow Studio를 엽니다.
그림 7
13. URL을 확인합니다. 그것은 PDI-ID.service-now.com 같은 것입니다.
14. 왼쪽 탐색 창에서 앱 이름을 클릭합니다. 이 경우: ud-vmanage.
그림 8
15. (+) 아이콘을 클릭한 다음 파일 생성을 클릭합니다.
파일 만들기
16. 스크립팅된 REST API를 검색하여 선택합니다.
그림 9
17. 계속을 클릭합니다.
18. 스크립팅된 REST 서비스에 대한 새 레코드를 만듭니다.
- API 이름 입력
- API ID
- Default ACLs lock(기본 ACL 잠금) 아이콘을 클릭합니다.
- 검색 버튼을 클릭하여 대상 레코드를 선택합니다.
- Access control(액세스 제어) 검색에서 "Scripted REST External Default(스크립팅된 REST 외부 기본값)"를 검색하고 클릭합니다.
그림 10
그림 11
19. 제출을 클릭합니다.
스크립팅된 REST 서비스 새 레코드
20. 신규 자원을 생성합니다.
그림 12
21. 이 새 리소스의 이름을 지정하고 HTTP 메서드를 POST로 선택합니다.
그림 13
22. 스크립트 섹션에서 SD-WAN Manager의 JSON을 처리하기 위한 javascript를 생성하고 ServiceNow에서 티켓을 생성합니다.
샘플 스크립트:
(function process(request, response) {
try {
var payload = request.body.data;
gs.info("🚨 vManage Webhook Received: " + JSON.stringify(payload));
var alertMessage = payload.message || 'No message';
var alertSeverity = payload.severity || 'medium';
var deviceId = payload.deviceId || 'Unknown device';
var inc = new GlideRecord('incident');
inc.initialize();
inc.short_description = "vManage Alert: " + alertMessage;
inc.description = "Device ID: " + deviceId + "\nSeverity: " + alertSeverity + "\n\n" + JSON.stringify(payload);
inc.urgency = (alertSeverity === 'critical') ? 1 : 2;
inc.impact = 2;
inc.insert();
response.setStatus(201);
response.setBody({ message: "Webhook received and processed." });
} catch (err) {
gs.error("❌ vManage Webhook Error: " + err.message);
response.setStatus(500);
response.setBody({ error: "Error processing webhook: " + err.message });
}
})(request, response);
경고: 샘플 스크립트입니다. 실습 또는 프로덕션 환경에서 사용하기 전에 스크립트를 철저히 검증하십시오.
23. 제출을 클릭합니다.
스크립팅된 REST 리소스 새 레코드
24. 자원 경로를 기록합니다. SD-WAN Manager Webhook 컨피그레이션에 입력해야 하는 URL입니다.
25. 웹후크 URL: https://PDI.service-now.com/Resource_path.
이 컨피그레이션 가이드의 샘플 URL: https://dev271953.service-now.com/api/x_1831932_ud_vma_0/ud_vm_snow
SD-WAN 관리자 컨피그레이션
이 섹션에서는 ServiceNow API에 경보를 전송하도록 SD-WAN Manager Webhook을 구성합니다. https://dev271953.service-now.com/api/x_1831932_ud_vma_0/ud_vm_snow
팁: 다중 테넌트 SD-WAN 관리자의 경우 테넌트 보기의 각 컨피그레이션을 적용하여 해당 테넌트에 대한 Webhook 이벤트를 전송합니다. 또한 공급자 보기에서 이 컨피그레이션을 적용하여 공급자 도메인 디바이스에서 경보를 수신할 수 있습니다.
SD-WAN Webhook
- SD-WAN Manager에 로그인하고 Monitor(모니터링) > Logs(로그) > Alarm Notifications(경보 알림)로 이동합니다.
그림 14
SD-WAN 경보 알림
2. 경보 알림 추가를 클릭합니다.
그림 15
3. 경보 통지를 설정하려면 각 필드를 입력합니다.
- 알림 이름
- 경보 유형
- 배송 방법: Webhook
- Webhook에 대한 채널 선택: 사용자 지정
- WebHook URL(ServiceNow 측 컨피그레이션의 24단계에서 생성된 API): https://dev271953.service-now.com/api/x_1831932_ud_vma_0/ud_vm_snow
- WebHook 임계값: 100
- 사용자 이름 및 비밀번호를 비워 둡니다.
주의: 사용자 이름 및 비밀번호 필드를 프로덕션에 비워 두면 보안상 위험합니다. 조심해서 움직여.
4. 통지 추가를 클릭합니다.
그림 16
다음을 확인합니다.
ServiceNow 티켓팅 페이지
- ServiceNow 티켓팅 페이지로 이동하겠습니다.
- 이를 위해 이 URL을 사용하여 ServiceNow 주 작업 영역에 액세스합니다. PDI.service-now.com/nav_to.do입니다.
- 예: https://dev271953.service-now.com/nav_to.do
ServiceNow 작업 영역
2. All(모두)을 클릭하고 Incidents(인시던트)를 검색하여 클릭합니다.
그림 17
3. 인시던트 페이지가 열립니다.
인시던트 페이지
4. SD-WAN Manager CLI vshell에서 ServiceNow에 대한 CURL 명령을 실행합니다.
curl -X POST "<your_webhook_url_toward_servicenow>"
성공 메시지:
udutt-krk-dmz-vmanage:~$ curl -X POST "https://dev271953.service-now.com/api/x_1831932_ud_vma_0/ud_vm_snow"
{"result":{"message":"Webhook received and processed."}}
5. ServiceNow에서 발생한 인시던트를 확인합니다.
그림 18
다음과 같이 CURL에서 인증 오류가 발견되면
udutt-krk-dmz-vmanage:~$ curl -X POST "https://dev271953.service-now.com/api/x_1831932_ud_vma_0/ud_vm_snow"
{"error":{"message":"User is not authenticated","detail":"Required to provide Auth information"},"status":"failure"}
인증 오류를 수정하는 단계
- ServiceNow Studio 페이지로 돌아가 앱에 액세스합니다(예: ud-vmanage)를 왼쪽 탐색 창에서 스크립팅된 REST API(예: ud-vm-snow)를 선택합니다.
그림 19
2. 아래로 스크롤하여 자원으로 이동한 후 자원을 클릭합니다(예: 경보).
그림 20
3. 아래로 스크롤하여 Security(보안)로 이동하고 아래와 같이 authentication and ACL authorization(인증 및 ACL 권한 부여)을 선택 취소합니다.
a. 인증 필요
b. ACL 권한 부여 필요
c. 업데이트를 클릭합니다.
그림 21
4. 이번에는 성공한 SD-WAN 관리자 vshell에서 CURL 명령을 다시 실행합니다.
경보 생성
5. 이제 다음과 같이 SD-WAN Manager에서 경보를 생성합니다.
a. SD-WAN 오버레이 내 하나의 WAN 에지 라우터의 인터페이스를 종료합니다.
b. 모든 SD-WAN 관리자 또는 WAN 에지 라우터에서 제어 연결을 지웁니다.
c. 포트 홉(port-hop) 수행
Webhook 컨피그레이션 중에 경보를 생성하려는 사이트를 확인하십시오.
6. ServiceNow 페이지에서 발생한 인시던트.
그림 22
그림 23
그림 24
문제 해결
1. SD-WAN 관리자 측에서 HTTP POST 메시지와 관련된 오류가 있는지 /var/log/nms/vmanage-server.log의 내용을 확인합니다.
성공한 Webhook의 예:
03-Oct-2025 12:21:05,394 UTC INFO [] [udutt-krk-vmanage] [DataCollectionManager] (Thread-157) || ******* Requested device 10.1.1.3, Adding to dataCollectionQueue, Sync type DATA_SYNC.
03-Oct-2025 12:21:05,677 UTC INFO [] [udutt-krk-vmanage] [EventDataCollector] (device-event-processing-2) || Configuration change event from device. Device IP: [10.1.1.3] Device type: [vsmart] User: [admin]
03-Oct-2025 12:21:05,677 UTC INFO [] [udutt-krk-vmanage] [DataCollectionManager] (Thread-157) || ******* Requested device 10.1.1.3, Adding to dataCollectionQueue, Sync type DATA_SYNC.
03-Oct-2025 12:21:06,745 UTC INFO [] [udutt-krk-vmanage] [DeviceHistoryConfigurationDAO] (device-config-0) || saveConfigToElasticDataStore entryTime 1761567666745 personality vsmart
03-Oct-2025 12:21:07,192 UTC INFO [] [udutt-krk-vmanage] [NotificationsConsumer] (pool-59-thread-9) || Response status code after sending webhook: 201
03-Oct-2025 12:21:07,196 UTC INFO [] [udutt-krk-vmanage] [NotificationsConsumer] (pool-59-thread-1) || Response status code after sending webhook: 201
실패한 웹후크 요청의 예:
03-Oct-2025 12:24:46,949 UTC INFO [] [udutt-krk-vmanage] [DataCollectionManager] (Thread-157) || ******* Requested device 10.1.1.3, Adding to dataCollectionQueue, Sync type DATA_SYNC.
03-Oct-2025 12:24:48,065 UTC INFO [] [udutt-krk-vmanage] [DeviceHistoryConfigurationDAO] (device-config-0) || saveConfigToElasticDataStore entryTime 1761567888065 personality vsmart
03-Oct-2025 12:24:48,305 UTC INFO [] [udutt-krk-vmanage] [NotificationsConsumer] (pool-59-thread-15) || Response status code after sending webhook: 401
03-Oct-2025 12:24:48,305 UTC INFO [] [udutt-krk-vmanage] [NotificationsConsumer] (pool-59-thread-14) || Response status code after sending webhook: 401
2. 패킷 캡처를 수행하여 SD-WAN Manager와 ServiceNow 간의 정상 세션을 확인할 수도 있습니다.
숨겨진 공용 IP를 통한 패킷 캡처
관련 정보