أعمدة قياسية في سجلات مراقبة Azure

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

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

إشعار

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

TenantId

يحتفظ العمود TenantId بمعرّف مساحة عمل «تحليلات السجل».

TimeGenerated

يحتوي العمود TimeGeneratedعلى التاريخ والوقت الذي أنشأ فيها مصدر البيانات التسجيل. راجع وقت إدخال بيانات السجل في مراقب Azure لمزيد من التفاصيل.

يوفر TimeGenerated عمودًا شائعًا لاستخدامه في التصفية أو التلخيص حسب الوقت. عند تحديد نطاق زمني لعرض أو لوحة معلومات في مدخل Azure، فإنها تستخدم TimeGenerated لتصفية النتائج.

إشعار

تستخدم الجداول التي تدعم موارد Application Insights الكلاسيكية عمود الطابع الزمني بدلا من العمود TimeGenerated .

إشعار

لا يمكن أن تكون قيمة TimeGenerated أقدم من يومين قبل تلقي الوقت أو أكثر من يوم في المستقبل. إذا كانت القيمة في بعض الحالات أقدم من يومين أو أكثر من يوم في المستقبل، فسيتم استبدالها بالوقت الفعلي المستلم.

الأمثلة

يقوم الاستعلام التالي بإرجاع عدد أحداث الخطأ التي تم إنشاؤها عن كل يومٍ في الأسبوع السابق.

Event
| where EventLevelName == "Error" 
| where TimeGenerated between(startofweek(ago(7days))..endofweek(ago(7days))) 
| summarize count() by bin(TimeGenerated, 1day) 
| sort by TimeGenerated asc 

_TimeReceived

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

إشعار

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

يحدد الاستعلام التالي متوسط زمن الانتقال لسجلات الأحداث من العامل لتبلغ ساعةً. يتضمن ذلك الوقت من العامل إلى السحابة والوقت الإجمالي لإتاحة السجل في لاستعلامات السجل.

Event
| where TimeGenerated > ago(1d) 
| project TimeGenerated, TimeReceived = _TimeReceived, IngestionTime = ingestion_time() 
| extend AgentLatency = toreal(datetime_diff('Millisecond',TimeReceived,TimeGenerated)) / 1000
| extend TotalLatency = toreal(datetime_diff('Millisecond',IngestionTime,TimeGenerated)) / 1000
| summarize avg(AgentLatency), avg(TotalLatency) by bin(TimeGenerated,1hr)

نوع

يحتوي العمود Type على اسم الجدول التي تم استرداد السجل منها والتي يمكن أيضًا اعتبارها نوع السجل. يفيد هذا العمود في الاستعلامات التي تجمع بين سجلات من جداول متعددة، مثل تلك التي تَستخدم search عامل التشغيل، لتميز بين سجلات الأنواع المختلفة. يمكن استخدام $table بدلاً من Type في بعض الاستعلامات.

إشعار

تستخدم الجداول التي تدعم موارد Application Insights التقليدية عمود الطابع الزمني بدلاً من العمود Type.

الأمثلة

يقوم الاستعلام التالي بإرجاع عدد السجلات حسب النوع الذي تم تجميعه خلال الساعة الماضية.

search * 
| where TimeGenerated > ago(1h)
| summarize count() by Type

_ItemId

يحتوي العمود _ItemId على معرّف فريد للسجل.

_ResourceId

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

بالنسبة لموارد Azure، تعد قيمة _ResourceId هي عنوان URL لمعرّف مورد Azure. يقتصر العمود على موارد Azure، بما في ذلك موارد Azure Arc، أو على السجلات المخصصة التي أشارت إلى معرّف المورد أثناء الإدخال.

إشعار

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

الأمثلة

يربط الاستعلام التالي بيانات الأداء بالحدث على كل جهاز كمبيوتر. تُظهر جميعَ الأحداثِ مع معرّف 101 واستخدام المعالج لأكثر من 50٪.

Perf 
| where CounterName == "% User Time" and CounterValue  > 50 and _ResourceId != "" 
| join kind=inner (     
    Event 
    | where EventID == 101 
) on _ResourceId

يربط الاستعلام التالي سجلات AzureActivity بسجلات SecurityEvent. تُظهر جميع عمليات نشاط المستخدمين الذين تسجلوا الدخول إلى هذه الأجهزة.

AzureActivity 
| where  
    OperationName in ("Restart Virtual Machine", "Create or Update Virtual Machine", "Delete Virtual Machine")  
    and ActivityStatus == "Succeeded"  
| join kind= leftouter (    
   SecurityEvent 
   | where EventID == 4624  
   | summarize LoggedOnAccounts = makeset(Account) by _ResourceId 
) on _ResourceId  

