تمرين - سرد الأجهزة الظاهرية النشطة مؤخرا التي توقفت عن إرسال السجلات

مكتمل

هنا، ستكتب استعلامات KQL لاسترداد البيانات وتحويلها من Heartbeat الجدول للحصول على رؤى حول حالة الأجهزة في بيئتك.

1. تعيين الأهداف

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

لتحديد الأجهزة التي توقفت عن إرسال البيانات، تحتاج إلى معلومات حول:

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

2. تقييم السجلات

يستخدم Azure Monitor عامل Azure Monitor لجمع بيانات حول الأنشطة وعمليات نظام التشغيل التي تعمل داخل الأجهزة الظاهرية.

إشعار

لا تزال بعض الأجهزة القديمة في بيئتك تستخدم عوامل Log Analytics Windows وLinux القديمة، والتي يقوم Azure Monitor بإيقافها.

يرسل عامل Azure Monitor وعامل Log Analytics بيانات صحة الجهاز الظاهري إلى Heartbeat الجدول مرة واحدة في الدقيقة.

لنقم بتشغيل استعلام بسيط take 10 على Heartbeat الجدول لمشاهدة نوع البيانات التي يحتوي عليها كل عمود من أعمدةه:

انقر لتشغيل الاستعلام في بيئة العرض التوضيحي ل Log Analytics

Heartbeat
| take 10

TimeGeneratedCategoryComputerتحتوي جميع الأعمدة و OSType على بيانات ذات صلة بتحليلنا.

Screenshot that shows the results of a take 10 query on the Heartbeat table with the TimeGenerated, Computer, Category, and OSType columns highlighted.

الآن دعونا نقيم كيف يمكننا استخدام هذه البيانات وعمليات KQL التي يمكن أن تساعد في استخراج البيانات وتحويلها:

العمود ‏‏الوصف هدف التحليل عمليات KQL ذات الصلة
TimeGenerated يشير إلى وقت إنشاء الجهاز الظاهري لكل سجل.
  • تحديد الأجهزة النشطة مؤخرا.
  • ابحث عن السجل الأخير الذي تم إنشاؤه لكل جهاز وتحقق مما إذا كان قد تم إنشاؤه في الدقائق القليلة الماضية.
  • where TimeGenerated >ago(48h)
  • summarize max(TimeGenerated)
  • max_TimeGenerated < ago(5m)
لمزيد من المعلومات، راجع مكان عامل التشغيل، وتلخيص عامل التشغيل، و ago()، وmax() (دالة التجميع).
Computer المعرف الفريد للجهاز.
  • تلخيص النتائج حسب الجهاز.
  • تجميع الأجهزة حسب إصدارات الوكيل المميزة.
  • summarize by Computer
  • summarize ComputersList=make_set(Computer)
لمزيد من المعلومات، راجع تلخيص عامل التشغيل make_set () (دالة التجميع).
Category نوع العامل:
  • Azure Monitor Agent او
  • Direct Agent، الذي يمثل عوامل Log Analytics. يسمى عامل Log Analytics لنظام التشغيل Windows أيضا MMA. يسمى عامل Log Analytics لنظام Linux أيضا OMS.
