Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Ekstensi Diagnostik Azure menyediakan kemampuan pemantauan dan diagnostik pada komputer virtual Azure berbasis Windows. Anda dapat mengaktifkan kemampuan ini pada komputer virtual dengan menyertakan ekstensi sebagai bagian dari templat Azure Resource Manager. Lihat Penulisan Templat Azure Resource Manager dengan Ekstensi VM untuk informasi selengkapnya tentang menyertakan ekstensi apa pun sebagai bagian dari templat komputer virtual. Artikel ini menjelaskan cara menambahkan ekstensi Azure Diagnostics ke templat komputer virtual windows.
Penting
Migrasi dari ekstensi Azure Diagnostic
Ekstensi Azure Diagnostics akan ditolak pada 31 Maret 2026. Setelah tanggal ini, Microsoft tidak akan lagi memberikan dukungan untuk ekstensi Diagnostik Azure.
Untuk memastikan dukungan dan akses berkelanjutan ke fitur baru, Anda harus bermigrasi dari ekstensi Diagnostik Azure untuk Linux (LAD) dan Windows (WAD) ke Agen Azure Monitor, yang dapat mengumpulkan data yang sama dan mengirimkannya ke beberapa tujuan termasuk ruang kerja Log Analytics, Azure Event Hubs, dan Azure Storage. Hapus LAD atau WAD setelah Anda mengonfigurasi Agen Azure Monitor untuk menghindari data duplikat.
Sebagai alternatif untuk penyimpanan, Anda harus mengirim data ke tabel dengan paket Tambahan di ruang kerja Analitik Log Anda untuk pengelogan hemat biaya.
Untuk memeriksa ekstensi mana yang diinstal pada satu VM, pilih Ekstensi + aplikasi di bawah Pengaturan pada VM Anda. Untuk meninjau ekstensi yang diinstal pada semua komputer virtual dalam langganan tempat Anda memiliki akses, gunakan kueri berikut di Azure Resource Graph:
resources
| where type contains "extension"
| extend parsedProperties = parse_json(properties)
| extend publisher = tostring(parsedProperties.publisher)
| project-away parsedProperties
| where publisher == "Microsoft.Azure.Diagnostics"
| distinct id
Ini menghasilkan hasil yang mirip dengan yang berikut ini:
Nota
Coba bantuan VM untuk diagnostik yang lebih cepat. Kami menyarankan agar Anda menjalankan VM assist untuk Windows atau VM assist untuk Linux. Alat diagnostik berbasis skrip ini membantu Anda mengidentifikasi masalah umum yang memengaruhi Agen Tamu Azure VM dan kesehatan VM secara keseluruhan.
Jika Anda mengalami masalah performa dengan komputer virtual, sebelum menghubungi dukungan, jalankan alat-alat ini.
Menambahkan ekstensi Azure Diagnostics ke definisi sumber daya VM
Untuk mengaktifkan ekstensi diagnostik pada Komputer Virtual Windows, Anda perlu menambahkan ekstensi sebagai sumber daya VM di templat Resource Manager.
Untuk Komputer Virtual berbasis Resource Manager sederhana, tambahkan konfigurasi ekstensi ke array sumber daya untuk Komputer Virtual:
"resources": [
{
"name": "Microsoft.Insights.VMDiagnosticsSettings",
"type": "extensions",
"location": "[resourceGroup().location]",
"apiVersion": "2015-06-15",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]"
],
"tags": {
"displayName": "AzureDiagnostics"
},
"properties": {
"publisher": "Microsoft.Azure.Diagnostics",
"type": "IaaSDiagnostics",
"typeHandlerVersion": "1.5",
"autoUpgradeMinorVersion": true,
"settings": {
"xmlCfg": "[base64(concat(variables('wadcfgxstart'), variables('wadmetricsresourceid'), variables('vmName'), variables('wadcfgxend')))]",
"storageAccount": "[parameters('existingdiagnosticsStorageAccountName')]"
},
"protectedSettings": {
"storageAccountName": "[parameters('existingdiagnosticsStorageAccountName')]",
"storageAccountKey": "[listkeys(variables('accountid'), '2015-05-01-preview').key1]",
"storageAccountEndPoint": "https://core.windows.net"
}
}
}
]
Konvensi umum lainnya adalah menambahkan konfigurasi ekstensi di simpul sumber daya akar templat alih-alih menentukannya di bawah simpul sumber daya komputer virtual. Dengan pendekatan ini, Anda harus secara eksplisit menentukan hubungan hierarki antara ekstensi dan komputer virtual dengan nilai nama dan jenis . Contohnya:
"name": "[concat(variables('vmName'),'Microsoft.Insights.VMDiagnosticsSettings')]",
"type": "Microsoft.Compute/virtualMachines/extensions",
Ekstensi selalu dikaitkan dengan komputer virtual, Anda dapat langsung menentukannya di bawah simpul sumber daya komputer virtual secara langsung atau menentukannya di tingkat dasar dan menggunakan konvensi penamaan hierarkis untuk mengaitkannya dengan komputer virtual.
Untuk Virtual Machine Scale Sets, konfigurasi ekstensi ditentukan dalam properti extensionProfile dari VirtualMachineProfile.
Properti penerbit dengan nilai Microsoft.Azure.Diagnostics dan properti jenis dengan nilai IaaSDiagnostics secara unik mengidentifikasi ekstensi Azure Diagnostics.
Nilai properti nama dapat digunakan untuk merujuk ke ekstensi dalam grup sumber daya. Mengaturnya secara khusus ke Microsoft.Insights.VMDiagnosticsSettings memungkinkannya untuk dengan mudah diidentifikasi oleh portal Microsoft Azure memastikan bahwa bagan pemantauan muncul dengan benar di portal Microsoft Azure.
TypeHandlerVersion menentukan versi ekstensi yang ingin Anda gunakan. Mengatur versi minor autoUpgradeMinorVersion ke true memastikan bahwa Anda mendapatkan versi Minor terbaru dari ekstensi yang tersedia. Sangat disarankan agar Anda selalu mengatur autoUpgradeMinorVersion agar selalu benar sehingga Anda selalu dapat menggunakan ekstensi diagnostik terbaru yang tersedia dengan semua fitur baru dan perbaikan bug.
Elemen pengaturan berisi properti konfigurasi untuk ekstensi yang dapat diatur dan dibaca kembali dari ekstensi (terkadang disebut sebagai konfigurasi publik). Properti xmlcfg berisi konfigurasi berbasis xml untuk log diagnostik, penghitung kinerja, dll. yang dikumpulkan oleh agen diagnostik. Lihat Skema Konfigurasi Diagnostik untuk informasi selengkapnya tentang skema xml itu sendiri. Praktik umumnya adalah menyimpan konfigurasi xml aktual sebagai variabel dalam templat Azure Resource Manager lalu menggabungkan dan mengodekan base64 untuk mengatur nilai xmlcfg. Lihat bagian tentang variabel konfigurasi diagnostik untuk memahami selengkapnya tentang cara menyimpan xml dalam variabel. Properti storageAccount menentukan nama akun penyimpanan tempat data diagnostik ditransfer.
Properti dalam protectedSettings (terkadang disebut sebagai konfigurasi privat) dapat diatur tetapi tidak dapat dibaca kembali setelah diatur. Sifat write-only dari protectedSettings membuatnya berguna untuk menyimpan rahasia seperti kunci akun penyimpanan tempat data diagnostik ditulis.
Menentukan akun penyimpanan diagnostik sebagai parameter
Cuplikan json ekstensi diagnostik di atas mengasumsikan dua parameter existingdiagnosticsStorageAccountName dan existingdiagnosticsStorageResourceGroup untuk menentukan akun penyimpanan diagnostik tempat data diagnostik disimpan. Menentukan akun penyimpanan diagnostik sebagai parameter memudahkan untuk mengubah akun penyimpanan diagnostik di berbagai lingkungan, misalnya Anda mungkin ingin menggunakan akun penyimpanan diagnostik yang berbeda untuk pengujian dan akun yang berbeda untuk penyebaran produksi Anda.
"existingdiagnosticsStorageAccountName": {
"type": "string",
"metadata": {
"description": "The name of an existing storage account to which diagnostics data is transfered."
}
},
"existingdiagnosticsStorageResourceGroup": {
"type": "string",
"metadata": {
"description": "The resource group for the storage account specified in existingdiagnosticsStorageAccountName"
}
}
Praktik terbaik adalah menentukan akun penyimpanan diagnostik dalam grup sumber daya yang berbeda dari grup sumber daya untuk komputer virtual. Grup sumber daya dapat dianggap sebagai unit penyebaran dengan masa pakainya sendiri, komputer virtual dapat disebarkan dan disebarkan ulang karena pembaruan konfigurasi baru dibuat untuk itu tetapi Anda mungkin ingin terus menyimpan data diagnostik di akun penyimpanan yang sama di seluruh penyebaran komputer virtual tersebut. Memiliki akun penyimpanan di sumber daya yang berbeda memungkinkan akun penyimpanan menerima data dari berbagai penyebaran komputer virtual sehingga mudah untuk memecahkan masalah di berbagai versi.
Nota
Jika Anda membuat templat komputer virtual windows dari Visual Studio, akun penyimpanan default mungkin diatur untuk menggunakan akun penyimpanan yang sama tempat komputer virtual VHD diunggah. Ini untuk menyederhanakan penyiapan awal VM. Faktori ulang templat untuk menggunakan akun penyimpanan berbeda yang dapat diteruskan sebagai parameter.
Variabel konfigurasi diagnostik
Cuplikan json ekstensi diagnostik sebelumnya mendefinisikan variabel accountid untuk menyederhanakan mendapatkan kunci akun penyimpanan untuk penyimpanan diagnostik:
"accountid": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/',parameters('existingdiagnosticsStorageResourceGroup'), '/providers/','Microsoft.Storage/storageAccounts/', parameters('existingdiagnosticsStorageAccountName'))]"
Properti xmlcfg untuk ekstensi diagnostik didefinisikan menggunakan beberapa variabel yang digabungkan bersama-sama. Nilai variabel ini berada dalam xml sehingga harus diloloskan dengan benar saat mengatur variabel json.
Contoh berikut menjelaskan xml konfigurasi diagnostik yang mengumpulkan penghitung kinerja tingkat sistem standar bersama dengan beberapa log peristiwa windows dan log infrastruktur diagnostik. Ini telah lolos dan diformat dengan benar sehingga konfigurasi dapat langsung ditempelkan ke bagian variabel templat Anda. Lihat Skema Konfigurasi Diagnostik untuk contoh xml konfigurasi yang lebih dapat dibaca manusia.
"wadlogs": "<WadCfg> <DiagnosticMonitorConfiguration overallQuotaInMB=\"4096\" xmlns=\"http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration\"> <DiagnosticInfrastructureLogs scheduledTransferLogLevelFilter=\"Error\"/> <WindowsEventLog scheduledTransferPeriod=\"PT1M\" > <DataSource name=\"Application!*[System[(Level = 1 or Level = 2)]]\" /> <DataSource name=\"Security!*[System[(Level = 1 or Level = 2)]]\" /> <DataSource name=\"System!*[System[(Level = 1 or Level = 2)]]\" /></WindowsEventLog>",
"wadperfcounters1": "<PerformanceCounters scheduledTransferPeriod=\"PT1M\"><PerformanceCounterConfiguration counterSpecifier=\"\\Processor(_Total)\\% Processor Time\" sampleRate=\"PT15S\" unit=\"Percent\"><annotation displayName=\"CPU utilization\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Processor(_Total)\\% Privileged Time\" sampleRate=\"PT15S\" unit=\"Percent\"><annotation displayName=\"CPU privileged time\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Processor(_Total)\\% User Time\" sampleRate=\"PT15S\" unit=\"Percent\"><annotation displayName=\"CPU user time\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Processor Information(_Total)\\Processor Frequency\" sampleRate=\"PT15S\" unit=\"Count\"><annotation displayName=\"CPU frequency\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\System\\Processes\" sampleRate=\"PT15S\" unit=\"Count\"><annotation displayName=\"Processes\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Process(_Total)\\Thread Count\" sampleRate=\"PT15S\" unit=\"Count\"><annotation displayName=\"Threads\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Process(_Total)\\Handle Count\" sampleRate=\"PT15S\" unit=\"Count\"><annotation displayName=\"Handles\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Memory\\% Committed Bytes In Use\" sampleRate=\"PT15S\" unit=\"Percent\"><annotation displayName=\"Memory usage\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Memory\\Available Bytes\" sampleRate=\"PT15S\" unit=\"Bytes\"><annotation displayName=\"Memory available\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Memory\\Committed Bytes\" sampleRate=\"PT15S\" unit=\"Bytes\"><annotation displayName=\"Memory committed\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Memory\\Commit Limit\" sampleRate=\"PT15S\" unit=\"Bytes\"><annotation displayName=\"Memory commit limit\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\% Disk Time\" sampleRate=\"PT15S\" unit=\"Percent\"><annotation displayName=\"Disk active time\" locale=\"en-us\"/></PerformanceCounterConfiguration>",
"wadperfcounters2": "<PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\% Disk Read Time\" sampleRate=\"PT15S\" unit=\"Percent\"><annotation displayName=\"Disk active read time\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\% Disk Write Time\" sampleRate=\"PT15S\" unit=\"Percent\"><annotation displayName=\"Disk active write time\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\Disk Transfers/sec\" sampleRate=\"PT15S\" unit=\"CountPerSecond\"><annotation displayName=\"Disk operations\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\Disk Reads/sec\" sampleRate=\"PT15S\" unit=\"CountPerSecond\"><annotation displayName=\"Disk read operations\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\Disk Writes/sec\" sampleRate=\"PT15S\" unit=\"CountPerSecond\"><annotation displayName=\"Disk write operations\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\Disk Bytes/sec\" sampleRate=\"PT15S\" unit=\"BytesPerSecond\"><annotation displayName=\"Disk speed\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\Disk Read Bytes/sec\" sampleRate=\"PT15S\" unit=\"BytesPerSecond\"><annotation displayName=\"Disk read speed\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\Disk Write Bytes/sec\" sampleRate=\"PT15S\" unit=\"BytesPerSecond\"><annotation displayName=\"Disk write speed\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\LogicalDisk(_Total)\\% Free Space\" sampleRate=\"PT15S\" unit=\"Percent\"><annotation displayName=\"Disk free space (percentage)\" locale=\"en-us\"/></PerformanceCounterConfiguration></PerformanceCounters>",
"wadcfgxstart": "[concat(variables('wadlogs'), variables('wadperfcounters1'), variables('wadperfcounters2'), '<Metrics resourceId=\"')]",
"wadmetricsresourceid": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name , '/providers/', 'Microsoft.Compute/virtualMachines/')]",
"wadcfgxend": "\"><MetricAggregation scheduledTransferPeriod=\"PT1H\"/><MetricAggregation scheduledTransferPeriod=\"PT1M\"/></Metrics></DiagnosticMonitorConfiguration></WadCfg>"
Simpul xml definisi Metrik dalam konfigurasi di atas adalah elemen konfigurasi penting karena menentukan bagaimana penghitung kinerja yang ditentukan sebelumnya dalam xml di simpul PerformanceCounter dikumpulkan dan disimpan.
Penting
Metrik ini mendorong bagan pemantauan dan pemberitahuan di portal Microsoft Azure. Simpul Metrik dengan resourceID dan MetricAggregation harus disertakan dalam konfigurasi diagnostik untuk VM Anda jika Anda ingin melihat data pemantauan VM di portal Microsoft Azure.
Contoh berikut menunjukkan xml untuk definisi metrik:
<Metrics resourceId="/subscriptions/subscription().subscriptionId/resourceGroups/resourceGroup().name/providers/Microsoft.Compute/virtualMachines/vmName">
<MetricAggregation scheduledTransferPeriod="PT1H"/>
<MetricAggregation scheduledTransferPeriod="PT1M"/>
</Metrics>
Atribut resourceID secara unik mengidentifikasi komputer virtual dalam langganan Anda. Pastikan untuk menggunakan fungsi subscription() dan resourceGroup() sehingga templat secara otomatis memperbarui nilai tersebut berdasarkan langganan dan grup sumber daya yang Anda sebarkan.
Jika Anda membuat beberapa Komputer Virtual dalam perulangan, Anda harus mengisi nilai resourceID dengan fungsi copyIndex() untuk membedakan setiap VM dengan benar. Nilai xmlCfg dapat diperbarui untuk mendukung ini sebagai berikut:
"xmlCfg": "[base64(concat(variables('wadcfgxstart'), variables('wadmetricsresourceid'), concat(parameters('vmNamePrefix'), copyindex()), variables('wadcfgxend')))]",
Nilai MetricAggregation PT1M dan PT1H menandakan agregasi masing-masing selama satu menit dan agregasi selama satu jam.
Tabel WADMetrics dalam penyimpanan
Konfigurasi Metrik di atas menghasilkan tabel di akun penyimpanan diagnostik Anda dengan konvensi penamaan berikut:
- WADMetrics: Awalan standar untuk semua tabel WADMetrics
- PT1H atau PT1M: Menandakan bahwa tabel berisi data agregat selama 1 jam atau 1 menit
- P10D: Menandakan tabel berisi data selama 10 hari sejak tabel mulai mengumpulkan data
- V2S: Konstanta string
- yyyymmdd: Tanggal tabel mulai mengumpulkan data
Contoh: WADMetricsPT1HP10DV2S20151108 berisi data metrik yang dikumpulkan selama satu jam selama 10 hari mulai dari 11-Nov-2015
Setiap tabel WADMetrics berisi kolom berikut:
-
PartitionKey: Kunci partisi dibangun berdasarkan nilai resourceID untuk mengidentifikasi sumber daya VM secara unik. Misalnya:
002Fsubscriptions:<subscriptionID>:002FresourceGroups:002F<ResourceGroupName>:002Fproviders:002FMicrosoft:002ECompute:002FvirtualMachines:002F<vmName> -
RowKey: Mengikuti format
<Descending time tick>:<Performance Counter Name>. Perhitungan tick waktu menurun adalah tanda waktu maksimum dikurangi waktu awal periode agregasi. Misalnya jika periode sampel dimulai pada 10-Nov-2015 dan 00:00Hrs UTC maka perhitungannya adalah:DateTime.MaxValue.Ticks - (new DateTime(2015,11,10,0,0,0,DateTimeKind.Utc).Ticks). Untuk performa byte memori yang tersedia, penghitung kunci baris terlihat seperti:2519551871999999999__:005CMemory:005CAvailable:0020Bytes - CounterName: Adalah nama penghitung kinerja. Ini cocok dengan counterSpecifier yang ditentukan dalam konfigurasi xml.
- Maksimum: Nilai maksimum penghitung kinerja selama periode agregasi.
- Minimum: Nilai minimum penghitung kinerja selama periode agregasi.
- Total: Jumlah semua nilai penghitung kinerja yang dilaporkan selama periode agregasi.
- Hitungan: Jumlah total nilai yang dilaporkan untuk penghitung kinerja.
- Rata-rata: Nilai rata-rata (total/hitungan) penghitung kinerja selama periode agregasi.
Langkah Selanjutnya
- Untuk contoh templat lengkap komputer virtual Windows dengan ekstensi diagnostik, lihat vm-monitoring-diagnostics-extension
- Menyebarkan templat Azure Resource Manager menggunakan Azure PowerShell atau Azure Command Line
- Pelajari selengkapnya tentang penulisan templat Azure Resource Manager