يقوم الاستعلام التالي بتوزيع _ResourceId وتجميع وحدات تخزين بيانات الفواتير لكل مجموعة موارد Azure.

union withsource = tt * 
| where _IsBillable == true 
| parse tolower(_ResourceId) with "/subscriptions/" subscriptionId "/resourcegroups/" 
    resourceGroup "/providers/" provider "/" resourceType "/" resourceName   
| summarize Bytes=sum(_BilledSize) by resourceGroup | sort by Bytes nulls last 

استخدم هذه union withsource = tt * الاستعلامات باعتدال لأن عمليات الفحص عبر أنواع البيانات باهظة في التنفيذ.

دائمًا ما يكون استخدام عمود _SubscriptionId أكثر فاعلية من استخراجه عن طريق تحليل عمود _ResourceId.

_SubscriptionId

يحتفظ العمود _SubscriptionId بمعرّف اشتراك المورد المقترن بالسجل. ويمنحك ذلك عمودًا قياسيًا لاستخدامه للنظر في الاستعلام الخاص بك في سجلاتٍ من مورد معين فقط، أو لمقارنة الاشتراكات المختلفة.

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

إشعار

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

الأمثلة

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

Perf 
| where TimeGenerated > ago(24h) and CounterName == "memoryAllocatableBytes"
| where _SubscriptionId == "ebb79bc0-aa86-44a7-8111-cabbe0c43993"
| summarize avgMemoryAllocatableBytes = avg(CounterValue) by Computer

يقوم الاستعلام التالي بتوزيع _ResourceId وتجميع وحدات تخزين بيانات الفواتير لكل اشتراك في Azure.

union withsource = tt * 
| where _IsBillable == true 
| summarize Bytes=sum(_BilledSize) by _SubscriptionId | sort by Bytes nulls last 

استخدم هذه union withsource = tt * الاستعلامات باعتدال لأن عمليات الفحص عبر أنواع البيانات باهظة في التنفيذ.

_IsBillable

يحدد العمود _IsBillable ما إذا كانت البيانات المتناولة تعتبر قابلة للفوترة. لا تتحمل البيانات التي _IsBillable تساوي false رسوم استيعاب البيانات أو استبقاءها أو أرشفتها.

الأمثلة

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

إشعار

استخدم الاستعلامات union withsource = tt * باعتدال لأن عمليات الفحص عبر أنواع البيانات باهظة في التنفيذ.

union withsource = tt * 
| where _IsBillable == true 
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| where computerName != ""
| summarize TotalVolumeBytes=sum(_BilledSize) by computerName

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

union withsource = tt * 
| where _IsBillable == true 
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| where computerName != ""
| summarize dcount(computerName) by bin(TimeGenerated, 1h) | sort by TimeGenerated asc

_BilledSize

يحدد عمود _BilledSize حجم البيانات بوحدات البايت التي تتم فوترتها إلى حساب Azure الخاص بك بالبايت إذا كان عمود _IsBillable صحيحًا. راجع Data size calculation لمعرفة المزيد حول تفاصيل كيفية حساب الحجم المفوتر.

الأمثلة

لمعرفة حجم البيانات المتناولة القابلة للفواتير لكل كمبيوتر، استخدم _BilledSize العمود الذي يوفر الأحجام بوحدات البايت:

union withsource = tt * 
| where _IsBillable == true 
| summarize Bytes=sum(_BilledSize) by  Computer | sort by Bytes nulls last 

لمعرفة عدد الأحداث المتناولة القابلة للفوترة لكل اشتراك، استخدم الاستعلام التالي:

union withsource=table * 
| where _IsBillable == true 
| summarize Bytes=sum(_BilledSize) by  _SubscriptionId | sort by Bytes nulls last 

لمعرفة عدد الأحداث المتناولة القابلة للفوترة لكل مجموعة مصدر، استخدم الاستعلام التالي:

union withsource=table * 
| where _IsBillable == true 
| parse _ResourceId with "/subscriptions/" SubscriptionId "/resourcegroups/" ResourceGroupName "/" *
| summarize Bytes=sum(_BilledSize) by  _SubscriptionId, ResourceGroupName | sort by Bytes nulls last 

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

union withsource = tt *
| summarize count() by Computer | sort by count_ nulls last

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

union withsource = tt * 
| where _IsBillable == true 
| summarize count() by Computer  | sort by count_ nulls last

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

union withsource = tt *
| where Computer == "computer name"
| where _IsBillable == true 
| summarize count() by tt | sort by count_ nulls last 

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