简介
本文档介绍将Catalyst SD-WAN与ServiceNow集成以生成基于事件的票证的逐步过程。
先决条件
要求
思科建议:
- Cisco Catalyst SD-WAN解决方案知识。
- ServiceNow中具有管理员权限的活动帐户。
- 从SD-WAN Manager传输虚拟专用网络(VPN)的Internet可达性。
- 如果ServiceNow在本地托管,则确保从VPN 0中的SD-WAN Manager与其连接。
使用的组件
本文档中的信息基于以下软件和硬件版本:
- 运行20.15.3.1版本的Cisco Catalyst SD-WAN Manager。
- 运行Cisco IOS® XE Catalyst SD-WAN 17.15.3版的C8000v。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
网络图
连接图
配置
提示:对于此集成,我们使用从SD-WAN Manager直接到ServiceNow的Webhook。
此配置包含两个部分:
- 配置ServiceNow API并使其准备好接受和处理来自SD-WAN Manager的HTTP POST消息。
- 配置SD-WAN Manager Webhook。
ServiceNow配置
创建实例
- 使用您的ServiceNow凭据登录ServiceNow开发人员门户https://developer.servicenow.com/dev.do。
- 在“欢迎”页面上,单击“请求您的实例”,并选择任何版本(苏黎世、横滨或夏纳都)。
图-1
图-2
3.等待几分钟,等待实例准备就绪。
4.几分钟后刷新页面,然后创建个人开发人员实例(PDI)。
图 -3
创建应用
5.单击App Engine Studio。
6.关闭欢迎对话框。
7.单击Create app。
图 -4
8.为此应用指定一个名称,然后单击Continue。
图 -5
9.将角色保留为默认值,然后单击Continue。
图 -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图标:
- 单击搜索按钮选择目标记录。
- 在访问控制搜索中,搜索并点击“Scripted REST External Default”。
图 -10
图 -11
19.单击Submit。
脚本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.单击Submit。
脚本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 Manager 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.单击添加通知。
图 -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和ACL authorization,如下所示。
a.需要身份验证
b.需要ACL授权
c.点击更新
图 -21
4.再次从SD-WAN Manager vshell执行CURL命令,这次成功。
生成警报
5.现在在SD-WAN Manager中生成警报,例如:
a.关闭SD-WAN重叠网络中的一个广域网边缘路由器的接口。
b.清除来自任何SD-WAN Manager或任何WAN Edge路由器的控制连接。
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的数据包捕获
相关信息