تحديد العامل الذي يعمل على الجهاز. لتبسيط النتائج وتسهيل المزيد من التحليل، مثل التصفية:
  • إعادة تسمية العمود إلى AgentType (AgentType=Category)
  • Direct Agent تغيير القيمة إلى MMA لأجهزة Windows (AgentType= iif(AgentType == "Direct Agent" and OSType =="Windows", "MMA", AgentType).
  • Direct Agent تغيير القيمة إلى OMS لأجهزة Linux (AgentType= iif(AgentType == "Direct Agent" and OSType =="Linux", "OMS", AgentType).
لمزيد من المعلومات، راجع عامل التشغيل iff() و== (يساوي).
OSType نوع نظام التشغيل الذي يعمل على الجهاز الظاهري. تحديد نوع العامل لوكلاء Log Analytics، والتي تختلف عن Windows وLinux. summarize by... OSType
لمزيد من المعلومات، راجع تلخيص عامل التشغيل.
Version رقم إصدار العامل الذي يراقب الجهاز الظاهري. تحديد إصدار العامل على كل جهاز. إعادة تسمية العمود إلى AgentVersion (AgentVersion=Version).

3. كتابة الاستعلام

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

  1. استرداد جميع السجلات من الساعات ال 48 الماضية:

    انقر لتشغيل الاستعلام في بيئة العرض التوضيحي ل Log Analytics

    Heartbeat // The table you’re querying
    | where TimeGenerated >ago(48h) // Time range for the query - in this case, logs generated in the past 48 hours
    

    تتضمن مجموعة نتائج هذا الاستعلام سجلات من جميع الأجهزة التي أرسلت بيانات السجل في الساعات ال 48 الماضية. من المحتمل أن تتضمن هذه النتائج العديد من السجلات لكل جهاز نشط.

    Screenshot that shows the results of a query on the Heartbeat table for all records generated in the past 48 hours.

    لفهم الأجهزة التي لم ترسل سجلات مؤخرا، تحتاج فقط إلى السجل الأخير لكل جهاز تم إرساله.

  2. ابحث عن السجل الأخير الذي تم إنشاؤه بواسطة كل جهاز ولخصه حسب الكمبيوتر ونوع العامل ونظام التشغيل:

    انقر لتشغيل الاستعلام في بيئة العرض التوضيحي ل Log Analytics

    Heartbeat // The table you’re querying
    | where TimeGenerated >ago(48h) // Time range for the query - in this case, logs generated in the past 48 hours
    | summarize max(TimeGenerated) by Computer, AgentType=Category, OSType // Retrieves the last record generated by each computer and provides information about computer, agent type, and operating system
    

    لديك الآن سجل واحد من كل جهاز قام بتسجيل البيانات في الساعات ال 48 الماضية - آخر سجل تم إرساله لكل جهاز.

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

    Screenshot that shows the results of a query for the last log generated by each machine.

  3. لمعرفة الأجهزة التي لم ترسل سجلات في الدقائق الخمس الأخيرة، قم بتصفية جميع السجلات التي تم إنشاؤها في الدقائق الخمس الأخيرة:

    انقر لتشغيل الاستعلام في بيئة العرض التوضيحي ل Log Analytics

    Heartbeat // The table you’re querying
    | where TimeGenerated >ago(48h) // Time range for the query - in this case, logs generated in the past 48 hours
    | summarize max(TimeGenerated) by Computer, AgentType=Category, OSType // Retrieves the last record generated by each computer and provides information about computer, agent type, and operating system
    | where max_TimeGenerated < ago(5m) // Filters away all records generated in the last five minutes
    

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

    Screenshot that shows the results of a query that filters away all records generated in the last five minutes.

    لديك الآن البيانات التي تبحث عنها: قائمة بجميع الأجهزة التي سجلت البيانات في آخر 48 ساعة، ولكنها لم تسجل البيانات كما هو متوقع في الدقائق الخمس الأخيرة. تتكون مجموعة النتائج من مجموعة أجهزة الكمبيوتر التي تريد إجراء مزيد من التحقيق فيها.

  4. معالجة نتائج الاستعلام لتقديم المعلومات بشكل أكثر وضوحا.

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

    Direct Agent تخبرك القيمة الموجودة في عمود AgentType بأن عامل Log Analytics قيد التشغيل على الجهاز. نظرا لأن عامل Log Analytics لنظام التشغيل Windows يسمى أيضا OMS وبالنسبة إلى Linux، يسمى العامل أيضا MMS، فإن إعادة تسمية Direct Agent القيمة إلى MMA لأجهزة Windows وأجهزة OMS Linux يبسط النتائج ويسهل المزيد من التحليل، مثل التصفية.

    انقر لتشغيل الاستعلام في بيئة العرض التوضيحي ل Log Analytics

    Heartbeat // The table you’re querying
    | where TimeGenerated >ago(48h) // Time range for the query - in this case, logs generated in the past 48 hours 
    | summarize max(TimeGenerated) by Computer,AgentType=Category, OSType // Retrieves the last record generated by each computer and provides information about computer, agent type, and operating system
    | where max_TimeGenerated < ago(5m) // Filters away all records generated in the last five minutes
    | extend AgentType= iif(AgentType == "Direct Agent" and OSType =="Windows", "MMA", AgentType) // Changes the AgentType value from "Direct Agent" to "MMA" for Windows machines
    | extend AgentType= iif(AgentType == "Direct Agent" and OSType =="Linux", "OMS", AgentType) // Changes the AgentType value from "Direct Agent" to "OMS" for Linux machines
    | order by max_TimeGenerated asc // Sorts results by max_TimeGenerated from oldest to newest
    | project-reorder max_TimeGenerated,Computer,AgentType,OSType  // Reorganizes the order of columns in the result set
    

    تلميح

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

    Screenshot that shows the results of a query that changes the AgentType values to MMA for Windows machines and to OMS for Linux machines.

التحدي: تجميع الأجهزة عن طريق وكيل المراقبة وإصدار العامل

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

هل يمكنك التفكير في بعض التعديلات السريعة التي يمكنك إجراؤها على الاستعلام الذي طورته أعلاه للحصول على هذه المعلومات؟

ضع في اعتبارك ما يلي:

  • ما هي المعلومات الإضافية التي تحتاج إلى استخراجها من سجلاتك؟
  • ما هي عملية KQL التي يمكنك استخدامها لتجميع الأجهزة حسب إصدار العامل الذي تقوم بتشغيله؟

الحل:

  1. انسخ الأسطر الخمسة الأولى من الاستعلام وأضف Version العمود إلى summarize سطر الاستعلام لاستخراج معلومات إصدار العامل:

    انقر لتشغيل الاستعلام في بيئة العرض التوضيحي ل Log Analytics

    Heartbeat // The table you’re querying
    | where TimeGenerated >ago(48h) // Time range for the query - in this case, logs generated in the past 48 hours 
    | summarize max(TimeGenerated) by Computer,AgentType=Category, OSType, Version // Retrieves the last record generated by each computer and provides information about computer, agent type, operating system, and agent version 
    | extend AgentType= iif(AgentType == "Direct Agent" and OSType =="Windows", "MMA", AgentType) // Changes the AgentType value from "Direct Agent" to "MMA" for Windows machines
    | extend AgentType= iif(AgentType == "Direct Agent" and OSType =="Linux", "OMS", AgentType) // Changes the AgentType value from "Direct Agent" to "OMS" for Linux machines
    

    Screenshot that shows the results of the first five lines of the query we've built up in this exercise, with the Version column added to the Summarize line to add agent version information to the results.

  2. أعد تسمية Version العمود إلى AgentVersion للوضوح، وأضف سطرا آخر summarize للعثور على مجموعات فريدة من نوع العامل وإصدار العامل ونوع نظام التشغيل، واستخدم الدالة التجميعية KQL make_set() لسرد جميع أجهزة الكمبيوتر التي تقوم بتشغيل كل تركيبة من نوع العامل وإصدار العامل:

    انقر لتشغيل الاستعلام في بيئة العرض التوضيحي ل Log Analytics

    Heartbeat // The table you’re querying
    | where TimeGenerated >ago(48h) // Time range for the query - in this case, logs generated in the past 48 hours 
    | summarize max(TimeGenerated) by Computer,AgentType=Category, OSType, Version // Retrieves the last record generated by each computer and provides information about computer, agent type, operating system, and agent version 
    | extend AgentType= iif(AgentType == "Direct Agent" and OSType =="Windows", "MMA", AgentType) // Changes the AgentType value from "Direct Agent" to "MMA" for Windows machines
    | extend AgentType= iif(AgentType == "Direct Agent" and OSType =="Linux", "OMS", AgentType) // Changes the AgentType value from "Direct Agent" to "OMS" for Linux machines
    | summarize ComputersList=make_set(Computer) by AgentVersion=Version, AgentType, OSType // Summarizes the result set by unique combination of agent type, agent version, and operating system, and lists the set of all machines running the specific agent version
    

    لديك الآن البيانات التي تبحث عنها: قائمة بمجموعات فريدة من نوع العامل وإصدار العامل ومجموعة جميع الأجهزة النشطة مؤخرا التي تقوم بتشغيل إصدار معين من كل عامل.

    Screenshot that shows the results of a query that creates a list of all machines running each unique combination of agent type, agent version, and operating system.