إرسال مقاييس نظام التشغيل الضيف إلى مخزن مقاييس Azure Monitor باستخدام قالب ARM لجهاز ظاهري يعمل بنظام Windows

لا يتم جمع بيانات الأداء من نظام التشغيل الضيف لأجهزة Azure الظاهرية (VMs) تلقائيا مثل مقاييس النظام الأساسي الأخرى. قم بتثبيت ملحق تشخيصات Azure Monitor لجمع مقاييس نظام التشغيل الضيف في قاعدة بيانات المقاييس بحيث يمكن استخدامها مع جميع ميزات مقاييس Azure Monitor. تتضمن هذه الميزات التنبيه في الوقت الفعلي تقريبا والتخطيط والتوجيه والوصول من واجهة برمجة تطبيقات REST. توضح هذه المقالة عملية إرسال مقاييس أداء نظام التشغيل الضيف لجهاز Windows الظاهري إلى قاعدة بيانات المقاييس باستخدام قالب Azure Resource Manager (قالب ARM).

إشعار

للحصول على تفاصيل حول تكوين ملحق التشخيص لجمع مقاييس نظام التشغيل الضيف باستخدام مدخل Microsoft Azure، راجع تثبيت وتكوين ملحق تشخيصات Windows Azure (WAD).

إذا كنت مستخدما جديدا لقوالب ARM، فتعرف على عمليات نشر القالب وبنيتها وبناء الجملة الخاصة بها.

المتطلبات الأساسية

قم بإعداد مراقب Azure كمستودع بيانات

يستخدم ملحق تشخيص Azure ميزة تسمى متلقي البيانات لتوجيه المقاييس والسجلات إلى مواقع مختلفة. توضح الخطوات التالية كيفية استخدام قالب ARM وPowerShell لنشر جهاز ظاهري باستخدام متلقي بيانات Azure Monitor الجديد.

قالب ARM

في هذا المثال، يمكنك استخدام عينة قالب متاح للجمهور. قوالب البدء موجودة على GitHub.

  • Azuredeploy.json: قالب ARM تم تكوينه مسبقا لنشر جهاز ظاهري.
  • Azuredeploy.parameters.json: ملف معلمات يخزن معلومات مثل اسم المستخدم وكلمة المرور التي تريد تعيينها لجهازك الظاهري. أثناء النشر، يستخدم قالب ARM المعلمات التي تم تعيينها في هذا الملف.

قم بتنزيل وحفظ الملفين محليًا.

تعديل azuredeploy.parameters.json

  1. افتح ملف azuredeploy.parameters.json .

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

  3. إنشاء فريد dnsname للجهاز الظاهري.

