إرسال تنبيهات صحة خدمة Azure باستخدام ServiceNow باستخدام خطافات الويب
توضح هذه المقالة كيفية دمج تنبيهات صحة خدمة Azure مع ServiceNow باستخدام إخطار على الويب. بعد إعداد تكامل webhook مع مثيل ServiceNow الخاص بك، تحصل على تنبيهات من خلال البنية الأساسية الحالية للإعلام عندما تؤثر مشكلات خدمة Azure عليك. في كل مرة يتم فيها تشغيل تنبيه Azure Service Health، فإنه يستدعي إخطار على الويب من خلال واجهة برمجة تطبيقات Rest النصية ServiceNow.
إنشاء واجهة برمجة تطبيقات REST مبرمجة في ServiceNow
تأكد من تسجيل الدخول وتسجيل الدخول إلى حساب ServiceNow الخاص بك.
انتقل إلى قسم System Web Services في ServiceNow وحدد Scripted REST APIs.
حدد جديد لإنشاء خدمة REST مبرمجة برمجيا جديدة.
أضف اسما إلى واجهة برمجة تطبيقات REST وضبط معرف واجهة برمجة التطبيقات على
azureservicehealth
.حدد إرسال.
حدد واجهة برمجة تطبيقات REST التي أنشأتها، وضمن علامة التبويب الموارد حدد جديد.
قم بتسمية المورد
event
الجديد وتغيير أسلوب HTTP إلىPOST
.في قسم البرنامج النصي ، أضف التعليمات البرمجية JavaScript التالية:
إشعار
تحتاج إلى تحديث ، والقيمة
<secret>
<group>
<email>
في البرنامج النصي أدناه.<secret>
يجب أن تكون سلسلة عشوائية، مثل GUID<group>
يجب أن تكون مجموعة ServiceNow التي تريد تعيين الحدث إليها<email>
يجب أن يكون الشخص المحدد الذي تريد تعيين الحدث له (اختياري)
(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);
في علامة تبويب الأمان، قم بإلغاء تحديد يتطلب المصادقة وحدد إرسال.
<secret>
يحمي الإعداد الذي قمت بتعيينه واجهة برمجة التطبيقات هذه بدلا من ذلك.مرة أخرى في قسم Scripted REST APIs، يجب أن تجد مسار واجهة برمجة التطبيقات الأساسية لواجهة برمجة تطبيقات REST الجديدة:
يبدو عنوان URL الكامل للتكامل الخاص بك كما يلي:
https://<yourInstanceName>.service-now.com/<baseApiPath>?apiKey=<secret>
إنشاء تنبيه باستخدام ServiceNow في مدخل Microsoft Azure
لمجموعة إجراءات جديدة:
اتبع الخطوات من 1 إلى 8 في هذه المقالة لإنشاء تنبيه باستخدام مجموعة إجراءات جديدة.
حدد في قائمة الإجراءات:
أ. نوع الإجراء: إخطار على الويب
ب. التفاصيل: عنوان URL للتكامل ServiceNow الذي قمت بحفظه مسبقا.
جـ. الاسم: اسم Webhook أو الاسم المستعار أو المعرف.
حدد حفظ عند الانتهاء لإنشاء التنبيه.
بالنسبة لمجموعة إجراءات موجودة:
في مدخل Azure، حدد مراقبة.
في قسم الإعدادات ، حدد مجموعات الإجراءات.
ابحث عن مجموعة الإجراءات التي تريد تحريرها وحددها.
أضف إلى قائمة الإجراءات:
أ. نوع الإجراء: إخطار على الويب
ب. التفاصيل: عنوان URL للتكامل ServiceNow الذي قمت بحفظه مسبقا.
جـ. الاسم: اسم Webhook أو الاسم المستعار أو المعرف.
حدد حفظ عند الانتهاء لتحديث مجموعة الإجراءات.
اختبار تكامل خطاف الويب الخاص بك عبر طلب HTTP POST
إنشاء البيانات الأساسية لصحة الخدمة التي تريد إرسالها. يمكنك العثور على مثال على حمولة إخطار على الويب لصحة الخدمة في Webhooks لتنبيهات سجل نشاط Azure.
إنشاء طلب HTTP POST كما يلي:
POST https://<yourInstanceName>.service-now.com/<baseApiPath>?apiKey=<secret> HEADERS Content-Type: application/json BODY <service health payload>
يجب أن تتلقى استجابة
200 OK
مع الرسالة "تم إنشاء الحدث".انتقل إلى ServiceNow للتأكد من إعداد التكامل بنجاح.
الخطوات التالية
- تعرف على كيفية تكوين إشعارات webhook لأنظمة إدارة المشاكل الموجودة.
- راجع مخطط webhook لتنبيه سجل النشاط.
- تعرف على إشعارات حالة الخدمة.
- تعرف على المزيد حول مجموعات العمل.
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