تمرين - توزيع الموارد الملحقة واستخدام الموارد الموجودة
الآن بعد أن انتهيت من إنشاء قاعدة البيانات ليستخدمها فريق البحث &التطوير لديك، تحتاج إلى التأكد من تسجيل الوصول إلى قاعدة البيانات. تتوفر لديك مساحة عمل موجودة في Log Analytics تريد إرسال هذه السجلات إليها. تحتاج أيضًا إلى إرسال السجلات من حساب التخزين لفريق البحث &التطوير إلى نفس مساحة عمل Log Analytics. في هذا التمرين، ستقوم بتحديث ملف Bicep الخاص بك لتلبية هذه المتطلبات.
أثناء العملية، ستقوم بما يلي:
- إنشاء مساحة عمل Log Analytics.
- قم بتحديث ملف Bicep لإضافة إعدادات تشخيصية إلى حساب Cosmos DB الخاص بك.
- إنشاء حساب تخزين.
- في ملف Bicep، قم بتحديث إعدادات التشخيص لحساب التخزين.
- قم بنشر القالب والتحقق من النتيجة.
إنشاء مساحة عمل Log Analytics
قم بإنشاء مساحة عمل Log Analytics لمحاكاة وجود مساحة تم إنشاؤها بالفعل في مؤسستك. استخدام Azure CLI بدلا من Bicep.
شغِّل أمر Azure CLI التالي في الوحدة الطرفية:
az monitor log-analytics workspace create \
--workspace-name ToyLogs \
--location eastus
قم بإنشاء مساحة عمل Log Analytics لمحاكاة وجود مساحة تم إنشاؤها بالفعل في مؤسستك. استخدم Azure PowerShell بدلاً من Bicep.
شغِّل أمر Azure PowerShell التالي في الوحدة الطرفية:
New-AzOperationalInsightsWorkspace `
-Name ToyLogs `
-Location eastus
ملاحظة
في هذا المثال، تعمل على توزيع مساحة عمل Log Analytics في نفس الاشتراك ومجموعة الموارد مثل مواردك الأخرى. في العديد من الحالات، ستقوم بتخزين مساحات عمل Log Analytics في مجموعات موارد ليست هي نفسها موارد التطبيق لديك. لا يزال بإمكان Bicep الإشارة إليها.
إضافة إعدادات التشخيص لـ Azure Cosmos DB
يحتاج فريق البحث &التطوير لديك إلى تسجيل جميع الطلبات إلى حساب Azure Cosmos DB. قررت استخدام تكامل Azure Monitor لـ Azure Cosmos DB لتجميع سجل DataPlaneRequests، الذي يحتوي على معلومات حول الطلبات إلى Azure Cosmos DB.
والآن، بعد أن أنشأت مساحة عمل Log Analytics الموجودة التي تمت محاكاتها مسبقًا، يمكنك الإشارة إليها من داخل قالب Bicep كمورد موجود. يمكنك استخدامه كوجهة لسجلات DB Cosmos Azure.
لإضافة إعدادات التشخيص، قم بما يلي:
في تعليمة Visual Studio البرمجية، افتح الملف main.bicep ثم أضف التعليمة البرمجية التالية أسفل تعريفات المتغير الموجودة:
var logAnalyticsWorkspaceName = 'ToyLogs' var cosmosDBAccountDiagnosticSettingsName = 'route-logs-to-log-analytics'في الجزء السفلي من الملف، أسفل تعريفات الموارد، أضف التعليمات البرمجية التالية:
resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2020-03-01-preview' existing = { name: logAnalyticsWorkspaceName }لاحظ أن تعريف المورد هذا يستخدم الكلمة الأساسية
existing، وأنك تغفل عمدًا الخصائص الأخرى التي تحددها عادةً إذا كنت تقوم بتوزيع مساحة عمل Log Analytics من خلال قالب Bicep هذا.أسفل التعليمات البرمجية التي قمت بإضافتها للتو، أضف التعليمات البرمجية التالية:
resource cosmosDBAccountDiagnostics 'Microsoft.Insights/diagnosticSettings@2017-05-01-preview' = { scope: cosmosDBAccount name: cosmosDBAccountDiagnosticSettingsName properties: { workspaceId: logAnalyticsWorkspace.id logs: [ { category: 'DataPlaneRequests' enabled: true } ] } }لاحظ أن هذه التعليمات البرمجية يتم من خلالها توزيع مورد ملحق. ويستخدم الكلمة الأساسية
scopeلإخبار Bicep أنه يجب إرفاق المورد بحساب Azure Cosmos DB. تستخدم التعليمات البرمجية أيضًا خاصيةidللمورد الموجودlogAnalyticsWorkspace، بحيث يفهم Azure المكان الذي سيرسل إليه سجلات Azure Cosmos DB.
إنشاء حساب تخزين لمستندات تصميم اللعبة
أنشئ حساب تخزين Azure لمحاكاة قيام فريق البحث &التطوير لديك بالفعل بإنشاء حساب في مؤسستك. استخدام Azure CLI بدلاً من Bicep.
شغِّل أمر Azure CLI التالي في الوحدة الطرفية. استبدل {storageaccountname} ليحل محله اسمًا من المحتمل أن يكون فريدًا. يجب أن يكون الاسم بالكامل بأحرف صغيرة، وأن يحتوي على 24 حرفًا أو أقل، وألا يحتوي على مسافات أو أحرف خاصة. احتفظ بملاحظة بالاسم لاستخدامها لاحقًا.
az storage account create \
--name {storageaccountname} \
--location eastus
أنشئ حساب تخزين Azure لمحاكاة قيام فريق البحث &التطوير لديك بالفعل بإنشاء حساب في مؤسستك. استخدم Azure PowerShell بدلاً من Bicep.
شغِّل أمر Azure PowerShell التالي في الوحدة الطرفية. استبدل {storageaccountname} ليحل محله اسمًا من المحتمل أن يكون فريدًا. يجب أن يكون الاسم بالكامل بأحرف صغيرة، وأن يحتوي على 24 حرفًا أو أقل، وألا يحتوي على مسافات أو أحرف خاصة.
New-AzStorageAccount `
-Name {storageaccountname} `
-Location eastus `
-SkuName Standard_LRS
إضافة إعدادات التشخيص لحساب التخزين
يريد فريق البحث &التطوير الخاص بك تسجيل جميع الطلبات الناجحة في حساب التخزين الذي قاموا بإنشائه. وتقرر استخدام تكامل Azure Storage مع سجلات Azure Monitor لتحقيق ذلك. وتقرر تسجيل جميع أنشطة القراءة والكتابة والحذف داخل تخزين البيانات الثنائية كبيرة الحجم على حساب التخزين لفريق البحث &التطوير.
تحتاج إلى تحديث قالب Bicep الخاص بك للإشارة إلى حساب التخزين الذي أنشأته في الخطوة السابقة.
بالقرب من أعلى الملف main.bicep أسفل تعريفات المعلمة، أضف تعريف المعلمة التالية:
param storageAccountName stringضمن تعريفات المتغير، أضف تعريف المتغير التالي:
var storageAccountBlobDiagnosticSettingsName = 'route-logs-to-log-analytics'في أسفل الملف، ضمن تعريفات الموارد، أضف ما يلي:
resource storageAccount 'Microsoft.Storage/storageAccounts@2019-06-01' existing = { name: storageAccountName resource blobService 'blobServices' existing = { name: 'default' } }لاحظ أن كلاً من هذه الموارد تستخدم الكلمة الأساسية
existing.في الجزء السفلي من الملف أسفل تعريف حساب التخزين الذي أضفته للتو، أضف ما يلي:
resource storageAccountBlobDiagnostics 'Microsoft.Insights/diagnosticSettings@2017-05-01-preview' = { scope: storageAccount::blobService name: storageAccountBlobDiagnosticSettingsName properties: { workspaceId: logAnalyticsWorkspace.id logs: [ { category: 'StorageRead' enabled: true } { category: 'StorageWrite' enabled: true } { category: 'StorageDelete' enabled: true } ] } }لاحظ أن المورد الملحق هذا يحتوي على
scopeمعينًا إلى المورد المتداخل الموجود. يفهم Bicep أنه يجب إرفاق المورد الملحق إلى المورد التابعblobServices.بعد الانتهاء، يجب أن يظهر قالب Bicep لديك كما يلي:
param cosmosDBAccountName string = 'toyrnd-${uniqueString(resourceGroup().id)}' param cosmosDBDatabaseThroughput int = 400 param location string = resourceGroup().location param storageAccountName string var cosmosDBDatabaseName = 'FlightTests' var cosmosDBContainerName = 'FlightTests' var cosmosDBContainerPartitionKey = '/droneId' var logAnalyticsWorkspaceName = 'ToyLogs' var cosmosDBAccountDiagnosticSettingsName = 'route-logs-to-log-analytics' var storageAccountBlobDiagnosticSettingsName = 'route-logs-to-log-analytics' resource cosmosDBAccount 'Microsoft.DocumentDB/databaseAccounts@2020-04-01' = { name: cosmosDBAccountName location: location properties: { databaseAccountOfferType: 'Standard' locations: [ { locationName: location } ] } } resource cosmosDBDatabase 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases@2020-04-01' = { parent: cosmosDBAccount name: cosmosDBDatabaseName properties: { resource: { id: cosmosDBDatabaseName } options: { throughput: cosmosDBDatabaseThroughput } } resource container 'containers' = { name: cosmosDBContainerName properties: { resource: { id: cosmosDBContainerName partitionKey: { kind: 'Hash' paths: [ cosmosDBContainerPartitionKey ] } } options: {} } } } resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2020-03-01-preview' existing = { name: logAnalyticsWorkspaceName } resource cosmosDBAccountDiagnostics 'Microsoft.Insights/diagnosticSettings@2017-05-01-preview' = { scope: cosmosDBAccount name: cosmosDBAccountDiagnosticSettingsName properties: { workspaceId: logAnalyticsWorkspace.id logs: [ { category: 'DataPlaneRequests' enabled: true } ] } } resource storageAccount 'Microsoft.Storage/storageAccounts@2019-06-01' existing = { name: storageAccountName resource blobService 'blobServices' existing = { name: 'default' } } resource storageAccountBlobDiagnostics 'Microsoft.Insights/diagnosticSettings@2017-05-01-preview' = { scope: storageAccount::blobService name: storageAccountBlobDiagnosticSettingsName properties: { workspaceId: logAnalyticsWorkspace.id logs: [ { category: 'StorageRead' enabled: true } { category: 'StorageWrite' enabled: true } { category: 'StorageDelete' enabled: true } ] } }احفظ التغييرات إلى الملف.
نشر القالب إلى Azure
شغِّل أمر Azure CLI التالي في الوحدة الطرفية. استبدل {storageaccountname} ليحل محله اسم حساب التخزين الذي أنشأته مسبقًا في هذا التمرين:
az deployment group create \
--template-file main.bicep \
--parameters storageAccountName={storageaccountname}
شغِّل أمر Azure PowerShell التالي في الوحدة الطرفية. استبدل {storageaccountname} ليحل محله اسم حساب التخزين الذي أنشأته مسبقًا في هذا التمرين:
New-AzResourceGroupDeployment `
-TemplateFile main.bicep `
-storageAccountName {storageaccountname}
التحقق من عملية نشرك
في المستعرض لديك، قم بالعودة إلى مدخل Azure. انتقل إلى مجموعة الموارد الخاصة بك. ستظل تشاهد عملية نشر ناجحة واحدة، لأن النشر قد استخدم الاسم نفسه لعملية النشر الأولى.
حدد رابط "1 Succeeded".
حدد عملية النشر باسم "main"، ثم حدد "Deployment details" لتوسيع قائمة الموارد التي تم نشرها.
لاحظ أن هناك موردين مدرجين بالنوع
Microsoft.Insights/diagnosticSettings. إنها تمثل موارد ملحقة قمت بتوزيعها. تم إرفاق أحد الموارد بحساب التخزين، والآخر تم إرفاقه بحساب Azure Cosmos DB. الآن، سوف تتحقق من أن إعدادات التشخيص لـ Azure Cosmos DB تم تكوينها بشكل صحيح.حدد مورد حساب Azure Cosmos DB. سيتم فتح المدخل إلى حساب Azure Cosmos DB.
في حقل Search في أعلى اليسار، أدخل Diagnostic settings واختر عنصر القائمة Diagnostic settings.
قد يطالبك مدخل Azure بتمكين دعم استعلام النص الكامل للتسجيل. لا تحتاج إليه لهذا التمرين، لذا حدد Not now.
لاحظ أن هناك إعداد تشخيص يسمى route-logs-to-log-analytics، والذي تم تكوينه لتوجيه السجلات إلى مساحة عمل ToyLogs.
إذا أردت، يمكنك أيضًا التحقق من أن حساب التخزين يحتوي على إعداد تشخيص مماثل تم تمكينه لتخزين كائنات blob.
هل تحتاج إلى مساعدة؟ راجع دليل استكشاف الأخطاء وإصلاحها الذي نقدمه أو يمكنك توفير ملاحظات معينة عبر الإبلاغ عن مشكلة.