مراقبة الأجهزة الظاهرية باستخدام Azure Monitor: التنبيهات

تعد هذه المقالة جزءا من الدليل مراقبة الأجهزة الظاهرية وأحمال العمل الخاصة بها في Azure Monitor. تقوم التنبيهات في Azure Monitor بإعلامك بشكل استباقي عن البيانات والأنماط المثيرة للاهتمام في بيانات المراقبة الخاصة بك. لا توجد قواعد تنبيه تم تكوينها مسبقا للأجهزة الظاهرية، ولكن يمكنك إنشاء قواعد خاصة بك استنادا إلى البيانات التي تجمعها من Azure Monitor Agent. تقدم هذه المقالة مفاهيم التنبيه الخاصة بالأجهزة الظاهرية وقواعد التنبيه الشائعة المستخدمة من قبل عملاء Azure Monitor الآخرين.

يصف هذا السيناريو كيفية تنفيذ المراقبة الكاملة لبيئة Azure والجهاز الظاهري المختلط:

هام

تعتمد تكلفة معظم قواعد التنبيه على نوع القاعدة وعدد الأبعاد التي تتضمنها وعدد مرات تشغيلها. قبل إنشاء أي قواعد تنبيه، راجع قسم قواعد التنبيه في تسعير Azure Monitor.

تجميع البيانات

تقوم قواعد التنبيه بفحص البيانات التي تم جمعها بالفعل في Azure Monitor. تحتاج إلى التأكد من تجميع البيانات لسيناريو معين قبل أن تتمكن من إنشاء قاعدة تنبيه. راجع مراقبة الأجهزة الظاهرية باستخدام Azure Monitor: جمع البيانات للحصول على إرشادات حول تكوين جمع البيانات لسيناريوهات مختلفة، بما في ذلك جميع قواعد التنبيه في هذه المقالة.

يوفر Azure Monitor مجموعة من قواعد التنبيه الموصى بها التي يمكنك تمكينها بسرعة لأي جهاز ظاهري Azure. هذه القواعد هي نقطة انطلاق رائعة للمراقبة الأساسية. ولكن وحدها، لن توفر تنبيها كافيا لمعظم تطبيقات المؤسسة للأسباب التالية:

  • تنطبق التنبيهات الموصى بها فقط على أجهزة Azure الظاهرية وليس الأجهزة المختلطة.
  • تتضمن التنبيهات الموصى بها فقط مقاييس المضيف وليس مقاييس أو سجلات الضيف. هذه المقاييس مفيدة لمراقبة صحة الجهاز نفسه. ولكنها تمنحك الحد الأدنى من الرؤية في أحمال العمل والتطبيقات التي تعمل على الجهاز.
  • ترتبط التنبيهات الموصى بها بالأجهزة الفردية التي تنشئ عددا زائدا من قواعد التنبيه. بدلا من الاعتماد على هذا الأسلوب لكل جهاز، راجع تغيير حجم قواعد التنبيه للاستراتيجيات المتعلقة باستخدام الحد الأدنى من قواعد التنبيه لأجهزة متعددة.

أنواع التنبيهات

الأنواع الأكثر شيوعا من قواعد التنبيه في Azure Monitor هي التنبيهات القياسية وتنبيهات بحث السجل. يعتمد نوع قاعدة التنبيه التي تقوم بإنشائها لسيناريو معين على مكان وجود البيانات التي تقوم بالتنبيه عليها.

قد تكون لديك حالات تتوفر فيها بيانات لسيناريو تنبيه معين في كل من المقاييس والسجلات. إذا كان الأمر كذلك، فستحتاج إلى تحديد نوع القاعدة الذي يجب استخدامه. قد تتمتع أيضًا بالمرونة في كيفية جمع بيانات معينة والسماح لقرارك الخاص بنوع قاعدة التنبيه بقيادة قرارك لطريقة جمع البيانات.

التنبيهات القياسية

الاستخدامات الشائعة للتنبيهات القياسية:

  • تنبيه عندما يتجاوز مقياس معين الحد. مثال على ذلك هو عندما يتصاعد معالج جهاز.

مصادر البيانات للتنبيهات القياسية:

  • مقاييس المضيف لأجهزة Azure الظاهرية، والتي يتم جمعها تلقائيا
  • المقاييس التي جمعها عامل Azure Monitor من نظام التشغيل الضيف

تسجيل تنبيهات البحث

