الاستعلام عن البيانات عبر مساحات عمل Log Analytics والتطبيقات والموارد في Azure Monitor

هناك طريقتان للاستعلام عن البيانات من مساحات عمل وتطبيقات وموارد متعددة:

  • بشكل صريح عن طريق تحديد معلومات مساحة العمل أو التطبيق أو المورد باستخدام تعبيرات مساحة العمل ()أو app()أو المورد، كما هو موضح في هذه المقالة.
  • ضمنيا باستخدام استعلامات سياق المورد. عند الاستعلام في سياق مورد معين أو مجموعة موارد أو اشتراك، يسترد الاستعلام البيانات ذات الصلة من كافة مساحات العمل التي تحتوي على بيانات لهذه الموارد. لا تسترد استعلامات سياق الموارد البيانات من موارد Application Insights الكلاسيكية.

توضح هذه المقالة كيفية استخدام workspace()app()التعبيرات و و resource() للاستعلام عن البيانات من مساحات عمل وتطبيقات وموارد Log Analytics المتعددة.

إذا كنت تدير الاشتراكات في مستأجري Microsoft Entra الآخرين من خلال Azure Lighthouse، يمكنك تضمين مساحات عمل Log Analytics التي تم إنشاؤها في مستأجري العملاء هؤلاء في استعلاماتك.

هام

إذا كنت تستخدم مورد Application Insights المستند إلى مساحة العمل، يتم تخزين القياس عن بعد في مساحة عمل Log Analytics مع جميع بيانات السجل الأخرى. workspace() استخدم التعبير للاستعلام عن البيانات من التطبيقات في مساحات عمل متعددة. لا تحتاج إلى استعلام عبر مساحة العمل للاستعلام عن البيانات من تطبيقات متعددة في نفس مساحة العمل.

