مراقبة أداء شبكة Meraki والتنبيهات

Meraki Network Monitor

يراقب تلقائيًا زمن التأخير (الليتنتسي) ونسبة فقد الحزم في شبكة Cisco Meraki، ويرسل تنبيهات عبر Teams عندما يتجاوز الأداء العتبات المحددة، ويستخدم Redis لمنع إرسال إشعارات مكررة.

23 NodesIndustry Verticalمراقبة الشبكة تنبيهات الأداء Meraki

نظرة عامة على سير العمل

يُعدّ سير عمل n8n هذا نظام مراقبة وتنبيه لشبكات Cisco Meraki، ويهدف إلى مراقبة مؤشرات أداء الشبكة (التأخير ومعدل فقدان الحزم) تلقائيًا، وإرسال إشعارات تنبيه عند اكتشاف مشكلات. يحصل سير العمل هذا على إحصائيات المنظمات والشبكات وروابط الاتصال الصاعدة (Uplinks) عبر واجهة برمجة تطبيقات Meraki (Meraki API)، ويحسب متوسط مؤشرات الأداء، ويُرشّح المواقع التي تعاني من مشكلات، ثم يرسل تنبيهات عبر Microsoft Teams، مع استخدام قاعدة بيانات Redis لمنع إرسال تنبيهات متكررة.


هيكل سير العمل

1. عقدة المشغّل (المُحفّز)

أسماء العقد:

  • When clicking "Execute Workflow" (محفّز يدوي)
  • Schedule Trigger (محفّز مجدول)

شرح الوظيفة: يدعم سير العمل طريقتين للتشغيل:

  • التشغيل اليدوي: بالضغط على زر "تنفيذ سير العمل"
  • التشغيل التلقائي: وفق جدول زمني مُعد مسبقًا (لمراقبة مستمرة)

2. مرحلة جمع البيانات

2.1 الحصول على معلومات منظمات Meraki

اسم العقدة: Get Meraki Organizations