الاستخدامات الشائعة لتنبيهات بحث السجل:

  • تنبيه عند العثور على حدث أو نمط أحداث معين من سجل أحداث Windows أو Syslog. تقيس قواعد التنبيه هذه عادة صفوف الجدول التي تم إرجاعها من الاستعلام.
  • تنبيه يستند إلى حساب البيانات الرقمية عبر أجهزة متعددة. تقيس قواعد التنبيه هذه عادة حساب عمود رقمي في نتائج الاستعلام.

مصادر البيانات لتنبيهات بحث السجل:

  • جميع البيانات التي تم جمعها في مساحة عمل Log Analytics

تغيير حجم قواعد التنبيه

نظرا لأنه قد يكون لديك العديد من الأجهزة الظاهرية التي تتطلب نفس المراقبة، لا تريد أن تضطر إلى إنشاء قواعد تنبيه فردية لكل منها. كما تريد التأكد من وجود استراتيجيات مختلفة للحد من عدد قواعد التنبيه التي تحتاج إلى إدارتها، اعتمادا على نوع القاعدة. تعتمد كل من هذه الاستراتيجيات على فهم المورد الهدف لقاعدة التنبيه.

قواعد التنبيه القياسي

تدعم الأجهزة الظاهرية قواعد تنبيه قياس الموارد المتعددة كما هو موضح في مراقبة موارد متعددة. تسمح لك هذه الإمكانية بإنشاء قاعدة تنبيه قياسية واحدة تنطبق على جميع الأجهزة الظاهرية في مجموعة موارد أو اشتراك داخل نفس المنطقة.

ابدأ بالتنبيهات الموصى بها وأنشئ قاعدة مقابلة لكل منها باستخدام اشتراكك أو مجموعة موارد كمورد مستهدف. تحتاج إلى إنشاء قواعد مكررة لكل منطقة إذا كان لديك أجهزة في مناطق متعددة.

أثناء تحديد متطلبات المزيد من قواعد التنبيه القياسي، اتبع هذه الاستراتيجية نفسها باستخدام اشتراك أو مجموعة موارد كمورد مستهدف من أجل:

  • تقليل عدد قواعد التنبيه التي تحتاج إلى إدارتها.
  • تأكد من تطبيقها تلقائيا على أي أجهزة جديدة.

تسجيل قواعد تنبيه البحث

إذا قمت بتعيين المورد الهدف لقاعدة تنبيه بحث السجل إلى جهاز معين، تقتصر الاستعلامات على البيانات المقترنة بهذا الجهاز، ما يمنحك تنبيهات فردية له. يتطلب هذا الترتيب قاعدة تنبيه منفصلة لكل جهاز.

إذا قمت بتعيين المورد الهدف لقاعدة تنبيه بحث السجل إلى مساحة عمل Log Analytics، فلديك حق الوصول إلى جميع البيانات في مساحة العمل هذه. لهذا السبب، يمكنك التنبيه على البيانات من جميع الأجهزة في مجموعة العمل باستخدام قاعدة واحدة. يمنحك هذا الترتيب خيار إنشاء تنبيه واحد لجميع الأجهزة. يمكنك بعد ذلك استخدام الأبعاد لإنشاء تنبيه منفصل لكل جهاز.

على سبيل المثال، قد تحتاج إلى التنبيه عند إنشاء حدث خطأ في سجل أحداث Windows بواسطة أي جهاز. تحتاج أولا إلى إنشاء قاعدة تجميع بيانات كما هو موضح في تجميع البيانات باستخدام عامل Azure Monitor لإرسال هذه الأحداث إلى Event الجدول في مساحة عمل Log Analytics. ثم تقوم بإنشاء قاعدة تنبيه تقوم بالاستعلامات عن هذا الجدول باستخدام مساحة العمل كمورد الهدف والشرط الموضح في الصورة التالية.

يقوم الاستعلام بإرجاع سجل لأي رسائل خطأ على أي جهاز. استخدم الخيار تقسيم حسب الأبعاد وحدد _ResourceId لإرشاد القاعدة لإنشاء تنبيه لكل جهاز إذا تم إرجاع أجهزة متعددة في النتائج.

لقطة شاشة تعرض قاعدة تنبيه بحث سجل جديدة مع تقسيم حسب الأبعاد.

أبعاد