الأذونات المطلوبة

  • يجب أن يكون لديك Microsoft.OperationalInsights/workspaces/query/*/read أذونات لمساحات عمل Log Analytics التي تستعلمها، كما هو مقدم من الدور المضمن لقارئ Log Analytics، على سبيل المثال.
  • لحفظ استعلام، يجب أن يكون لديك microsoft.operationalinsights/querypacks/queries/action أذونات إلى حزمة الاستعلام حيث تريد حفظ الاستعلام، كما هو منصوص عليه في دور مساهم Log Analytics المضمن، على سبيل المثال.

القيود

  • لا تدعم الاستعلامات عبر الموارد والخدمات المشتركة الوظائف والوظائف ذات المعلمات التي يتضمن تعريفها تعبيرات أخرى عبر مساحة العمل أو عبر الخدمة، بما في ذلك adx()وarg()resource()workspace().app()
  • يمكنك تضمين ما يصل إلى 100 مساحة عمل Log Analytics أو موارد Application Insights الكلاسيكية في استعلام واحد.
  • يمكن أن يؤدي الاستعلام عبر عدد كبير من الموارد إلى إبطاء الاستعلام بشكل كبير.
  • يتم دعم الاستعلامات عبر الموارد في تنبيهات بحث السجل فقط في واجهة برمجة تطبيقات scheduledQueryRules الحالية. إذا كنت تستخدم API لتنبيهات تحليلات سجل قديمة، فستحتاج إلى التبديل إلى API الحالية.
  • يجب أن تكون المراجع إلى مورد متقاطع، مثل مساحة عمل أخرى، صريحة ولا يمكن تحديد معلمات لها.

الاستعلام عبر مساحات العمل والتطبيقات والموارد باستخدام الوظائف

يشرح هذا القسم كيفية الاستعلام عن مساحات العمل والتطبيقات والموارد باستخدام الدالات باستخدام دالة وبدونها.

الاستعلام دون استخدام دالة

يمكنك الاستعلام عن موارد متعددة من أي من مثيلات الموارد الخاصة بك. يمكن أن تكون هذه الموارد مساحات عمل وتطبيقات مجمعة.

مثال لاستعلام عبر ثلاث مساحات عمل:

union 
  Update, 
  workspace("00000000-0000-0000-0000-000000000001").Update, 
  workspace("00000000-0000-0000-0000-000000000002").Update
| where TimeGenerated >= ago(1h)
| where UpdateState == "Needed"
| summarize dcount(Computer) by Classification

لمزيد من المعلومات حول الاتحاد ومكان وتلخيص عوامل التشغيل، راجع عامل تشغيل الاتحاد، ومكان عامل التشغيل، وتلخيص عامل التشغيل.

الاستعلام باستخدام دالة

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

إنشاء استعلام مثل المثال التالي الذي يشير إلى نطاق مكونات Application Insights. يضيف الأمر withsource= SourceApp عمودًا يعين اسم التطبيق الذي أرسل السجل. احفظ الاستعلام كدالة بالاسم المستعار applicationsScoping.

// crossResource function that scopes my Application Insights components
union withsource= SourceApp
app('00000000-0000-0000-0000-000000000000').requests, 
app('00000000-0000-0000-0000-000000000001').requests,
app('00000000-0000-0000-0000-000000000002').requests,
app('00000000-0000-0000-0000-000000000003').requests,
app('00000000-0000-0000-0000-000000000004').requests

يمكنك الآن استخدام هذه الدالة في استعلام عبر الموارد مثل المثال التالي. يقوم الاسم المستعار للدالة applicationsScoping بإرجاع اتحاد جدول الطلبات من جميع التطبيقات المعرفة. يقوم الاستعلام بعد ذلك بتصفية الطلبات الفاشلة ويصور الاتجاهات حسب التطبيق. parse عامل التشغيل اختياري في هذا المثال. يستخرج اسم التطبيق من الخاصية SourceApp .

applicationsScoping 
| where timestamp > ago(12h)
| where success == 'False'
| parse SourceApp with * '(' applicationId ')' * 
| summarize count() by applicationId, bin(timestamp, 1h) 
| render timechart

إشعار

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

الاستعلام عبر مساحات عمل Log Analytics باستخدام مساحة العمل()

workspace() استخدم التعبير لاسترداد البيانات من مساحة عمل معينة في نفس مجموعة الموارد أو مجموعة موارد أخرى أو اشتراك آخر. يمكنك استخدام هذا التعبير لتضمين بيانات السجل في استعلام Application Insights والاستعلام عن البيانات عبر مساحات عمل متعددة في استعلام سجل.

بناء الجملة

workspace(معرف)

الوسيطات

*Identifier*: يحدد مساحة العمل باستخدام أحد التنسيقات في الجدول التالي.

Identifier ‏‏الوصف مثال
المعرف GUID الخاص بمساحة العمل مساحة العمل("00000000-0000-0000-0000-0000000000000")
معرف مورد Azure معرف مورد Azure مساحة العمل("/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Contoso/providers/Microsoft.OperationalInsights/workspaces/contosoretail")

الأمثلة

workspace("00000000-0000-0000-0000-000000000000").Update | count
workspace("/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Contoso/providers/Microsoft.OperationalInsights/workspaces/contosoretail").Event | count
union 
( workspace("00000000-0000-0000-0000-000000000000").Heartbeat | where Computer == "myComputer"),
(app("00000000-0000-0000-0000-000000000000").requests | where cloud_RoleInstance == "myRoleInstance")
| count  
union 
(workspace("00000000-0000-0000-0000-000000000000").Heartbeat), (app("00000000-0000-0000-0000-000000000000").requests) | where TimeGenerated between(todatetime("2023-03-08 15:00:00") .. todatetime("2023-04-08 15:05:00"))

الاستعلام عبر تطبيقات Application Insights الكلاسيكية باستخدام app()

app استخدم التعبير لاسترداد البيانات من مورد Application Insights كلاسيكي معين في نفس مجموعة الموارد أو مجموعة موارد أخرى أو اشتراك آخر. إذا كنت تستخدم مورد Application Insights المستند إلى مساحة العمل، يتم تخزين القياس عن بعد في مساحة عمل Log Analytics مع جميع بيانات السجل الأخرى. workspace() استخدم التعبير للاستعلام عن البيانات من التطبيقات في مساحات عمل متعددة. لا تحتاج إلى استعلام عبر مساحة العمل للاستعلام عن البيانات من تطبيقات متعددة في نفس مساحة العمل.

بناء الجملة

app(معرف)

الوسيطات

*Identifier*: يحدد التطبيق باستخدام أحد التنسيقات في الجدول أدناه.

Identifier ‏‏الوصف مثال
المعرف GUID الخاص بالتطبيق app("00000000-0000-0000-0000-0000000000000")
معرف مورد Azure معرف مورد Azure app("/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Fabrikam/providers/microsoft.insights/components/fabrikamapp")

الأمثلة

app("00000000-0000-0000-0000-000000000000").requests | count
app("/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Fabrikam/providers/microsoft.insights/components/fabrikamapp").requests | count
union 
(workspace("00000000-0000-0000-0000-000000000000").Heartbeat | where Computer == "myComputer"),
(app("00000000-0000-0000-0000-000000000000").requests | where cloud_RoleInstance == "myColumnInstance")
| count  
union 
(workspace("00000000-0000-0000-0000-000000000000").Heartbeat), (app("00000000-0000-0000-0000-000000000000").requests)
| where TimeGenerated between(todatetime("2023-03-08 15:00:00") .. todatetime("2023-04-08 15:05:00"))

ربط البيانات بين الموارد باستخدام المورد()

يتم استخدام التعبير resource في استعلام Azure Monitor المخصص لمورد لاسترداد البيانات من الموارد الأخرى.

بناء الجملة

resource(معرف)

الوسيطات

*Identifier*: يحدد المورد أو مجموعة الموارد أو الاشتراك الذي يتم ربط البيانات منه.

Identifier ‏‏الوصف مثال
Resource يتضمن بيانات للمورد. resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcesgroups/myresourcegroup/providers/microsoft.compute/virtualmachines/myvm")
مجموعة الموارد أو الاشتراك يتضمن بيانات عن المورد وجميع الموارد التي يحتوي عليها. resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcesgroups/myresourcegroup)

الأمثلة

union (Heartbeat),(resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcesgroups/myresourcegroup/providers/microsoft.compute/virtualmachines/myvm").Heartbeat) | summarize count() by _ResourceId, TenantId
union (Heartbeat),(resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcesgroups/myresourcegroup).Heartbeat) | summarize count() by _ResourceId, TenantId

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

راجع تحليل بيانات السجل في Azure Monitor للحصول على نظرة عامة على استعلامات السجل وكيفية هيكلة بيانات سجل Azure Monitor.