تعديل azuredeploy.json

  1. افتح ملف azuredeploy.json.

  2. أضف معرف حساب تخزين إلى variables قسم القالب بعد إدخال .storageAccountName

    // Find these lines.
    "variables": {
        "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'sawinvm')]",
    
    // Add this line directly below.
        "accountid": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]",
    
  3. أضف ملحق هوية الخدمة المدارة (MSI) هذا إلى القالب في أعلى resources القسم. يضمن الامتداد قبول Azure Monitor القياسات التي يتم إرسالها.

    //Find this code.
    "resources": [
    // Add this code directly below.
        {
            "type": "Microsoft.Compute/virtualMachines/extensions",
            "name": "[concat(variables('vmName'), '/', 'WADExtensionSetup')]",
            "apiVersion": "2017-12-01",
            "location": "[resourceGroup().location]",
            "dependsOn": [
                "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]" ],
            "properties": {
                "publisher": "Microsoft.ManagedIdentity",
                "type": "ManagedIdentityExtensionForWindows",
                "typeHandlerVersion": "1.0",
                "autoUpgradeMinorVersion": true,
                "settings": {
                    "port": 50342
                }
            }
        },
    
  4. identity أضف التكوين إلى مورد الجهاز الظاهري للتأكد من أن Azure يعين هوية نظام إلى ملحق MSI. تضمن هذه الخطوة أن الجهاز الظاهري يمكنه إرسال قياسات الضيف حول نفسه إلى Azure Monitor.

    // Find this section
                    "subnet": {
                "id": "[variables('subnetRef')]"
                }
            }
            }
        ]
        }
    },
    {
        "apiVersion": "2017-03-30",
        "type": "Microsoft.Compute/virtualMachines",
        "name": "[variables('vmName')]",
        "location": "[resourceGroup().location]",
        // add these 3 lines below
        "identity": {
        "type": "SystemAssigned"
        },
        //end of added lines
        "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
        "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
        ],
        "properties": {
        "hardwareProfile": {
        ...
    
  5. أضف التكوين التالي لتمكين ملحق التشخيص على جهاز ظاهري يعمل بنظام Windows. بالنسبة إلى جهاز ظاهري بسيط يستند إلى Resource Manager، يمكنك إضافة تكوين الملحق إلى صفيف الموارد للجهاز الظاهري. السطر "sinks": "AzMonSink"، والمطابق "SinksConfig" لاحقا في القسم ، قم بتمكين الملحق من إرسال المقاييس مباشرة إلى Azure Monitor. لا تتردد في إضافة أو إزالة عدادات الأداء حسب الحاجة.

            "networkProfile": {
                "networkInterfaces": [
                {
                    "id": "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]"
                }
                ]
            },
    "diagnosticsProfile": {
        "bootDiagnostics": {
        "enabled": true,
        "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]"
        }
    }
    },
    //Start of section to add
    "resources": [
    {
                "type": "Microsoft.Compute/virtualMachines/extensions",
                "name": "[concat(variables('vmName'), '/', 'Microsoft.Insights.VMDiagnosticsSettings')]",
                "apiVersion": "2017-12-01",
                "location": "[resourceGroup().location]",
                "dependsOn": [
                "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]"
                ],
                "properties": {
                "publisher": "Microsoft.Azure.Diagnostics",
                "type": "IaaSDiagnostics",
                "typeHandlerVersion": "1.12",
                "autoUpgradeMinorVersion": true,
                "settings": {
                    "WadCfg": {
                    "DiagnosticMonitorConfiguration": {
        "overallQuotaInMB": 4096,
        "DiagnosticInfrastructureLogs": {
                        "scheduledTransferLogLevelFilter": "Error"
            },
                        "Directories": {
                        "scheduledTransferPeriod": "PT1M",
        "IISLogs": {
                            "containerName": "wad-iis-logfiles"
                        },
                        "FailedRequestLogs": {
                            "containerName": "wad-failedrequestlogs"
                        }
                        },
                        "PerformanceCounters": {
                        "scheduledTransferPeriod": "PT1M",
                        "sinks": "AzMonSink",
                        "PerformanceCounterConfiguration": [
                            {
                            "counterSpecifier": "\\Memory\\Available Bytes",
                            "sampleRate": "PT15S"
                            },
                            {
                            "counterSpecifier": "\\Memory\\% Committed Bytes In Use",
                            "sampleRate": "PT15S"
                            },
                            {
                            "counterSpecifier": "\\Memory\\Committed Bytes",
                            "sampleRate": "PT15S"
                            }
                        ]
                        },
                        "WindowsEventLog": {
                        "scheduledTransferPeriod": "PT1M",
                        "DataSource": [
                            {
                            "name": "Application!*"
                            }
                        ]
                        },
                        "Logs": {
                        "scheduledTransferPeriod": "PT1M",
                        "scheduledTransferLogLevelFilter": "Error"
                        }
                    },
                    "SinksConfig": {
                        "Sink": [
                        {
                            "name" : "AzMonSink",
                            "AzureMonitor" : {}
                        }
                        ]
                    }
                    },
                    "StorageAccount": "[variables('storageAccountName')]"
                },
                "protectedSettings": {
                    "storageAccountName": "[variables('storageAccountName')]",
                    "storageAccountKey": "[listKeys(variables('accountid'),'2015-06-15').key1]",
                    "storageAccountEndPoint": "https://core.windows.net/"
                }
                }
            }
            ]
    //End of section to add
    
  6. حفظ كلا الملفين وإغلاقهما.

نشر قالب ARM

إشعار

يجب تشغيل إصدار ملحق Azure Diagnostics 1.5 أو أعلى وتعيين الخاصية autoUpgradeMinorVersion: إلى true في قالب ARM الخاص بك. ثم يقوم Azure بتحميل الامتداد المناسب عند بدء تشغيل الجهاز الظاهري. إذا لم تكن لديك هذه الإعدادات في القالب الخاص بك، فغيّرها وأعد نشر القالب.

لنشر قالب ARM، نستخدم Azure PowerShell.

  1. بدء تشغيل PowerShell.

  2. سجل الدخول إلى Azure باستخدام Login-AzAccount.

  3. احصل على قائمة اشتراكاتك باستخدام Get-AzSubscription.

  4. قم بتعيين الاشتراك الذي تستخدمه لإنشاء/تحديث الجهاز الظاهري في:

    Select-AzSubscription -SubscriptionName "<Name of the subscription>"
    
  5. لإنشاء مجموعة موارد جديدة للجهاز الظاهري الذي يتم نشره، قم بتشغيل الأمر التالي:

     New-AzResourceGroup -Name "<Name of Resource Group>" -Location "<Azure Region>"
    
  6. قم بتشغيل الأوامر التالية لنشر الجهاز الظاهري باستخدام قالب ARM.

    إشعار

    إذا كنت ترغب في تحديث جهاز ظاهري موجود، أضف -Mode Incremental إلى نهاية الأمر التالي.

    New-AzResourceGroupDeployment -Name "<NameThisDeployment>" -ResourceGroupName "<Name of the Resource Group>" -TemplateFile "<File path of your Resource Manager template>" -TemplateParameterFile "<File path of your parameters file>"
    
  7. بعد نجاح عملية التوزيع، يجب أن يكون الجهاز الظاهري موجوداً في مدخل Microsoft Azure، وينبعث القياسات إلى Azure Monitor.

    إشعار

    قد تواجه أخطاء حول المحدد vmSkuSize. إذا حدث هذا الخطأ، فارجع إلى ملف azuredeploy.json وقم بتحديث القيمة الافتراضية للمعلمة vmSkuSize . في هذه الحالة، نوصي بتجربة "Standard_DS1_v2").

مخطط القياسات الخاصة بك

  1. قم بتسجيل الدخول إلى بوابة Azure.

  2. في القائمة اليسرى، حدد Monitor.

  3. في صفحة المراقبة، حدد «المقاييس».

    Screenshot that shows the Metrics page.

  4. قم بتغيير فترة التجميع إلى Last 30 minutes.

  5. في القائمة المنسدلة للمورد، حدد الجهاز الظاهري الذي قمت بإنشائه. إذا لم تقم بتغيير الاسم في النموذج، فيجب أن يكون SimpleWinVM2.

  6. في القائمة المنسدلة namespaces، حدد azure.vm.windows.guestmetrics.

  7. في القائمة المنسدلة المقاييس، حدد Memory٪Committed Bytes في Use.

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

لمعرفة المزيد حول المقاييس المخصصة.