اعتمادا على المعلومات التي تريد تضمينها في التنبيه، قد تحتاج إلى التقسيم باستخدام أبعاد مختلفة. في هذه الحالة، تأكد من عرض الأبعاد الضرورية في الاستعلام باستخدام المشروع أو توسيع عامل التشغيل. قم بتعيين حقل عمود معرف المورد إلى عدم التقسيم وتضمين جميع الأبعاد ذات المعنى في القائمة. تأكد من تحديد تضمين كافة القيم المستقبلية بحيث يتم تضمين أي قيمة يتم إرجاعها من الاستعلام.

لقطة شاشة تعرض قاعدة تنبيه بحث سجل جديدة مع تقسيم حسب أبعاد متعددة.

الحدود الديناميكية

فائدة أخرى لاستخدام قواعد تنبيه بحث السجل هي القدرة على تضمين منطق معقد في الاستعلام لتحديد قيمة الحد. يمكنك ترميز الحد أو تطبيقه على جميع الموارد أو حسابه ديناميكيا استنادا إلى حقل ما أو قيمة محسوبة. يتم تطبيق الحد على الموارد فقط وفقا لشروط محددة. على سبيل المثال، يمكنك إنشاء تنبيه استنادا إلى الذاكرة المتوفرة ولكن فقط للأجهزة ذات كمية معينة من إجمالي الذاكرة.

قواعد التنبيه الشائعة

يسرد المقطع التالي قواعد التنبيه الشائعة للأجهزة الظاهرية في Azure Monitor. يتم توفير تفاصيل التنبيهات القياسية وتنبيهات بحث السجل لكل منها. للحصول على إرشادات حول نوع التنبيه الذي يجب استخدامه، راجع أنواع التنبيهات. إذا لم تكن معتادًا على عملية إنشاء قواعد التنبيه في Azure Monitor، فشاهِد الإرشادات لإنشاء قاعدة تنبيه جديدة.

إشعار

تستخدم تفاصيل تنبيهات البحث في السجل المتوفرة هنا البيانات التي تم جمعها باستخدام VM Insights، والتي توفر مجموعة من عدادات الأداء الشائعة لنظام تشغيل العميل. هذا الاسم مستقل عن نوع نظام التشغيل.

توفر الجهاز

أحد متطلبات المراقبة الأكثر شيوعا لجهاز ظاهري هو إنشاء تنبيه إذا توقف عن التشغيل. أفضل طريقة هي إنشاء قاعدة تنبيه قياسي في Azure Monitor باستخدام مقياس توفر الجهاز الظاهري، الموجود حاليا في المعاينة العامة. للحصول على إرشادات حول هذا المقياس، راجع إنشاء قاعدة تنبيه التوفر لجهاز Azure الظاهري.

تقتصر قاعدة التنبيه على إشارة سجل نشاط واحدة. لذلك لكل شرط، يجب إنشاء قاعدة تنبيه واحدة. على سبيل المثال، يتطلب "بدء تشغيل الجهاز الظاهري أو إيقافه" قاعدتي تنبيه. ومع ذلك، ليتم تنبيهك عند إعادة تشغيل الجهاز الظاهري، يلزم قاعدة تنبيه واحدة فقط.

كما هو موضح في قواعد تنبيه التحجيم، قم بإنشاء قاعدة تنبيه توفر باستخدام اشتراك أو مجموعة موارد كمورد مستهدف. تنطبق القاعدة على أجهزة ظاهرية متعددة، بما في ذلك الأجهزة الجديدة التي تقوم بإنشائها بعد قاعدة التنبيه.

رسالة كشف أخطاء اتصال العامل

رسالة كشف أخطاء اتصال العامل مختلفة قليلا عن التنبيه غير المتوفر للجهاز لأنه يعتمد على عامل Azure Monitor لإرسال رسالة كشف أخطاء الاتصال. يمكن لرسالة كشف أخطاء الاتصال للعامل تنبيهك إذا كان الجهاز قيد التشغيل ولكن العامل غير مستجيب.

قواعد التنبيه القياسي

يتم تضمين مقياس يُسمى Heartbeat في كل مساحة عمل Log Analytics. كل جهاز ظاهري متصل بمساحة العمل تلك يرسل قيمة قياس رسالة كشف أخطاء الاتصال كل دقيقة. نظرًا لأن الكمبيوتر يعد بعدًا على المقياس، يمكنك إطلاق تنبيه عند فشل أي كمبيوتر في إرسال رسالة كشف أخطاء الاتصال. تعيين Aggregation type على Count وقيمة Threshold لمطابقة Evaluation granularity.

