Introduction
Ce document décrit le processus étape par étape pour intégrer Catalyst SD-WAN avec ServiceNow pour la génération de tickets basée sur les événements.
Conditions préalables
Exigences
Cisco recommande :
- Connaissance de la solution SD-WAN de Cisco Catalyst.
- Compte actif dans ServiceNow avec des privilèges d'administrateur.
- Accessibilité Internet à partir du réseau privé virtuel (VPN) de transport SD-WAN Manager.
- Si ServiceNow est hébergé sur site, assurez-vous de la connectivité vers celui-ci à partir de SD-WAN Manager dans VPN 0.
Composants utilisés
Les informations contenues dans ce document sont basées sur les versions de matériel et de logiciel suivantes :
- Cisco Catalyst SD-WAN Manager exécutant la version 20.15.3.1.
- C8000v exécutant Cisco IOS® XE Catalyst SD-WAN 17.15.3 version.
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Si votre réseau est en ligne, assurez-vous de bien comprendre l’incidence possible des commandes.
Diagramme du réseau
Diagramme de connectivité
Configurations
Conseil : Pour cette intégration, nous utilisons des webhooks de SD-WAN Manager directement vers ServiceNow.
Cette configuration se compose de deux parties :
- Configuration de l'API ServiceNow et préparation de l'acceptation et du traitement des messages HTTP POST du gestionnaire SD-WAN.
- Configuration du webhook du gestionnaire SD-WAN.
Configuration de ServiceNow
Créer une instance
- Connectez-vous au portail des développeurs ServiceNow https://developer.servicenow.com/dev.do à l'aide de vos informations d'identification ServiceNow.
- Sur la page d'accueil, cliquez sur « Demander votre instance » et choisissez une version (Zurich, Yokohama ou Xanadu).
Figure-1
Figure-2
3. Attendez quelques minutes que votre instance soit prête.
4. Actualisez votre page après quelques minutes et créez votre instance de développeur personnel (PDI).
Figure-3
Créer une application
5. Cliquez sur App Engine Studio.
6. Fermez la boîte de dialogue de bienvenue.
7. Cliquez sur Créer une application.
Figure-4
8. Donnez un nom à cette application et cliquez sur Continuer.
Figure-5
9. Conservez les rôles par défaut et cliquez sur Continuer.
Figure-6
10. Attendez quelques minutes que cette application soit créée.
11. Accédez au tableau de bord des applications.
Créer une application
12. Dans App Home, cliquez sur « Try it out » pour ouvrir ServiceNow Studio.
Figure-7
13. Notez l'URL. C'est quelque chose comme PDI-ID.service-now.com.
14. Dans le volet de navigation gauche, cliquez sur le nom de l'application. Dans ce cas : ud-vmanage.
Figure-8
15. Cliquez sur l'icône (+), puis cliquez sur Créer un fichier.
Créer un fichier
16. Recherchez et sélectionnez l'API REST scriptée.
Figure-9
17. Cliquez sur Continuer.
18. Créez un nouvel enregistrement pour le service REST scripté.
- Saisissez le nom API
- ID API
- Cliquez sur l'icône de verrouillage ACL par défaut :
- Cliquez sur le bouton de recherche pour sélectionner l'enregistrement cible.
- Dans Recherche de contrôle d'accès, recherchez et cliquez sur « Scripted REST External Default ».
Figure 10 :
Figure 11 :
19. Cliquez sur Soumettre.
Nouvel enregistrement de service REST scripté
20. Créez une nouvelle ressource.
Figure-12
21. Donnez le nom de cette nouvelle ressource, sélectionnez HTTP method as POST.
Figure-13
22. Dans la section Script, créez un javascript pour traiter le JSON à partir du gestionnaire SD-WAN et créez des tickets dans ServiceNow.
Exemple de script :
(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);
Avertissement : Ceci est un exemple de script. Veuillez valider complètement le script avant de l'utiliser dans un environnement de laboratoire ou de production.
23. Cliquez sur Soumettre.
Nouvel enregistrement de ressource REST scriptée
24. Notez le chemin d'accès aux ressources. Il s'agit de l'URL que nous devons entrer dans la configuration Webhook du gestionnaire SD-WAN.
25. URL du webhook : https://PDI.service-now.com/Resource_path.
Exemple d'URL dans ce guide de configuration : https://dev271953.service-now.com/api/x_1831932_ud_vma_0/ud_vm_snow
Configuration du gestionnaire SD-WAN
Dans cette section, nous configurons le Webhook du gestionnaire SD-WAN pour envoyer les alarmes vers l'API ServiceNow : https://dev271953.service-now.com/api/x_1831932_ud_vma_0/ud_vm_snow
Conseil : Pour un gestionnaire SD-WAN multilocataire, appliquez la configuration correspondante dans la vue du locataire pour envoyer des événements Webhook pour ce locataire. Vous pouvez également appliquer cette configuration en mode Fournisseur pour recevoir des alarmes des périphériques du domaine Fournisseur.
Webhook SD-WAN
- Connectez-vous à SD-WAN Manager et accédez à Monitor > Logs > Alarm Notifications.
Figure-14
Notification d'alarme SD-WAN
2. Cliquez sur Ajouter des notifications d'alarme.
Figure-15
3. Renseignez les champs correspondants pour configurer la notification d'alarme.
- Nom de notification
- Type d'alarme
- Mode de livraison : WebHook
- Choisir un canal pour Webhook : Personnalisé
- URL WebHook (API créée à l'étape 24 de la configuration côté ServiceNow) : https://dev271953.service-now.com/api/x_1831932_ud_vma_0/ud_vm_snow
- Seuil WebHook : 100
- Laissez les champs Nom d'utilisateur et Mot de passe vides.
Mise en garde : Laisser les champs de nom d'utilisateur et de mot de passe vides en production présente un risque pour la sécurité. Déplacez-vous avec prudence.
4. Cliquez sur Ajouter une notification.
Figure-16
Vérifier
Page de tickets ServiceNow
- Naviguons jusqu'à la page de tickets ServiceNow.
- Pour cela, utilisez cette URL pour accéder à l'espace de travail principal de ServiceNow. C'est votre PDI.service-now.com/nav_to.do.
- Exemple : https://dev271953.service-now.com/nav_to.do
Espace de travail ServiceNow
2. Cliquez sur Tous et recherchez et cliquez sur Incidents.
Figure-17
3. La page Incident s'ouvre.
Page Incident
4. À partir de SD-WAN Manager CLI vshell, exécutez la commande CURL vers ServiceNow :
curl -X POST « <your_webhook_url_towards_servicenow>»
Message de réussite :
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. Notez un incident créé sur ServiceNow.
Figure-18
Si vous remarquez une erreur d'authentification dans CURL comme ci-dessous :
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"}
Étapes pour corriger l'erreur d'authentification
- Revenez à la page ServiceNow Studio, accédez à votre application (exemple : ud-vmanage) dans le volet de navigation gauche et sélectionnez votre API REST scriptée (exemple : ud-vm-snow).
Figure-19
2. Faites défiler jusqu'à Ressources et cliquez sur la ressource (exemple : alarmes).
Figure 20 :
3. Faites défiler jusqu’à Security et décochez authentication and ACL authorization comme indiqué ci-dessous.
a. Nécessite une authentification
b. Autorisation ACL requise
c. Cliquez sur Update
Figure-21
4. Exécutez de nouveau la commande CURL à partir de SD-WAN Manager vshell, ce qui est réussi cette fois.
Génération d'alarmes
5. Générez maintenant une alarme dans le gestionnaire SD-WAN, par exemple :
a. Arrêt d'une interface d'un routeur de périphérie WAN dans votre superposition SD-WAN.
b. Suppression des connexions de contrôle à partir de tout gestionnaire SD-WAN ou de tout routeur de périphérie WAN.
c. Exécution d'un saut de port.
Vérifiez le site prévu pour générer des alarmes lors de la configuration Webhook.
6. Notez les incidents créés sur la page ServiceNow.
Figure-22
Figure-23
Figure-24
Dépannage
1. Du côté du gestionnaire SD-WAN, vérifiez le contenu de /var/log/nms/vmanage-server.log pour toute erreur liée aux messages HTTP POST.
Exemple de webhook réussi :
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
Exemple de requête Webhook infructueuse :
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. Nous pouvons également effectuer une capture de paquets pour confirmer la bonne session entre SD-WAN Manager et ServiceNow.
Capture de paquets avec IP publique masquée
Informations connexes