簡介
本文檔介紹將Catalyst SD-WAN與ServiceNow整合以生成基於事件的票證的逐步過程。
必要條件
需求
思科建議:
- Cisco Catalyst SD-WAN解決方案知識。
- ServiceNow中具有管理員許可權的活動帳戶。
- 可從SD-WAN Manager傳輸虛擬專用網路(VPN)訪問網際網路。
- 如果ServiceNow在本地託管,則確保從VPN 0中的SD-WAN管理器連線到它。
採用元件
本文中的資訊係根據以下軟體和硬體版本:
- 運行20.15.3.1版的Cisco Catalyst SD-WAN管理器。
- 執行Cisco IOS® XE Catalyst SD-WAN 17.15.3版的C8000v。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
網路圖表
連線圖
組態
提示:對於此整合,我們使用從SD-WAN Manager直接到ServiceNow的Webhook。
此配置包含兩個部分:
- 配置ServiceNow API並準備好接受和處理來自SD-WAN Manager的HTTP POST消息。
- 配置SD-WAN管理器Webhook。
ServiceNow配置
建立例項
- 使用您的ServiceNow憑據登入ServiceNow開發人員門戶https://developer.servicenow.com/dev.do。
- 在「歡迎」頁面上,按一下「請求您的例項」,並選擇任何版本(蘇黎世、橫濱或夏納都)。
圖1
圖2
3.等待幾分鐘以使您的例項準備就緒。
4.幾分鐘後刷新頁面,然後建立個人開發人員例項(PDI)。
圖3
建立應用
5.按一下App Engine Studio。
6.關閉歡迎對話方塊。
7.按一下建立應用。
圖4
8.為此應用指定一個名稱,然後按一下Continue。
圖5
9.將角色保留為預設值,然後按一下Continue。
圖6
10.請等待幾分鐘,以便建立此應用。
11.轉到應用儀表板。
建立應用
12.在App Home中,按一下「試用」以開啟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鎖定)」圖標:
- 按一下搜尋按鈕選擇目標籤錄。
- 在訪問控制搜尋中,搜尋並點選「Scripted REST External Default(指令碼化REST外部預設)」。
圖10
圖11
19.按一下提交。
指令碼化REST服務新記錄
20.建立新資源。
圖12
21.指定此新資源的名稱,選擇HTTP方法作為POST。
圖13
22.在指令碼部分,建立一個javascript以處理SD-WAN Manager中的JSON,並在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. Webhook 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管理器配置
在本節中,我們配置SD-WAN管理器Webhook以向ServiceNow API傳送警報: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.按一下Add Notification。
圖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_aining_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(如下所示)。
a.需要身份驗證
b.需要ACL授權
c.按一下更新
圖–21
4.從SD-WAN Manager vshell再次執行CURL命令,這次成功。
生成警報
5.現在在SD-WAN Manager中生成警報,例如:
a.關閉SD-WAN重疊中的一台WAN邊緣路由器的介面。
b.清除來自任何SD-WAN Manager或任何WAN邊緣路由器的控制連線。
c.執行埠跳躍。
請檢查目標站點,以在Webhook配置期間生成警報。
6.注意ServiceNow頁上建立的意外事件。
圖–22
圖–23
圖–24
疑難排解
1.從SD-WAN Manager端,檢查/var/log/nms/vmanage-server.log的內容,瞭解與HTTP POST消息相關的任何錯誤。
成功的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
未成功的Webhook請求示例:
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的資料包捕獲
相關資訊