تسجيل قواعد تنبيه البحث

تستخدم تنبيهات بحث السجل جدول Heartbeat، والذي يجب أن يحتوي على سجل رسالة كشف أخطاء الاتصال كل دقيقة من كل جهاز.

استخدم قاعدة مع الاستعلام التالي:

Heartbeat
| summarize TimeGenerated=max(TimeGenerated) by Computer, _ResourceId
| extend Duration = datetime_diff('minute',now(),TimeGenerated)
| summarize MinutesSinceLastHeartbeat = min(Duration) by Computer, bin(TimeGenerated,5m), _ResourceId

تنبيهات وحدة المعالجة المركزية

يصف هذا القسم تنبيهات وحدة المعالجة المركزية.

قواعد التنبيه القياسي

استهداف Metric
المضيف النسبة المئوية لوحدة المعالجة المركزية (المضمنة في التنبيهات الموصى بها)
ضيف يعمل بنظام Windows \Processor Information(_Total)% Processor Time
ضيف يعمل بنظام Linux cpu/usage_active

تسجيل قواعد تنبيه البحث

استخدام CPU

InsightsMetrics
| where Origin == "vm.azm.ms"
| where Namespace == "Processor" and Name == "UtilizationPercentage"
| summarize CPUPercentageAverage = avg(Val) by bin(TimeGenerated, 15m), Computer, _ResourceId

تنبيهات الذاكرة

يصف هذا القسم تنبيهات الذاكرة.

قواعد التنبيه القياسي

استهداف Metric
المضيف وحدات بايت الذاكرة المتوفرة (معاينة) (مضمنة في التنبيهات الموصى بها)
ضيف يعمل بنظام Windows \Memory% Committed Bytes in Use
\Memory\Available Bytes
ضيف يعمل بنظام Linux mem/available
mem/available_percent

تسجيل قواعد تنبيه البحث

إشعار

إذا كنت بحاجة إلى تحديد التنبيه إلى قرص واحد، يمكنك إضافة هذا إلى الاستعلام: | where parse_json(Tags).["vm.azm.ms/mountId"] == "C:"الذاكرة المتوفرة بالميغابايت

InsightsMetrics
| where Origin == "vm.azm.ms"
| where Namespace == "Memory" and Name == "AvailableMB"
| summarize AvailableMemoryInMBAverage = avg(Val) by bin(TimeGenerated, 15m), Computer, _ResourceId

الذاكرة المتوفرة بالنسبة المئوية

InsightsMetrics
| where Origin == "vm.azm.ms"
| where Namespace == "Memory" and Name == "AvailableMB"
| extend TotalMemory = toreal(todynamic(Tags)["vm.azm.ms/memorySizeMB"]) | extend AvailableMemoryPercentage = (toreal(Val) / TotalMemory) * 100.0
| summarize AvailableMemoryInPercentageAverage = avg(AvailableMemoryPercentage) by bin(TimeGenerated, 15m), Computer, _ResourceId  

تنبيهات القرص

يصف هذا القسم تنبيهات القرص.

قواعد التنبيه القياسي

استهداف Metric
ضيف يعمل بنظام Windows \Logical Disk(_Total)% Free Space
\Logical Disk(_Total)\Free Megabytes
ضيف يعمل بنظام Linux disk/free
disk/free_percent

تسجيل قواعد تنبيه البحث

القرص المنطقي المستخدم - جميع الأقراص على كل كمبيوتر

InsightsMetrics
| where Origin == "vm.azm.ms"
| where Namespace == "LogicalDisk" and Name == "FreeSpacePercentage"
| summarize LogicalDiskSpacePercentageFreeAverage = avg(Val) by bin(TimeGenerated, 15m), Computer, _ResourceId 

القرص المنطقي المستخدم - الأقراص الفردية

InsightsMetrics
| where Origin == "vm.azm.ms"
| where Namespace == "LogicalDisk" and Name == "FreeSpacePercentage"
| extend Disk=tostring(todynamic(Tags)["vm.azm.ms/mountId"])
| summarize LogicalDiskSpacePercentageFreeAverage = avg(Val) by bin(TimeGenerated, 15m), Computer, _ResourceId, Disk 

القرص المنطقي IOPS

