ربط البيانات في Azure Data Explorer وAzure Resource Graph بالبيانات في مساحة عمل Log Analytics

يمكنك ربط البيانات في Azure Data Explorer وAzure Resource Graph بالبيانات في مساحة عمل Log Analytics وموارد Application Insights لتحسين تحليلك في سجلات Azure Monitor. يدعم Microsoft Sentinel، الذي يخزن البيانات أيضا في مساحات عمل Log Analytics، الاستعلامات عبر الخدمة إلى Azure Data Explorer ولكن ليس إلى Azure Resource Graph. توضح هذه المقالة كيفية تشغيل الاستعلامات عبر الخدمة من أي خدمة تخزن البيانات في مساحة عمل Log Analytics.

قم بتشغيل الاستعلامات عبر الخدمة باستخدام أي أدوات عميل تدعم استعلامات Kusto Query Language (KQL)، بما في ذلك واجهة مستخدم الويب Log Analytics والمصنفات وPowerShell وواجهة برمجة تطبيقات REST.

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

لتشغيل استعلام عبر الخدمة يرتبط البيانات في Azure Data Explorer أو Azure Resource Graph بالبيانات في مساحة عمل Log Analytics، تحتاج إلى:

  • Microsoft.OperationalInsights/workspaces/query/*/read أذونات لمساحات عمل Log Analytics التي تستعلمها، كما هو منصوص عليه في الدور المضمن لقارئ Log Analytics، على سبيل المثال.
  • أذونات القارئ للموارد التي تستعلمها في Azure Resource Graph.
  • أذونات العارض للجداول التي تستعلم فيها في Azure Data Explorer.

الاستعلام عن البيانات في Azure Data Explorer باستخدام adx()

أدخل معرّف مجموعة Azure Data Explorer في استعلام ضمن النمط adx، متبوعاً باسم قاعدة البيانات والجدول.

adx('https://help.kusto.windows.net/Samples').StormEvents

اجمع بين جداول مجموعة Azure Data Explorer مع مساحة عمل Log Analytics

استخدم الأمر union لدمج جداول المجموعة مع مساحة عمل Log Analytics.

على سبيل المثال:

union customEvents, adx('https://help.kusto.windows.net/Samples').StormEvents
| take 10
let CL1 = adx('https://help.kusto.windows.net/Samples').StormEvents;
union customEvents, CL1 | take 10

تلميح

يُسمح بتنسيق الاختصار: ClusterName / InitialCatalog . على سبيل المثال، تمت ترجمة adx('help/Samples') إلى adx('help.kusto.windows.net/Samples').

عند استخدام join عامل التشغيل بدلا من الاتحاد، يطلب منك استخدام hint لدمج البيانات في مجموعة Azure Data Explorer مع مساحة عمل Log Analytics. استخدم Hint.remote={Direction of the Log Analytics Workspace}.

على سبيل المثال:

AzureDiagnostics
| join hint.remote=left adx("cluster=ClusterURI").AzureDiagnostics on (ColumnName)

انضم إلى البيانات من مجموعة Azure Data Explorer في أحد المستأجرين باستخدام مورد Azure Monitor في مستأجر آخر

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

إذا كان مورد Azure Data Explorer موجوداً في المستأجر A ومساحة عمل تحليلات السجل في المستأجر ب، فاستخدم إحدى الطرق التالية:

  • استخدم Azure Data Explorer لإضافة أدوار للمديرين في مستأجرين مختلفين. أضف معرف المستخدم الخاص بك في Tenant B كمستخدم معتمد في مجموعة Azure Data Explorer. تحقق من أن الخاصية TrustedExternalTenant في مجموعة Azure Data Explorer تحتوي على المستأجر B. قم بتشغيل الاستعلام المتقاطع بالكامل في المستأجر B.
  • استخدم Lighthouse لعرض مورد Azure Monitor في Tenant A.

الاتصال بنظام مجموعات Azure Data Explorer من المستأجرين المختلفين

يقوم Kusto Explorer بتسجيل دخولك تلقائياً إلى المستأجر الذي ينتمي إليه حساب المستخدم في الأصل. للوصول إلى الموارد في مستأجرين آخرين بنفس حساب المستخدم، يجب عليك تحديد TenantId صراحةً في سلسلة الاتصال:

Data Source=https://ade.applicationinsights.io/subscriptions/SubscriptionId/resourcegroups/ResourceGroupName;Initial Catalog=NetDefaultDB;AAD Federated Security=True;Authority ID=TenantId

الاستعلام عن البيانات في Azure Resource Graph باستخدام arg() (معاينة)

arg("") أدخل النمط، متبوعا باسم جدول Azure Resource Graph.

على سبيل المثال:

arg("").<Azure-Resource-Graph-table-name>

فيما يلي بعض نماذج استعلامات Azure Log Analytics التي تستخدم قدرات استعلام Azure Resource Graph الجديدة عبر الخدمة:

  • تصفية استعلام Log Analytics استنادا إلى نتائج استعلام Azure Resource Graph:

    arg("").Resources 
    | where type == "microsoft.compute/virtualmachines" and properties.hardwareProfile.vmSize startswith "Standard_D"
    | join (
        Heartbeat
        | where TimeGenerated > ago(1d)
        | distinct Computer
        )
        on $left.name == $right.Computer
    
  • إنشاء قاعدة تنبيه تنطبق فقط على موارد معينة مأخوذة من استعلام ARG:

    • استبعاد الموارد استنادا إلى العلامات - على سبيل المثال، عدم تشغيل تنبيهات للأجهزة الظاهرية باستخدام علامة "اختبار".

      arg("").Resources
      | where tags.environment=~'Test'
      | project name 
      
    • استرداد بيانات الأداء المتعلقة باستخدام وحدة المعالجة المركزية وتصفية الموارد باستخدام علامة "prod".

      InsightsMetrics
      | where Name == "UtilizationPercentage"
      | lookup (
          arg("").Resources 
          | where type == 'microsoft.compute/virtualmachines' 
          | project _ResourceId=tolower(id), tags
          )
          on _ResourceId
      | where tostring(tags.Env) == "Prod"
      

المزيد من حالات الاستخدام:

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

إنشاء تنبيه استنادا إلى استعلام عبر الخدمة من مساحة عمل Log Analytics

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

إشعار

يمكنك أيضا تشغيل استعلامات عبر الخدمة من Azure Data Explorer وAzure Resource Graph إلى مساحة عمل Log Analytics، عن طريق تحديد المورد ذي الصلة كنطاق التنبيه الخاص بك.

القيود

قيود الاستعلام العام عبر الخدمة

  • لا تدعم الاستعلامات عبر الخدمة الوظائف والوظائف ذات المعلمات التي يتضمن تعريفها تعبيرات أخرى عبر مساحة العمل أو عبر الخدمة، بما في ذلك adx()وarg()resource()workspace().app()
  • تدعم الاستعلامات عبر الخدمات وظائف "show" فقط. تمكن هذه الإمكانية الاستعلامات عبر نظام المجموعة من الرجوع إلى وظيفة جدولية Azure Monitor أو Azure Data Explorer أو Azure Resource Graph مباشرة. يتم دعم الأوامر التالية مع الاستعلام عبر الخدمة:
    • .show functions
    • .show function {FunctionName}
    • .show database {DatabaseName} schema as json
  • أسماء قواعد البيانات حساسة لحالة الأحرف.
  • تحديد عمود الطابع الزمني في نظام المجموعة غير مدعوم. لن تمر واجهة برمجة تطبيقات استعلام تحليلات السجل بعامل تصفية الوقت.
  • تدعم الاستعلامات عبر الخدمات استرداد البيانات فقط.
  • لا يدعم الارتباط الخاص (نقاط النهاية الخاصة) وقيود IP الاستعلامات عبر الخدمات.
  • mv-expand يقتصر على 2000 سجل.
  • لا تدعم سجلات Azure Monitor الدالة external_table() ، والتي تتيح لك الاستعلام عن الجداول الخارجية في Azure Data Explorer. للاستعلام عن جدول خارجي، حدد external_table(<external-table-name>) كدالة بلا معلمات في Azure Data Explorer. يمكنك بعد ذلك استدعاء الدالة باستخدام التعبير adx("").<function-name>.

قيود الاستعلام عبر الخدمة في Azure Resource Graph

  • لا يدعم Microsoft Sentinel الاستعلامات عبر الخدمة إلى Azure Resource Graph.
  • عند الاستعلام عن بيانات Azure Resource Graph من Azure Monitor:
    • يقوم الاستعلام بإرجاع أول 1000 سجل فقط.
    • لا يقوم Azure Monitor بإرجاع أخطاء استعلام Azure Resource Graph.
    • يضع محرر استعلام Log Analytics علامات على استعلامات Azure Resource Graph الصالحة كأخطاء في بناء الجملة.
    • عوامل التشغيل هذه غير مدعومة: smv-apply()و rand()و arg_max()و arg_min()و avg()و avg_if()و percentile()sumif()percentilesw()stdev()percentilew()countif()percentiles()و stdevp()variance()stdevif()و. variancep()varianceif()

دمج جداول Azure Resource Graph مع مساحة عمل Log Analytics

استخدم الأمر union لدمج جداول المجموعة مع مساحة عمل Log Analytics.

على سبيل المثال:

union AzureActivity, arg("").Resources
| take 10
let CL1 = arg("").Resources ;
union AzureActivity, CL1 | take 10

عند استخدام join عامل التشغيل بدلا من الاتحاد، تحتاج إلى استخدام hint لدمج البيانات في Azure Resource Graph مع البيانات في مساحة عمل Log Analytics. استخدم Hint.remote={Direction of the Log Analytics Workspace}. على سبيل المثال:

Perf | where ObjectName == "Memory" and (CounterName == "Available MBytes Memory")
| extend _ResourceId = replace_string(replace_string(replace_string(_ResourceId, 'microsoft.compute', 'Microsoft.Compute'), 'virtualmachines','virtualMachines'),"resourcegroups","resourceGroups")
| join hint.remote=left (arg("").Resources | where type =~ 'Microsoft.Compute/virtualMachines' | project _ResourceId=id, tags) on _ResourceId | project-away _ResourceId1 | where tostring(tags.env) == "prod"

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