البرنامج التعليمي: استيعاب الأحداث من Azure Event Hubs في سجلات Azure Monitor (معاينة عامة)
Azure Event Hubs هو نظام أساسي لتدفق البيانات الضخمة يجمع الأحداث من مصادر متعددة ليتم استيعابها بواسطة Azure والخدمات الخارجية. توضح هذه المقالة كيفية استيعاب البيانات مباشرة من مركز أحداث إلى مساحة عمل Log Analytics.
في هذا البرنامج التعليمي، تتعلم كيفية:
- إنشاء جدول وجهة لبيانات مركز الأحداث في مساحة عمل Log Analytics
- إنشاء نقطة نهاية لجمع البيانات
- إنشاء قاعدة تجميع البيانات
- منح أذونات قاعدة تجميع البيانات إلى مركز الأحداث
- إقران قاعدة جمع البيانات بمركز الحدث
المتطلبات الأساسية
لإرسال الأحداث من Azure Event Hubs إلى سجلات Azure Monitor، تحتاج إلى هذه الموارد:
مساحة عمل Log Analytics حيث لديك حقوق المساهم على الأقل.
يجب ربط مساحة عمل Log Analytics بمجموعة مخصصة أو أن يكون لها مستوى التزام.
مساحة اسم مراكز الأحداث التي تسمح بالوصول إلى الشبكة العامة. إذا تم تعطيل الوصول إلى الشبكة العامة، فتأكد من تعيين "السماح خدمات Microsoft الموثوقة بتجاوز جدار الحماية هذا" إلى "نعم".
مركز الأحداث مع الأحداث. يمكنك إرسال الأحداث إلى مركز الأحداث باتباع الخطوات الواردة في إرسال الأحداث وتلقيها في البرامج التعليمية لمراكز الأحداث Azure أو عن طريق تكوين إعدادات التشخيص لموارد Azure.
المناطق المدعومة
يدعم Azure Monitor حاليا الاستيعاب من مراكز الأحداث في هذه المناطق:
الأمريكتان | أوروبا | الشرق الأوسط | أفريقيا | آسيا/المحيط الهادئ |
---|---|---|---|---|
جنوب البرازيل | وسط فرنسا | شمال الإمارات العربية المتحدة | جنوب أفريقيا | وسط أستراليا |
جنوب شرق البرازيل | أوروبا الشمالية | شرق أستراليا | ||
وسط كندا | شرق النرويج | جنوب شرق أستراليا | ||
شرق كندا | شمال سويسرا | وسط الهند | ||
شرق الولايات المتحدة | غرب سويسرا | شرق آسيا | ||
East US 2 | جنوب المملكة المتحدة | شرق اليابان | ||
South Central US | غرب المملكة المتحدة | جيو الهند الغربية | ||
غرب الولايات المتحدة | أوروبا الغربية | وسط كوريا | ||
غرب الولايات المتحدة الأمريكية 3 | جنوب شرق آسيا |
تحتاج إلى إنشاء اقتران قواعد تجميع البيانات (DCRA) في نفس المنطقة مثل Event Hub. يمكن أن تكون مساحة عمل Log Analytics في أي منطقة، ولكن يجب أن تكون قاعدة تجميع البيانات (DCR) ونقطة نهاية تجميع البيانات (DCE) في نفس المنطقة مثل مساحة عمل Log Analytics.
للحصول على الحد الأدنى من زمن الانتقال، نوصي بوضع جميع الموارد في نفس المنطقة.
جمع المعلومات المطلوبة
تحتاج إلى معرف الاشتراك واسم مجموعة الموارد واسم مساحة العمل ومعرف مورد مساحة العمل ومعرف مورد مثيل مركز الأحداث في الخطوات اللاحقة:
انتقل إلى مساحة العمل في قائمة مساحات عمل Log Analytics وحدد خصائص وانسخ معرف الاشتراك ومجموعة الموارد واسم مساحة العمل. ستحتاج إلى هذه التفاصيل لإنشاء موارد في هذا البرنامج التعليمي.
حدد JSON لفتح شاشة Resource JSON وانسخ معرف المورد لمساحة العمل. ستحتاج إلى معرف مورد مساحة العمل لإنشاء قاعدة تجميع بيانات.
انتقل إلى مثيل مركز الحدث، وحدد JSON لفتح شاشة Resource JSON، وانسخ معرف المورد لمثيل مركز الحدث. ستحتاج إلى معرف مورد مثيل مركز الأحداث لربط قاعدة جمع البيانات بمركز الحدث.
إنشاء جدول وجهة في مساحة عمل Log Analytics
قبل أن تتمكن من استيعاب البيانات، تحتاج إلى إعداد جدول وجهة. يمكنك استيعاب البيانات في جداول مخصصة وجداول Azure المدعومة.
لإنشاء جدول مخصص لاستيعاب الأحداث فيه، في مدخل Microsoft Azure:
حدد زر Cloud Shell وتأكد من تعيين البيئة إلى PowerShell.
قم بتشغيل أمر PowerShell هذا لإنشاء الجدول، وتوفير اسم الجدول (
<table_name>
) في JSON (ذلك أيضا مع لاحقة _CL في حالة الجدول المخصص)، وتعيين<subscription_id>
<workspace_name>
<resource_group_name>
القيم و<table_name>
فيInvoke-AzRestMethod -Path
الأمر:$tableParams = @' { "properties": { "schema": { "name": "<table_name>", "columns": [ { "name": "TimeGenerated", "type": "datetime", "description": "The time at which the data was ingested." }, { "name": "RawData", "type": "string", "description": "Body of the event." }, { "name": "Properties", "type": "dynamic", "description": "Additional message properties." } ] } } } '@ Invoke-AzRestMethod -Path "/subscriptions/<subscription_id>/resourcegroups/<resource_group_name>/providers/microsoft.operationalinsights/workspaces/<workspace_name>/tables/<table_name>?api-version=2021-12-01-preview" -Method PUT -payload $tableParams
هام
- يجب أن تبدأ أسماء الأعمدة بحرف ويمكن أن تتكون من ما يصل إلى 45 حرفا أبجديا رقميا وتسطيرا أسفل السطر (
_
). _ResourceId
id
Type
Title
_ResourceId
_SubscriptionId
TenantId
UniqueId
أسماء الأعمدة المحجوزة و و.- تأتي أسماء الأعمدة مميزة لحالة الأحرف. تأكد من استخدام الحالة الصحيحة في قاعدة جمع البيانات.
إنشاء نقطة نهاية لجمع البيانات
لتجميع البيانات باستخدام قاعدة تجميع البيانات، تحتاج إلى نقطة نهاية لجمع البيانات:
إنشاء نقطة نهاية من أجل جمع البيانات.
هام
إنشاء نقطة نهاية تجميع البيانات في نفس المنطقة مثل مساحة عمل Log Analytics.
من شاشة نظرة عامة على نقطة نهاية جمع البيانات، حدد طريقة عرض JSON.
انسخ معرف المورد لقاعدة جمع البيانات. ستستخدم هذه المعلومات في الخطوة التالية.
إنشاء قاعدة تجميع البيانات
يستخدم Azure Monitor قواعد جمع البيانات لتحديد البيانات التي يجب جمعها، وكيفية تحويل تلك البيانات، ومكان إرسال البيانات.
لإنشاء قاعدة تجميع بيانات في مدخل Microsoft Azure:
في مربع البحث الخاص بالمدخل، اكتب قالب ثم حدد نشر قالب مخصص.
حدد Build your own template in the editor.
الصق قالب Resource Manager أدناه في المحرر ثم حدد Save.
لاحظ التفاصيل التالية في قاعدة جمع البيانات أدناه:
identity
- يحدد نوع الهوية المدارة التي يجب استخدامها. في مثالنا، نستخدم الهوية المعينة من قبل النظام. يمكنك أيضا تكوين الهوية المدارة المعينة من قبل المستخدم.dataCollectionEndpointId
- معرف المورد لنقطة نهاية جمع البيانات.streamDeclarations
- يحدد البيانات التي يجب استيعابها من مركز الأحداث (البيانات الواردة). لا يمكن تعديل إعلان الدفق.TimeGenerated
- الوقت الذي تم فيه استيعاب البيانات من مركز الأحداث إلى سجلات Azure Monitor.RawData
- نص الحدث. لمزيد من المعلومات، راجع قراءة الأحداث.Properties
- خصائص المستخدم من الحدث. لمزيد من المعلومات، راجع قراءة الأحداث.
datasources
- يحدد مجموعة مستهلكي مركز الحدث والدفق الذي تقوم ب استيعاب البيانات إليه.destinations
- يحدد جميع الوجهات التي سيتم إرسال البيانات إليها. يمكنك استيعاب البيانات إلى مساحة عمل واحدة أو أكثر من مساحات عمل Log Analytics.dataFlows
- يطابق الدفق مع مساحة العمل الوجهة ويحدد استعلام التحويل وجدول الوجهة. في مثالنا، ن استيعاب البيانات إلى الجدول المخصص الذي أنشأناه سابقا. يمكنك أيضا استيعاب في جدول Azure معتمد.transformKql
- تحديد تحويل لتطبيقه على البيانات الواردة (إعلان الدفق) قبل إرسالها إلى مساحة العمل. في مثالنا، قمنا بتعيينtransformKql
إلىsource
، الذي لا يعدل البيانات من المصدر بأي شكل من الأشكال، لأننا نقوم بتعيين البيانات الواردة إلى جدول مخصص أنشأناه خصيصا مع المخطط المقابل. إذا كنت تقوم ب استيعاب البيانات في جدول بمخطط مختلف أو لتصفية البيانات قبل الاستيعاب، فحدد تحويل تجميع البيانات.
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "dataCollectionRuleName": { "type": "string", "metadata": { "description": "Specifies the name of the data collection Rule to create." } }, "workspaceResourceId": { "type": "string", "metadata": { "description": "Specifies the Azure resource ID of the Log Analytics workspace to use." } }, "endpointResourceId": { "type": "string", "metadata": { "description": "Specifies the Azure resource ID of the data collection endpoint to use." } }, "tableName": { "type": "string", "metadata": { "description": "Specifies the name of the table in the workspace." } }, "consumerGroup": { "type": "string", "metadata": { "description": "Specifies the consumer group of event hub." }, "defaultValue": "$Default" } }, "resources": [ { "type": "Microsoft.Insights/dataCollectionRules", "name": "[parameters('dataCollectionRuleName')]", "location": "[resourceGroup().location]", "apiVersion": "2022-06-01", "identity": { "type": "systemAssigned" }, "properties": { "dataCollectionEndpointId": "[parameters('endpointResourceId')]", "streamDeclarations": { "Custom-MyEventHubStream": { "columns": [ { "name": "TimeGenerated", "type": "datetime" }, { "name": "RawData", "type": "string" }, { "name": "Properties", "type": "dynamic" } ] } }, "dataSources": { "dataImports": { "eventHub": { "consumerGroup": "[parameters('consumerGroup')]", "stream": "Custom-MyEventHubStream", "name": "myEventHubDataSource1" } } }, "destinations": { "logAnalytics": [ { "workspaceResourceId": "[parameters('workspaceResourceId')]", "name": "MyDestination" } ] }, "dataFlows": [ { "streams": [ "Custom-MyEventHubStream" ], "destinations": [ "MyDestination" ], "transformKql": "source", "outputStream": "[concat('Custom-', parameters('tableName'))]" } ] } } ] }
في شاشة النشر المخصص، حدد مجموعة الاشتراك والموارد لتخزين قاعدة جمع البيانات ثم قم بتوفير قيم للمعلمات المعرفة في القالب، بما في ذلك:
- المنطقة - المنطقة لقاعدة جمع البيانات. يتم ملؤها تلقائيا استنادا إلى مجموعة الموارد التي تحددها.
- اسم قاعدة تجميع البيانات - امنح القاعدة اسما.
- معرف مورد مساحة العمل - راجع جمع المعلومات المطلوبة.
- معرف مورد نقطة النهاية - يتم إنشاؤه عند إنشاء نقطة نهاية تجميع البيانات.
- اسم الجدول - اسم الجدول الوجهة. في مثالنا، وكلما استخدمت جدولا مخصصا، يجب أن ينتهي اسم الجدول باللاحقة _CL. إذا كنت تقوم ب استيعاب البيانات في جدول Azure، أدخل اسم الجدول - على سبيل المثال،
Syslog
- بدون اللاحقة. - مجموعة المستهلكين - بشكل افتراضي، يتم تعيين مجموعة المستهلكين إلى
$Default
. إذا لزم الأمر، قم بتغيير القيمة إلى مجموعة مستهلكين مركز أحداث مختلفة.
حدد Review + create ثم Create عند مراجعة التفاصيل.
عند اكتمال النشر، قم بتوسيع مربع Deployment details ، وحدد قاعدة جمع البيانات لعرض تفاصيلها. حدد طريقة عرض JSON.
انسخ معرف المورد لقاعدة جمع البيانات. ستستخدم هذه المعلومات في الخطوة التالية.
تكوين الهوية المدارة المعينة من قبل المستخدم (اختياري)
لتكوين قاعدة تجميع البيانات لدعم الهوية المعينة من قبل المستخدم، في المثال أعلاه، استبدل:
"identity": {
"type": "systemAssigned"
},
مع:
"identity": {
"type": "userAssigned",
"userAssignedIdentities": {
"<identity_resource_Id>": {
}
}
},
للعثور على <identity_resource_Id>
القيمة، انتقل إلى مورد الهوية المدارة المعين من قبل المستخدم في مدخل Microsoft Azure، وحدد JSON لفتح شاشة Resource JSON ونسخ معرف المورد للهوية المدارة.
استيعاب بيانات السجل في جدول Azure (اختياري)
لاستيعاب البيانات في جدول Azure مدعوم:
في قاعدة جمع البيانات، قم بتغيير
outputStream
:من:
"outputStream": "[concat('Custom-', parameters('tableName'))]"
ل:
"outputStream": "outputStream": "[concat(Microsoft-', parameters('tableName'))]"
في
transformKql
، حدد تحويلا يرسل البيانات التي تم استيعابها إلى الأعمدة الهدف في جدول Azure الوجهة.
منح إذن مركز الحدث إلى قاعدة جمع البيانات
باستخدام الهوية المدارة، يمكنك منح أي مركز أحداث أو مساحة اسم مراكز الأحداث إذنا لإرسال الأحداث إلى قاعدة جمع البيانات ونقطة نهاية جمع البيانات التي أنشأتها. عند منح الأذونات لمساحة اسم مراكز الأحداث، ترث جميع مراكز الأحداث داخل مساحة الاسم الأذونات.
من مركز الأحداث أو مساحة اسم مراكز الأحداث في مدخل Microsoft Azure، حدد Access Control (IAM)>Add role assignment.
حدد Azure Event Hubs Data Receiver وحدد Next.
حدد الهوية المدارة لتعيين الوصول إلى وانقر فوق تحديد الأعضاء. حدد قاعدة تجميع البيانات، وابحث عن قاعدة تجميع البيانات بالاسم، وانقر فوق تحديد.
حدد Review + assign وتحقق من التفاصيل قبل حفظ تعيين الدور.
إقران قاعدة جمع البيانات بمركز الحدث
الخطوة الأخيرة هي إقران قاعدة جمع البيانات بمركز الأحداث الذي تريد جمع الأحداث منه.
يمكنك إقران قاعدة تجميع بيانات واحدة بمراكز أحداث متعددة تشترك في نفس مجموعة المستهلكين و استيعاب البيانات بنفس الدفق. بدلا من ذلك، يمكنك إقران قاعدة جمع بيانات فريدة بكل مركز أحداث.
هام
يجب إقران قاعدة تجميع بيانات واحدة على الأقل بمركز الأحداث لاستيعاب البيانات من مركز أحداث. عند حذف كافة اقترانات قواعد جمع البيانات المتعلقة بمركز الأحداث، ستتوقف عن استيعاب البيانات من مركز الأحداث.
لإنشاء اقتران قاعدة تجميع البيانات في مدخل Microsoft Azure:
في مربع بحث مدخل Microsoft Azure، اكتب template، ثم حدد Deploy a custom template.
حدد Build your own template in the editor.
الصق قالب Resource Manager أدناه في المحرر ثم حدد Save.
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "eventHubResourceID": { "type": "string", "metadata": { "description": "Specifies the Azure resource ID of the event hub to use." } }, "associationName": { "type": "string", "metadata": { "description": "The name of the association." } }, "dataCollectionRuleID": { "type": "string", "metadata": { "description": "The resource ID of the data collection rule." } } }, "resources": [ { "type": "Microsoft.Insights/dataCollectionRuleAssociations", "apiVersion": "2021-09-01-preview", "scope": "[parameters('eventHubResourceId')]", "name": "[parameters('associationName')]", "properties": { "description": "Association of data collection rule. Deleting this association will break the data collection for this event hub.", "dataCollectionRuleId": "[parameters('dataCollectionRuleId')]" } } ] }
في شاشة النشر المخصص، حدد مجموعة الاشتراك والموارد لتخزين اقتران قاعدة تجميع البيانات ثم قم بتوفير قيم للمعلمات المحددة في القالب، بما في ذلك:
- المنطقة - يتم ملؤها تلقائيا استنادا إلى مجموعة الموارد التي تحددها.
- معرف مورد مثيل Event Hub - راجع تجميع المعلومات المطلوبة.
- اسم الاقتران - امنح الاقتران اسما.
- معرف قاعدة تجميع البيانات - يتم إنشاؤه عند إنشاء قاعدة تجميع البيانات.
حدد Review + create ثم Create عند مراجعة التفاصيل.
التحقق من الجدول الوجهة بحثا عن الأحداث التي تم استيعابها
تتولى سجلات Azure Monitor استيعاب جميع الأحداث الموجودة في Event Hub في وقت إنشاء DCRA، شريطة ألا تكون فترة الاستبقاء الخاصة بها قد انتهت، وجميع الأحداث الجديدة.
للتحقق من الجدول الوجهة بحثا عن الأحداث التي تم استيعابها:
انتقل إلى مساحة العمل الخاصة بك وحدد Logs.
اكتب استعلاما بسيطا في محرر الاستعلام وحدد تشغيل:
<table_name>
يجب أن تشاهد الأحداث من مركز الأحداث الخاص بك.
تنظيف الموارد
في هذا البرنامج التعليمي، قمت بإنشاء الموارد التالية:
- جدول مخصص
- نقطة نهاية تجميع البيانات
- قاعدة جمع البيانات
- اقتران قاعدة جمع البيانات
تقييم ما إذا كنت لا تزال بحاجة إلى هذه الموارد. احذف الموارد التي لا تحتاج إليها بشكل فردي، أو احذف جميع هذه الموارد في وقت واحد عن طريق حذف مجموعة الموارد. الموارد التي تتركها تعمل يمكن أن تكلفك بغض من المال.
لإيقاف استيعاب البيانات من مركز الأحداث، احذف جميع اقترانات قواعد تجميع البيانات المتعلقة بمركز الأحداث، أو احذف قواعد جمع البيانات نفسها. تقوم هذه الإجراءات أيضا بإعادة تعيين نقاط التحقق لمركز الأحداث.
المشكلات المعروفة والقيود
- إذا قمت بنقل اشتراك بين دلائل Microsoft Entra، فستحتاج إلى اتباع الخطوات الموضحة في المشكلات المعروفة مع الهويات المدارة لموارد Azure لمتابعة استيعاب البيانات.
- يمكنك استيعاب رسائل تصل إلى 64 كيلوبايت من مراكز الأحداث إلى سجلات Azure Monitor.
الخطوات التالية
تعرف على المزيد حول:
- إنشاء جدول مخصص.
- إنشاء نقطة نهاية من أجل جمع البيانات.
- تحديث قاعدة تجميع بيانات موجودة.