Mengirim metrik OS tamu ke penyimpanan metrik Azure Monitor dengan menggunakan templat ARM untuk VM Windows

Data performa dari OS tamu komputer virtual (VM) Azure tidak dikumpulkan secara otomatis seperti metrik platform lainnya. Instal ekstensi Diagnostik Azure Monitor untuk mengumpulkan metrik OS tamu ke dalam database metrik sehingga dapat digunakan dengan semua fitur Metrik Azure Monitor. Fitur-fitur ini mencakup pemberitahuan, pembuatan bagan, perutean, dan akses hampir real time dari REST API. Artikel ini menjelaskan proses pengiriman metrik performa OS tamu untuk VM Windows ke database metrik dengan menggunakan templat Azure Resource Manager (templat ARM).

Catatan

Untuk detail tentang mengonfigurasi ekstensi diagnostik untuk mengumpulkan metrik OS tamu dengan menggunakan portal Azure, lihat Menginstal dan mengonfigurasi ekstensi Windows Azure Diagnostics (WAD).

Jika Anda baru menggunakan templat ARM, pelajari tentang penyebaran templat serta struktur dan sintaksnya.

Prasyarat

Menyiapkan Azure Monitor sebagai sink data

Ekstensi Azure Diagnostic menggunakan fitur yang disebut sink data untuk merutekan metrik dan log ke lokasi yang berbeda. Langkah-langkah berikut menunjukkan cara menggunakan templat ARM dan PowerShell untuk menyebarkan VM dengan menggunakan sink data Azure Monitor baru.

Templat ARM

Untuk contoh ini, Anda dapat menggunakan templat sampel yang tersedia secara umum. Templat awal ada di GitHub.

  • Azuredeploy.json: Templat ARM yang telah dikonfigurasi sebelumnya untuk penyebaran VM.
  • Azuredeploy.parameters.json: File parameter yang menyimpan informasi seperti nama pengguna dan kata sandi apa yang ingin Anda tetapkan untuk VM Anda. Selama penyebaran, templat ARM menggunakan parameter yang diatur dalam file ini.

Unduh dan simpan kedua file secara lokal.

Mengubah azuredeploy.parameters.json

  1. Buka file azuredeploy.parameters.json.

  2. Masukkan nilai untuk adminUsername dan adminPassword untuk VM. Parameter ini digunakan untuk akses jarak jauh ke VM. Untuk menghindari VM Anda dibajak, jangan gunakan nilai dalam templat ini. Bot memindai internet untuk nama pengguna dan kata sandi di repositori GitHub publik. Mereka mungkin akan menguji VM dengan default ini.

  3. Buat yang unik dnsname untuk VM.

Ubah azuredeploy.json

  1. Buka file azuredeploy.json.

  2. Tambahkan ID akun penyimpanan ke bagian variables templat setelah entri untuk storageAccountName.

    // Find these lines.
    "variables": {
        "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'sawinvm')]",
    
    // Add this line directly below.
        "accountid": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]",
    
  3. Tambahkan ekstensi Managed Service Identity (MSI) ini ke templat di bagian atas bagian resources . Ekstensi ini memastikan bahwa Azure Monitor menerima metrik yang sedang dipancarkan.

    //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 Tambahkan konfigurasi ke sumber daya VM untuk memastikan bahwa Azure menetapkan identitas sistem ke ekstensi MSI. Langkah ini memastikan bahwa VM dapat memancarkan metrik tamu tentang dirinya sendiri ke 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. Tambahkan konfigurasi berikut untuk mengaktifkan ekstensi diagnostik pada VM Windows. Untuk VM berbasis Resource Manager sederhana, Anda dapat menambahkan konfigurasi ekstensi ke array sumber daya untuk VM. Baris "sinks": "AzMonSink", dan yang sesuai "SinksConfig" nanti di bagian , aktifkan ekstensi untuk memancarkan metrik langsung ke Azure Monitor. Jangan ragu untuk menambahkan atau menghapus penghitung kinerja sesuai kebutuhan.

            "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. Simpan dan tutup kedua file tersebut.

Menyebarkan templat ARM

Catatan

Anda harus menjalankan ekstensi Azure Diagnostics versi 1.5 atau yang lebih tinggi dan mengatur properti ke autoUpgradeMinorVersion:true dalam templat ARM Anda. Azure kemudian memuat ekstensi yang tepat saat memulai VM. Jika Anda tidak memiliki pengaturan ini di templat, ubah dan sebarkan ulang templat tersebut.

Untuk menyebarkan templat ARM, kami menggunakan Azure PowerShell.

  1. Mulai PowerShell.

  2. Masuk ke Azure dengan menggunakan Login-AzAccount.

  3. Dapatkan daftar langganan Anda dengan menggunakan Get-AzSubscription.

  4. Atur langganan yang Anda gunakan untuk membuat/memperbarui VM di:

    Select-AzSubscription -SubscriptionName "<Name of the subscription>"
    
  5. Untuk membuat grup sumber daya baru untuk VM yang sedang disebarkan, jalankan perintah berikut ini:

     New-AzResourceGroup -Name "<Name of Resource Group>" -Location "<Azure Region>"
    

    Catatan

    Ingatlah untuk menggunakan wilayah Azure yang diaktifkan untuk metrik kustom.

  6. Jalankan perintah berikut untuk menyebarkan VM dengan menggunakan templat ARM.

    Catatan

    Jika Anda ingin memperbarui VM yang ada, tambahkan -Mode Bertambah Bertahas ke akhir perintah berikut.

    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. Setelah penyebaran Anda berhasil, VM seharusnya berada di portal Azure, memancarkan metrik ke Azure Monitor.

    Catatan

    Anda mungkin mengalami kesalahan di sekitar yang dipilih vmSkuSize. Jika kesalahan ini terjadi, kembali ke file azuredeploy.json Anda dan perbarui nilai vmSkuSize default parameter. Dalam hal ini, kami sarankan Anda mencoba "Standard_DS1_v2").

Buat bagan metrik Anda

  1. Masuk ke portal Azure.

  2. Di menu sebelah kiri, pilih Pemantauan.

  3. Pada halaman Monitor, pilih Metrics.

    Screenshot that shows the Metrics page.

  4. Ubah periode agregasi menjadi 30 menit terakhir.

  5. Di menu dropdown sumber daya, pilih VM yang Anda buat. Jika Anda tidak mengubah nama dalam templat, nama harus SimpleWinVM2.

  6. Di daftar dropdown namespace, pilih azure.vm.windows.guestmetrics.

  7. Dalam daftar dropdown metrik, pilih Memori%Byte yang Diterapkan dalam Penggunaan.

Langkah berikutnya

Pelajari selengkapnya tentang metrik kustom.