Azure Service Health-waarschuwingen verzenden met ServiceNow met behulp van webhooks
In dit artikel leest u hoe u Azure Service Health-waarschuwingen integreert met ServiceNow met behulp van een webhook. Nadat u webhookintegratie met uw ServiceNow-exemplaar hebt ingesteld, ontvangt u waarschuwingen via uw bestaande meldingsinfrastructuur wanneer problemen met de Azure-service van invloed zijn op u. Telkens wanneer een Azure Service Health-waarschuwing wordt geactiveerd, wordt er een webhook aangeroepen via de ServiceNow Scripted REST API.
Een script-REST API maken in ServiceNow
Zorg ervoor dat u zich hebt geregistreerd en bent aangemeld bij uw ServiceNow-account .
Navigeer naar de sectie Systeemwebservices in ServiceNow en selecteer Scripted REST API's.
Selecteer Nieuw om een nieuwe scripted REST-service te maken.
Voeg een naam toe aan uw REST API en stel de API-id in op
azureservicehealth
.Selecteer Indienen.
Selecteer de REST API die u hebt gemaakt en selecteer onder het tabblad Resources de optie Nieuw.
Geef uw nieuwe resource
event
een naam en wijzig de HTTP-methode inPOST
.Voeg in de sectie Script de volgende JavaScript-code toe:
Notitie
U moet het en
<group>
<email>
de<secret>
waarde in het onderstaande script bijwerken.<secret>
moet een willekeurige tekenreeks zijn, zoals een GUID<group>
moet de ServiceNow-groep zijn waaraan u het incident wilt toewijzen<email>
moet de specifieke persoon zijn aan wie u het incident wilt toewijzen (optioneel)
(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);
Schakel op het tabblad Beveiliging de optie Verificatie vereist uit en selecteer Verzenden. De
<secret>
door u ingestelde api beveiligt in plaats daarvan.Terug in de sectie Scripted REST API's vindt u het basis-API-pad voor uw nieuwe REST API:
Uw volledige integratie-URL ziet er als volgt uit:
https://<yourInstanceName>.service-now.com/<baseApiPath>?apiKey=<secret>
Een waarschuwing maken met Behulp van ServiceNow in Azure Portal
Voor een nieuwe actiegroep:
Volg stap 1 tot en met 8 in dit artikel om een waarschuwing te maken met een nieuwe actiegroep.
Definiƫren in de lijst met acties:
a. Actietype: Webhook
b. Details: de ServiceNow-integratie-URL die u eerder hebt opgeslagen.
c. Naam: de naam, alias of id van de webhook.
Selecteer Opslaan wanneer u klaar bent om de waarschuwing te maken.
Voor een bestaande actiegroep:
Selecteer Monitor in Azure Portal.
Selecteer actiegroepen in de sectie Instellingen.
Zoek en selecteer de actiegroep die u wilt bewerken.
Toevoegen aan de lijst met acties:
a. Actietype: Webhook
b. Details: de ServiceNow-integratie-URL die u eerder hebt opgeslagen.
c. Naam: de naam, alias of id van de webhook.
Selecteer Opslaan wanneer u klaar bent om de actiegroep bij te werken.
Uw webhookintegratie testen via een HTTP POST-aanvraag
Maak de nettolading van de servicestatus die u wilt verzenden. U vindt een voorbeeld van een webhooklading voor servicestatus in Webhooks voor waarschuwingen voor azure-activiteitenlogboeken.
Maak als volgt een HTTP POST-aanvraag:
POST https://<yourInstanceName>.service-now.com/<baseApiPath>?apiKey=<secret> HEADERS Content-Type: application/json BODY <service health payload>
U ontvangt een
200 OK
reactie met het bericht 'Incident gemaakt'.Ga naar ServiceNow om te bevestigen dat uw integratie is ingesteld.
Volgende stappen
- Meer informatie over het configureren van webhookmeldingen voor bestaande problematische beheersystemen.
- Bekijk het webhookschema voor waarschuwingen voor het activiteitenlogboek.
- Meer informatie over servicestatusmeldingen.
- Meer informatie over actiegroepen.