شرح الوظيفة:

  • إرسال طلب HTTP إلى واجهة برمجة تطبيقات Meraki (https://api.meraki.com/api/v1/organizations)
  • استخدام مصادقة عبر رأس الطلب (Header)، مع ضرورة تهيئة مفتاح واجهة برمجة تطبيقات Meraki
  • استرجاع قائمة جميع المنظمات التي يمتلك الحساب صلاحية الوصول إليها

التفاصيل التقنية:

  • نوع الطلب: GET
  • طريقة المصادقة: مصادقة عبر رأس HTTP (HTTP Header Auth)
  • الرؤوس المطلوبة:
    • Authorization: للمصادقة
    • Accept: application/json: لتحديد أن البيانات المرتدة بصيغة JSON

2.2 تنسيق بيانات المنظمة

اسم العقدة: Get Org Name & ID

شرح الوظيفة:

  • استخدام عقدة Set لاستخراج وإعادة تسمية الحقول الأساسية
  • استخراج من البيانات الأصلية:
    • CompanyName: اسم المنظمة
    • OrgID: معرّف المنظمة

2.3 الحصول على معرّفات الشبكات

اسم العقدة: Get Network IDs

شرح الوظيفة:

  • لكل معرّف منظمة، يتم استدعاء واجهة برمجة التطبيقات للحصول على جميع الشبكات التابعة لها
  • استخدام عنوان URL ديناميكي: https://api.meraki.com/api/v1/organizations/{{ $json.OrgID }}/networks
  • توفير قائمة الشبكات لمراقبتها لاحقًا

2.4 تنسيق متغيرات الشبكة

اسم العقدة: Sets Network Variables

شرح الوظيفة:

  • استخراج وتنسيق معلومات الشبكة
  • يشمل الحقول الأساسية مثل: اسم الشبكة، معرّف الشبكة، وعنوان URL الخاص بها

2.5 الحصول على إحصائيات روابط الاتصال الصاعدة (Uplink)

اسم العقدة: Get Uplink Loss and Latency

شرح الوظيفة:

  • الحصول على إحصائيات أداء روابط الاتصال الصاعدة لأجهزة الشبكة
  • تتضمن:
    • نسبة فقدان الحزم (Loss Percent)
    • زمن التأخير بالمللي ثانية (Latency Ms)
    • بيانات سلسلة زمنية (آخر 5 نقاط زمنية)

3. مرحلة معالجة وتحليل البيانات

3.1 دمج البيانات

اسم العقدة: Combine latency to its respective Network

شرح الوظيفة:

  • استخدام عقدة Merge لدمج معلومات الشبكة مع إحصائيات الأداء
  • حقل المطابقة: NetworkID مع networkId
  • وضع الدمج: enrichInput1 (إثراء بيانات الإدخال الأول)

3.2 إعادة هيكلة البيانات

اسم العقدة: Makes Latency and Loss Filterable

شرح الوظيفة:

  • إعادة تنظيم هيكل البيانات لتسهيل تصفية وتحليل بيانات التأخير والفقدان
  • استخراج 5 نقاط بيانات زمنية:
    • TS0-Loss إلى TS4-Loss: معدلات فقدان الحزم في 5 نقاط زمنية
    • TS0-Latency إلى TS4-Latency: أزمنة التأخير في 5 نقاط زمنية
  • الاحتفاظ ببيانات التعريف مثل: اسم الشبكة، الرقم التسلسلي، وعنوان URL

3.3 حساب المتوسطات

اسم العقدة: Average Latency & Loss over 5m

شرح الوظيفة:

  • استخدام كود JavaScript لحساب المتوسط خلال آخر 5 نقاط زمنية
  • حساب مؤشرين رئيسيين:
    • AverageLoss: متوسط نسبة فقدان الحزم
    • AverageLatency: متوسط زمن التأخير (بالمللي ثانية)
  • تُستخدم هذه المتوسطات لتحديد المشكلات بدقة أكبر

منطق الكود:

// حساب مجموع نسب الفقدان وأزمنة التأخير خلال 5 نقاط زمنية
// القسمة على 5 للحصول على المتوسط
// إضافة النتائج إلى عنصر البيانات

3.4 تصفية المواقع ذات المشكلات

اسم العقدة: Filters Problematic sites

شرح الوظيفة:

  • استخدام كود JavaScript لتصفية المواقع التي تتجاوز العتبات المحددة
  • معايير العتبة:
    • متوسط زمن التأخير > 300 مللي ثانية
    • أو متوسط نسبة فقدان الحزم > 2%
  • فقط المواقع التي تستوفي أحد الشرطين تمرّر إلى الخطوة التالية

منطق التصفية:

// إذا كان AverageLatency > 300 أو AverageLoss > 2
// يُصنّف الموقع على أنه يعاني من مشكلة

4. مرحلة إزالة التنبيهات المتكررة والإشعارات

4.1 التحقق من وجود التنبيه مسبقًا

اسم العقدة: Check if Alert Exists

شرح الوظيفة:

  • الاستعلام من قاعدة بيانات Redis للتحقق مما إذا تم إرسال تنبيه سابق لهذا الشبكة
  • استخدام اسم الشبكة كمفتاح
  • إذا وُجد المفتاح، فهذا يعني أن التنبيه قد أُرسل مسبقًا (ضمن فترة TTL)

4.2 إنشاء بيانات الاستجابة

اسم العقدة: Create Response

شرح الوظيفة:

  • معالجة نتيجة استعلام Redis باستخدام JavaScript
  • تحويل النتيجة إلى قيمة منطقية (Boolean) قابلة للاستخدام
  • تحديد ما إذا كان يجب إرسال تنبيه جديد

4.3 دمج البيانات لإزالة التكرار

اسم العقدة: Merge

شرح الوظيفة:

  • دمج بيانات المواقع ذات المشكلات مع بيانات التنبيهات الموجودة مسبقًا
  • حقل المطابقة: NetworkName
  • وضع الدمج: الاحتفاظ بجميع العناصر غير المتطابقة
  • المنطق الأساسي: إذا تطابق اسم الشبكة، فهذا يعني أن التنبيه موجود مسبقًا ولن يُرسل مرة أخرى؛ فقط المواقع الجديدة (غير المتطابقة) ستتابع إلى الخطوة التالية

4.4 إرسال رسالة عبر Teams

اسم العقدة: Message Techs

شرح الوظيفة:

  • إرسال رسالة تنبيه عبر Webhook الخاص بـ Microsoft Teams
  • يحتوي محتوى الرسالة على:
    • اسم الشبكة
    • متوسط زمن التأخير ونسبة فقدان الحزم
    • عنوان URL الخاص بالشبكة (كرابط مباشر للانتقال الفوري إلى موقع المشكلة)
  • إشعار الفريق الفني بأن هناك موقعًا تجاوز عتبات الأداء

4.5 تسجيل سجل التنبيه

اسم العقدة: Log the Alert

شرح الوظيفة:

  • تسجيل التنبيه في قاعدة بيانات Redis
  • تعيين TTL (وقت البقاء) إلى 3 ساعات
  • آلية منع التكرار: إذا لم تُحل مشكلة نفس الموقع خلال 3 ساعات، سيتم إرسال التنبيه مجددًا بعد انتهاء فترة الـ TTL

5. عقد ملاحظات توضيحية

يحتوي سير العمل على عدة عقد من نوع Sticky Note (ملاحظات لاصقة) توفر شروحات تفصيلية:

  • Sticky Note3: يشرح كيفية تهيئة مصادقة واجهة برمجة تطبيقات Meraki
  • Sticky Note4: يوضح منطق دمج البيانات وحساب الإحصائيات
  • Sticky Note5: يشرح بشكل مفصل آلية منع التنبيهات المتكررة وسير عملية الإشعارات
  • Sticky Note6: يقترح سيناريوهات استخدام إضافية (مثل دمج أدوات PSA لإنشاء تذاكر دعم فني)

مخطط سير العمل

[المشغّل] → [الحصول على المنظمات] → [تنسيق بيانات المنظمة] → [الحصول على معرّفات الشبكات] → [تنسيق بيانات الشبكة]
                ↓                                                                                 ↓
          [الحصول على بيانات الروابط الصاعدة] ----------------------------------------------→ [دمج البيانات]
                                                                                                  ↓
                                                                                  [إعادة هيكلة بيانات التأخير والفقدان]
                                                                                                  ↓
                                                                                     [حساب المتوسط خلال 5 دقائق]
                                                                                                  ↓
                                                                                    [تصفية المواقع ذات المشكلات]
                                                                                                  ↓
                                                  [التحقق من وجود التنبيه] ← → [دمج لإزالة التكرار]
                                                          ↓                            ↓
                                                  [إنشاء الاستجابة] ----------------→ [إرسال رسالة عبر Teams]
                                                                                                  ↓
                                                                                           [تسجيل سجل التنبيه]

النقاط التقنية الأساسية

1. مصادقة واجهة برمجة التطبيقات

2. عتبات الأداء

  • عتبة زمن التأخير: 300 مللي ثانية
  • عتبة فقدان الحزم: 2%
  • يمكن تعديل هذه العتبات وفقًا للاحتياجات الفعلية

3. آلية منع التنبيهات المتكررة

  • استخدام Redis لتخزين التنبيهات المرسلة
  • تعيين TTL إلى 3 ساعات
  • لن يتم إرسال تنبيه لنفس الموقع مجددًا خلال فترة الـ TTL

4. طريقة معالجة البيانات

  • جمع بيانات آخر 5 نقاط زمنية
  • حساب المتوسط لتقليل تأثير التقلبات اللحظية
  • استخدام عقد كود JavaScript لمعالجة البيانات المعقدة والتصفية

حالات الاستخدام

  1. مراقبة أداء الشبكة: مراقبة مستمرة لتأخير الشبكة ونسبة فقدان الحزم في شبكات Meraki
  2. تنبيهات استباقية: إشعار الفريق الفني تلقائيًا عند انخفاض الأداء
  3. استكشاف الأخطاء: توفير رابط مباشر إلى صفحة الشبكة لتحديد المشكلة بسرعة
  4. إدارة التنبيهات: منع إغراق الفريق بالتنبيهات، حيث يُرسل تنبيه واحد فقط لكل موقع خلال 3 ساعات

اقتراحات للتوسيع

وفقًا لما ورد في Sticky Note6، يمكن تنفيذ التوسعات التالية:

  1. التكامل مع أنظمة PSA: استبدال عقدة رسالة Teams بعقدة أداة PSA (مثل ConnectWise Manage) لإنشاء تذاكر دعم فني تلقائيًا بدلًا من إرسال رسائل فقط
  2. إشعارات متعددة القنوات: بالإضافة إلى Teams، يمكن إضافة قنوات إشعارات أخرى مثل البريد الإلكتروني أو Slack
  3. عتبات مخصصة: تعيين عتبات أداء مختلفة لأنواع أو مواقع شبكات متنوعة
  4. تخزين البيانات التاريخية: حفظ بيانات المراقبة في قاعدة بيانات لتحليلها على المدى الطويل والتنبؤ بالاتجاهات

الخلاصة

هذا سير عمل متكامل لأتمتة مراقبة الشبكة، ويستفيد بشكل كامل من القدرات التالية في n8n:

  • تكامل طلبات HTTP مع واجهات برمجة التطبيقات الخارجية
  • تحويل ومعالجة البيانات (عقد Set و Code)
  • دمج البيانات (عقد Merge)
  • التصفية الشرطية والحكم المنطقي
  • الإشعارات الخارجية (Webhook لـ Teams)
  • التخزين المستمر للبيانات (Redis)

من خلال المراقبة الآلية والتنبيه الذكي، يُحسّن هذا السير بشكل كبير من كفاءة عمليات إدارة الشبكة، ويقلل العبء الناتج عن الفحص اليدوي.