InsightsMetrics
| where Origin == "vm.azm.ms" 
| where Namespace == "LogicalDisk" and Name == "TransfersPerSecond"
| extend Disk=tostring(todynamic(Tags)["vm.azm.ms/mountId"])
| summarize DiskIOPSAverage = avg(Val) by bin(TimeGenerated, 15m), Computer, _ResourceId, Disk 

معدل بيانات القرص المنطقي

InsightsMetrics
| where Origin == "vm.azm.ms" 
| where Namespace == "LogicalDisk" and Name == "BytesPerSecond"
| extend Disk=tostring(todynamic(Tags)["vm.azm.ms/mountId"])
| summarize DiskBytesPerSecondAverage = avg(Val) by bin(TimeGenerated, 15m), Computer, _ResourceId, Disk 

تنبيهات الشبكة

قواعد التنبيه القياسي

استهداف Metric
المضيف Network In Total, Network Out Total (مضمن في التنبيهات الموصى بها)
ضيف يعمل بنظام Windows \Network Interface\Bytes Sent/sec
\Logical Disk(_Total)\Free Megabytes
ضيف يعمل بنظام Linux disk/free
disk/free_percent

تسجيل قواعد تنبيه البحث

بايت واجهات الشبكة المستلمة - جميع واجهات

InsightsMetrics
| where Origin == "vm.azm.ms"
| where Namespace == "Network" and Name == "ReadBytesPerSecond"
| summarize BytesReceivedAverage = avg(Val) by bin(TimeGenerated, 15m), Computer, _ResourceId  

بايت واجهات الشبكة المستلمة - واجهات فردية

InsightsMetrics
| where Origin == "vm.azm.ms"
| where Namespace == "Network" and Name == "ReadBytesPerSecond"
| extend NetworkInterface=tostring(todynamic(Tags)["vm.azm.ms/networkDeviceId"])
| summarize BytesReceievedAverage = avg(Val) by bin(TimeGenerated, 15m), Computer, _ResourceId, NetworkInterface 

بايت واجهات الشبكة المرسلة - جميع واجهات

InsightsMetrics
| where Origin == "vm.azm.ms"
| where Namespace == "Network" and Name == "WriteBytesPerSecond"
| summarize BytesSentAverage = avg(Val) by bin(TimeGenerated, 15m), Computer, _ResourceId 

بايت واجهات الشبكة المرسلة - واجهات فردية

InsightsMetrics
| where Origin == "vm.azm.ms"
| where Namespace == "Network" and Name == "WriteBytesPerSecond"
| extend NetworkInterface=tostring(todynamic(Tags)["vm.azm.ms/networkDeviceId"])
| summarize BytesSentAverage = avg(Val) by bin(TimeGenerated, 15m), Computer, _ResourceId, NetworkInterface 

أحداث Windows وLinux

يخلق النموذج التالي تنبيهًا عند إنشاء حدث Windows محدد. ويستخدم قاعدة تنبيه قياس متري لإنشاء تنبيه منفصل لكل كمبيوتر.

  • إنشاء قاعدة تنبيه على حدث Windows محدد. يظهر هذا المثال حدثًا في سجل التطبيق. قم بتخصيص حد 0 والخروقات المتتالية التي تزيد عن 0.

    Event 
    | where EventLog == "Application"
    | where EventID == 123 
    | summarize NumberOfEvents = count() by Computer, bin(TimeGenerated, 15m)
    
  • إنشاء قاعدة تنبيه على أحداث Syslog مع خطورة معينة. يظهر المثال التالي أحداث تخويل الخطأ. قم بتخصيص حد 0 والخروقات المتتالية التي تزيد عن 0.

    Syslog
    | where Facility == "auth"
    | where SeverityLevel == "err"
    | summarize NumberOfEvents = count() by Computer, bin(TimeGenerated, 15m)
    

عدادات الأداء المخصصة

  • إنشاء تنبيه على أقصى قيمة للعداد.

    Perf 
    | where CounterName == "My Counter" 
    | summarize AggregatedValue = max(CounterValue) by Computer
    
  • إنشاء تنبيه على متوسط قيمة العداد.

    Perf 
    | where CounterName == "My Counter" 
    | summarize AggregatedValue = avg(CounterValue) by Computer
    

الخطوات التالية

تحليل بيانات المراقبة التي تم جمعها للأجهزة الظاهرية