Skicka Hälsoaviseringar för Azure-tjänsten med ServiceNow med hjälp av webhooks
Den här artikeln visar hur du integrerar Azure-tjänstens hälsoaviseringar med ServiceNow med hjälp av en webhook. När du har konfigurerat webhook-integrering med din ServiceNow-instans får du aviseringar via din befintliga meddelandeinfrastruktur när Problem med Azure-tjänsten påverkar dig. Varje gång en Azure Service Health-avisering utlöses anropas en webhook via SERVICENow Scripted REST API.
Skapa ett skriptat REST-API i ServiceNow
Kontrollera att du har registrerat dig för och är inloggad på ditt ServiceNow-konto .
Gå till avsnittet System Web Services i ServiceNow och välj Skriptade REST-API:er.
Välj Ny för att skapa en ny skriptad REST-tjänst.
Lägg till ett namn i rest-API:et och ange API-ID:t till
azureservicehealth
.Välj Skicka.
Välj rest-API:et som du skapade och välj Nytt under fliken Resurser.
Namnge den nya resursen
event
och ändra HTTP-metoden tillPOST
.I avsnittet Skript lägger du till följande JavaScript-kod:
Kommentar
Du måste uppdatera
<secret>
värdet ,<group>
och<email>
i skriptet nedan.<secret>
bör vara en slumpmässig sträng, som ett GUID<group>
ska vara den ServiceNow-grupp som du vill tilldela incidenten till<email>
bör vara den specifika person som du vill tilldela incidenten till (valfritt)
(function process( /*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) { var apiKey = request.queryParams['apiKey']; var secret = '<secret>'; if (apiKey == secret) { var event = request.body.data; var responseBody = {}; if (event.data.context.activityLog.operationName == 'Microsoft.ServiceHealth/incident/action') { var inc = new GlideRecord('incident'); var incidentExists = false; inc.addQuery('number', event.data.context.activityLog.properties.trackingId); inc.query(); if (inc.hasNext()) { incidentExists = true; inc.next(); } else { inc.initialize(); } var short_description = "Azure Service Health"; if (event.data.context.activityLog.properties.incidentType == "Incident") { short_description += " - Service Issue - "; } else if (event.data.context.activityLog.properties.incidentType == "Maintenance") { short_description += " - Planned Maintenance - "; } else if (event.data.context.activityLog.properties.incidentType == "Informational" || event.data.context.activityLog.properties.incidentType == "ActionRequired") { short_description += " - Health Advisory - "; } short_description += event.data.context.activityLog.properties.title; inc.short_description = short_description; inc.description = event.data.context.activityLog.properties.communication; inc.work_notes = "Impacted subscription: " + event.data.context.activityLog.subscriptionId; if (incidentExists) { if (event.data.context.activityLog.properties.stage == 'Active') { inc.state = 2; } else if (event.data.context.activityLog.properties.stage == 'Resolved') { inc.state = 6; } else if (event.data.context.activityLog.properties.stage == 'Closed') { inc.state = 7; } inc.update(); responseBody.message = "Incident updated."; } else { inc.number = event.data.context.activityLog.properties.trackingId; inc.state = 1; inc.impact = 2; inc.urgency = 2; inc.priority = 2; inc.assigned_to = '<email>'; inc.assignment_group.setDisplayValue('<group>'); var subscriptionId = event.data.context.activityLog.subscriptionId; var comments = "Azure portal Link: https://app.azure.com/h"; comments += "/" + event.data.context.activityLog.properties.trackingId; comments += "/" + subscriptionId.substring(0, 3) + subscriptionId.slice(-3); var impactedServices = JSON.parse(event.data.context.activityLog.properties.impactedServices); var impactedServicesFormatted = ""; for (var i = 0; i < impactedServices.length; i++) { impactedServicesFormatted += impactedServices[i].ServiceName + ": "; for (var j = 0; j < impactedServices[i].ImpactedRegions.length; j++) { if (j != 0) { impactedServicesFormatted += ", "; } impactedServicesFormatted += impactedServices[i].ImpactedRegions[j].RegionName; } impactedServicesFormatted += "\n"; } comments += "\n\nImpacted Services:\n" + impactedServicesFormatted; inc.comments = comments; inc.insert(); responseBody.message = "Incident created."; } } else { responseBody.message = "Hello from the other side!"; } response.setBody(responseBody); } else { var unauthorized = new sn_ws_err.ServiceError(); unauthorized.setStatus(401); unauthorized.setMessage('Invalid apiKey'); response.setError(unauthorized); } })(request, response);
På fliken Säkerhet avmarkerar du Kräver autentisering och väljer Skicka. Du
<secret>
anger skyddar det här API:et i stället.I avsnittet Skriptade REST-API:er hittar du den grundläggande API-sökvägen för ditt nya REST API:
Din fullständiga integrations-URL ser ut så här:
https://<yourInstanceName>.service-now.com/<baseApiPath>?apiKey=<secret>
Skapa en avisering med Hjälp av ServiceNow i Azure Portal
För en ny åtgärdsgrupp:
Följ steg 1 till och med 8 i den här artikeln för att skapa en avisering med en ny åtgärdsgrupp.
Definiera i listan över åtgärder:
a. Åtgärdstyp: Webhook
b. Information: Url:en för ServiceNow-integrering som du sparade tidigare.
c. Namn: Webhooks namn, alias eller identifierare.
Välj Spara när du är klar för att skapa aviseringen.
För en befintlig åtgärdsgrupp:
I avsnittet Inställningar väljer du Åtgärdsgrupper.
Leta upp och välj den åtgärdsgrupp som du vill redigera.
Lägg till i listan över åtgärder:
a. Åtgärdstyp: Webhook
b. Information: Url:en för ServiceNow-integrering som du sparade tidigare.
c. Namn: Webhooks namn, alias eller identifierare.
Välj Spara när du är klar för att uppdatera åtgärdsgruppen.
Testa webhook-integreringen via en HTTP POST-begäran
Skapa nyttolasten för tjänstens hälsotillstånd som du vill skicka. Du hittar ett exempel på en webhook-nyttolast för tjänsthälsa på Webhooks för Azure-aktivitetsloggaviseringar.
Skapa en HTTP POST-begäran enligt följande:
POST https://<yourInstanceName>.service-now.com/<baseApiPath>?apiKey=<secret> HEADERS Content-Type: application/json BODY <service health payload>
Du bör få ett
200 OK
svar med meddelandet "Incident skapad".Gå till ServiceNow för att bekräfta att integreringen har konfigurerats.
Nästa steg
- Lär dig hur du konfigurerar webhook-meddelanden för befintliga problemhanteringssystem.
- Granska webhook-schemat för aktivitetsloggavisering.
- Läs mer om meddelanden om tjänstens hälsotillstånd.
- Läs mer om åtgärdsgrupper.