Agregasi dan pengumpulan peristiwa menggunakan Windows Azure Diagnostics
Ketika Anda menjalankan kluster Azure Service Fabric, ada baiknya untuk mengumpulkan log dari semua node di lokasi pusat. Memiliki log di lokasi pusat membantu Anda menganalisis dan memecahkan masalah di kluster Anda, atau masalah dalam aplikasi dan layanan yang berjalan di kluster tersebut.
Salah satu cara untuk mengunggah dan mengumpulkan log adalah dengan menggunakan ekstensi Windows Azure Diagnostics (WAD), yang mengunggah log ke Azure Storage, dan juga memiliki opsi untuk mengirim log ke Azure Application Insights atau Azure Event Hubs. Anda juga dapat menggunakan proses eksternal untuk membaca peristiwa dari penyimpanan dan menempatkannya di produk platform analisis, seperti log Azure Monitor atau solusi penguraian log lainnya.
Catatan
Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Lihat Menginstal Azure PowerShell untuk memulai. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.
Prasyarat
Alat berikut ini digunakan dalam artikel ini:
Peristiwa platform Service Fabric
Service Fabric menyiapkan Anda dengan beberapa saluran pengelogan out-of-the-box, dan saluran berikut telah dikonfigurasi sebelumnya dengan ekstensi untuk mengirim data pemantauan dan diagnostik ke tabel penyimpanan atau di tempat lain:
- Peristiwa operasional: operasi tingkat lebih tinggi yang dilakukan platform Service Fabric. Contohnya termasuk pembuatan aplikasi dan layanan, perubahan status node, dan informasi peningkatan. Ini dikeluarkan sebagai Pelacakan Peristiwa untuk log Windows (ETW)
- Peristiwa model pemrograman Reliable Actor
- Peristiwa model pemrograman Reliable Service
Menyebarkan ekstensi Diagnostik melalui portal
Langkah pertama dalam mengumpulkan log adalah menyebarkan ekstensi Diagnostik pada skala mesin virtual set node di kluster Service Fabric. Ekstensi Diagnostik mengumpulkan log pada setiap VM dan mengunggahnya ke akun penyimpanan yang Anda tentukan. Langkah-langkah berikut menguraikan cara menyelesaikan ini untuk kluster baru dan yang sudah ada melalui portal Microsoft Azure dan templat Azure Resource Manager.
Menyebarkan ekstensi Diagnostik sebagai bagian dari pembuatan kluster melalui portal Microsoft Azure
Saat membuat kluster, dalam langkah konfigurasi kluster, perluas pengaturan opsional dan pastikan diagnostik diatur ke Nyala (pengaturan default).
Kami sangat menyarankan Anda mengunduh templat sebelum mengklik Buat di langkah terakhir. Untuk detailnya, lihat Menyiapkan kluster Service Fabric menggunakan templat Azure Resource Manager. Anda memerlukan templat untuk membuat perubahan pada saluran apa (tercantum di atas) Anda mengumpulkan data.
Sekarang, setelah Anda menggabungkan peristiwa di Penyimpanan Azure, siapkan log Azure Monitor untuk mendapatkan wawasan dan kueri di portal log Azure Monitor
Catatan
Saat ini tidak ada cara untuk memfilter atau merawat peristiwa yang dikirim ke tabel. Jika Anda tidak menerapkan proses untuk menghapus peristiwa dari tabel, tabel akan terus bertambah (batas defaultnya adalah 50 GB). Petunjuk tentang cara mengubahnya lebih lanjut di bawah ini pada artikel ini. Selain itu, ada contoh layanan perawatan data yang berjalan dalam sampel Watchdog, dan disarankan agar Anda menulisnya untuk diri Anda sendiri juga, kecuali ada alasan yang bisa diterima bagi Anda untuk menyimpan log di luar jangka waktu 30 atau 90 hari.
Menyebarkan ekstensi Diagnostik melalui Azure Resource Manager
Membuat kluster dengan ekstensi diagnostik
Untuk membuat kluster menggunakan Resource Manager, Anda perlu menambahkan konfigurasi Diagnostik JSON ke templat Resource Manager lengkap. Kami menyediakan contoh templat Manajer Sumber Daya kluster lima VM dengan konfigurasi Diagnostik yang ditambahkan ke dalamnya sebagai bagian dari sampel templat Resource Manager kami. Anda dapat melihatnya di lokasi ini di galeri Sampel Azure: Kluster lima-node dengan sampel templat Manajer Sumber Daya Diagnostik.
Untuk melihat pengaturan Diagnostik di templat Resource Manager, buka file azuredeploy.json dan cari IaaSDiagnostics. Untuk membuat kluster menggunakan templat ini, pilih tombol Sebarkan ke Azure yang tersedia di link sebelumnya.
Atau, Anda dapat mengunduh sampel Resource Manager, membuat perubahan, dan membuat kluster dengan templat yang dimodifikasi menggunakan perintah New-AzResourceGroupDeployment
di jendela Azure PowerShell. Lihat kode berikut untuk parameter yang Anda berikan ke perintah. Untuk informasi terperinci tentang cara menggunakan grup sumber daya menggunakan PowerShell, lihat artikel Menerapkan grup sumber daya dengan templat Azure Resource Manager.
Menambahkan ekstensi diagnostik ke kluster yang ada
Jika Anda memiliki kluster yang sudah ada yang tidak memiliki Diagnostik yang disebarkan, Anda dapat menambahkan atau memperbaruinya melalui templat kluster. Ubah templat Resource Manager yang digunakan untuk membuat kluster yang ada atau unduh templat dari portal seperti dijelaskan di awal. Ubah template.json dengan melakukan tugas berikut:
Tambahkan sumber daya penyimpanan baru ke templat dengan menambahkan ke bagian sumber daya.
{
"apiVersion": "2018-07-01",
"type": "Microsoft.Storage/storageAccounts",
"name": "[parameters('applicationDiagnosticsStorageAccountName')]",
"location": "[parameters('computeLocation')]",
"sku": {
"name": "[parameters('applicationDiagnosticsStorageAccountType')]"
"tier": "standard"
},
"tags": {
"resourceType": "Service Fabric",
"clusterName": "[parameters('clusterName')]"
}
},
Selanjutnya, tambahkan ke bagian parameter tepat setelah definisi akun penyimpanan, antara supportLogStorageAccountName
. Ganti nama akun penyimpanan teks tempat penampung di sini dengan nama akun penyimpanan yang Anda inginkan.
"applicationDiagnosticsStorageAccountType": {
"type": "string",
"allowedValues": [
"Standard_LRS",
"Standard_GRS"
],
"defaultValue": "Standard_LRS",
"metadata": {
"description": "Replication option for the application diagnostics storage account"
}
},
"applicationDiagnosticsStorageAccountName": {
"type": "string",
"defaultValue": "**STORAGE ACCOUNT NAME GOES HERE**",
"metadata": {
"description": "Name for the storage account that contains application diagnostics data from the cluster"
}
},
Selanjutnya, perbarui bagian file VirtualMachineProfile
template.json dengan menambahkan kode berikut dalam array ekstensi. Pastikan untuk menambahkan koma di awal atau akhir, tergantung di mana koma dimasukkan.
{
"name": "[concat(parameters('vmNodeType0Name'),'_Microsoft.Insights.VMDiagnosticsSettings')]",
"properties": {
"type": "IaaSDiagnostics",
"autoUpgradeMinorVersion": true,
"protectedSettings": {
"storageAccountName": "[parameters('applicationDiagnosticsStorageAccountName')]",
"storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('applicationDiagnosticsStorageAccountName')),'2015-05-01-preview').key1]",
"storageAccountEndPoint": "https://core.windows.net/"
},
"publisher": "Microsoft.Azure.Diagnostics",
"settings": {
"WadCfg": {
"DiagnosticMonitorConfiguration": {
"overallQuotaInMB": "50000",
"EtwProviders": {
"EtwEventSourceProviderConfiguration": [
{
"provider": "Microsoft-ServiceFabric-Actors",
"scheduledTransferKeywordFilter": "1",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricReliableActorEventTable"
}
},
{
"provider": "Microsoft-ServiceFabric-Services",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricReliableServiceEventTable"
}
}
],
"EtwManifestProviderConfiguration": [
{
"provider": "cbd93bc2-71e5-4566-b3a7-595d8eeca6e8",
"scheduledTransferLogLevelFilter": "Information",
"scheduledTransferKeywordFilter": "4611686018427387904",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricSystemEventTable"
}
},
{
"provider": "02d06793-efeb-48c8-8f7f-09713309a810",
"scheduledTransferLogLevelFilter": "Information",
"scheduledTransferKeywordFilter": "4611686018427387904",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricSystemEventTable"
}
}
]
}
}
},
"StorageAccount": "[parameters('applicationDiagnosticsStorageAccountName')]"
},
"typeHandlerVersion": "1.5"
}
}
Setelah mengubah file template.json seperti yang dijelaskan, terbitkan ulang templat Resource Manager. Jika templat diekspor, menjalankan file deploy.ps1 akan menerbitkan ulang templat tersebut. Setelah menyebarkan, pastikan provisioningState sudah berhasil.
Tip
Jika Anda akan menyebarkan kontainer ke kluster Anda, aktifkan WAD untuk mengambil statistik docker dengan menambahkan ini ke bagian WadCfg > DiagnosticMonitorConfiguration Anda.
"DockerSources": {
"Stats": {
"enabled": true,
"sampleRate": "PT1M"
}
},
Memperbarui kuota penyimpanan
Karena tabel yang diisi oleh ekstensi tumbuh hingga kuota tercapai, Anda mungkin ingin mempertimbangkan untuk mengurangi ukuran kuotanya. Nilai defaultnya adalah 50 GB dan dapat dikonfigurasi dalam templat di pada bidang overallQuotaInMB
di DiagnosticMonitorConfiguration
"overallQuotaInMB": "50000",
Konfigurasi pengumpulan log
Log dari saluran tambahan juga tersedia untuk koleksi, berikut adalah beberapa konfigurasi paling umum yang dapat Anda buat di templat untuk kluster yang berjalan di Azure.
Saluran Operasional - Basis: Diaktifkan secara default, operasi tingkat tinggi yang dilakukan oleh Service Fabric dan kluster, termasuk peristiwa untuk node yang akan datang, aplikasi baru yang sedang digunakan, atau gulung balik peningkatan, dll. Untuk daftar peristiwa, lihat Peristiwa Saluran Operasional.
"scheduledTransferKeywordFilter": "4611686018427387904"
Saluran Operasional - Terperinci: Ini mencakup laporan kesehatan dan keputusan load balancing, ditambah semua yang ada di saluran operasional dasar. Peristiwa ini dihasilkan oleh sistem atau kode Anda menggunakan API pelaporan kesehatan atau beban seperti ReportPartitionHealth atau ReportLoad. Untuk melihat peristiwa ini di Penampil Peristiwa Diagnostik Visual Studio, tambahkan "Microsoft-ServiceFabric:4:0x4000000000000008" ke daftar penyedia ETW.
"scheduledTransferKeywordFilter": "4611686018427387912"
Saluran Data dan Pesan - Dasar: Log dan peristiwa penting yang dihasilkan dalam pesan (saat ini hanya ReverseProxy) dan jalur data, selain log saluran operasional terperinci. Peristiwa ini adalah kegagalan pemrosesan permintaan dan masalah penting lainnya di ReverseProxy, serta permintaan yang diproses. Ini adalah rekomendasi kami untuk pencatatan yang komprehensif. Untuk melihat peristiwa ini di Penampil Peristiwa Diagnostik Visual Studio, tambahkan "Microsoft-ServiceFabric:4:0x4000000000000010" ke daftar penyedia ETW.
"scheduledTransferKeywordFilter": "4611686018427387928"
Data & Saluran Olahpesan - Terperinci: Saluran Verbose yang berisi semua log non-kritis dari data dan pesan dalam kluster dan saluran operasional terperinci. Untuk pemecahan masalah terperinci dari semua peristiwa proksi terbalik, lihat panduan diagnostik proksi terbalik. Untuk melihat peristiwa ini di penampil Peristiwa Diagnostik Visual Studio, tambahkan "Microsoft-ServiceFabric:4:0x4000000000000020" ke daftar penyedia ETW.
"scheduledTransferKeywordFilter": "4611686018427387944"
Catatan
Saluran ini memiliki volume peristiwa yang sangat tinggi, memungkinkan pengumpulan peristiwa dari saluran terperinci ini menghasilkan banyak jejak yang dihasilkan dengan cepat, dan dapat mengonsumsi kapasitas penyimpanan. Hanya aktifkan ini jika benar-benar diperlukan.
Untuk mengaktifkan Saluran Operasional Dasar, rekomendasi kami untuk pencatatan komprehensif dengan jumlah noise paling sedikit, EtwManifestProviderConfiguration
di WadCfg
ada di templat Anda akan terlihat seperti berikut ini:
"WadCfg": {
"DiagnosticMonitorConfiguration": {
"overallQuotaInMB": "50000",
"EtwProviders": {
"EtwEventSourceProviderConfiguration": [
{
"provider": "Microsoft-ServiceFabric-Actors",
"scheduledTransferKeywordFilter": "1",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricReliableActorEventTable"
}
},
{
"provider": "Microsoft-ServiceFabric-Services",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricReliableServiceEventTable"
}
}
],
"EtwManifestProviderConfiguration": [
{
"provider": "cbd93bc2-71e5-4566-b3a7-595d8eeca6e8",
"scheduledTransferLogLevelFilter": "Information",
"scheduledTransferKeywordFilter": "4611686018427387904",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricSystemEventTable"
}
},
{
"provider": "02d06793-efeb-48c8-8f7f-09713309a810",
"scheduledTransferLogLevelFilter": "Information",
"scheduledTransferKeywordFilter": "4611686018427387904",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricSystemEventTable"
}
}
]
}
}
},
Mengumpulkan dari saluran EventSource baru
Untuk memperbarui Diagnostik guna mengumpulkan log dari saluran EventSource baru yang mewakili aplikasi baru yang akan Anda terapkan, lakukan langkah yang sama seperti yang dijelaskan sebelumnya guna penyiapan Diagnostik untuk kluster yang ada.
Perbarui bagian EtwEventSourceProviderConfiguration
di file template.json guna menambahkan entri untuk saluran EventSource baru sebelum Anda menerapkan pembaruan konfigurasi menggunakan perintah New-AzResourceGroupDeployment
PowerShell. Nama sumber peristiwa didefinisikan sebagai bagian dari kode Anda dalam file ServiceEventSource.cs yang dihasilkan oleh Visual Studio.
Misalnya, jika sumber peristiwa Anda bernama My-Eventsource, tambahkan kode berikut untuk menempatkan peristiwa dari My-Eventsource ke dalam tabel bernama MyDestinationTableName.
{
"provider": "My-Eventsource",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "MyDestinationTableName"
}
}
Untuk mengumpulkan penghitung kinerja atau log kejadian, ubah templat Resource Manager menggunakan contoh yang disediakan dalam Membuat komputer virtual Windows dengan pemantauan dan diagnostik menggunakan templat Azure Resource Manager. Kemudian, terbitkan ulang templat Resource Manager.
Mengumpulkan Penghitung Performa
Untuk mengumpulkan metrik performa dari kluster Anda, tambahkan penghitung kinerja ke "WadCfg > DiagnosticMonitorConfiguration" di templat Resource Manager untuk kluster Anda. Lihat Pemantauan performa dengan WAD untuk langkah-langkah memodifikasi WadCfg
Anda untuk mengumpulkan penghitung performa tertentu. Lihat Penghitung Performa Service Fabric untuk penjelasan daftar penghitung kinerja yang kami sarankan untuk dikumpulkan.
Jika Anda menggunakan sink Application Insights, seperti yang dijelaskan di bagian di bawah ini, dan ingin metrik ini ditampilkan di Application Insights, pastikan untuk menambahkan nama sink di bagian "sink" seperti yang ditunjukkan di atas. Ini akan secara otomatis mengirim penghitung kinerja yang dikonfigurasi secara individual ke sumber daya Application Insights Anda.
Kirimkan log ke Application Insights
Mengonfigurasi Application Insights dengan EventFlow
Catatan
Ini hanya berlaku untuk kluster Windows saat ini.
Ada dua cara utama untuk mengirim data dari WAD ke Azure Application Insights, yang dicapai dengan menambahkan sink Application Insights ke konfigurasi WAD, melalui portal Microsoft Azure atau melalui templat Azure Resource Manager.
Menambahkan Kunci Instrumentasi Application Insights saat membuat kluster di portal Microsoft Azure
Saat membuat kluster, jika Diagnostik diaktifkan pada posisi "Aktif", bidang opsional untuk memasukkan kunci Instrumentasi Application Insights akan ditampilkan. Jika Anda menempelkan Kunci Application Insights di sini, sink Application Insights secara otomatis dikonfigurasi untuk Anda di template Resource Manager yang digunakan untuk menyebarkan kluster Anda.
Menambahkan Sink Application Insights ke templat Resource Manager
Di "WadCfg" pada templat Resource Manager, tambahkan "Sink" dengan menyertakan dua perubahan berikut:
Tambahkan konfigurasi sink langsung setelah deklarasi
DiagnosticMonitorConfiguration
selesai:"SinksConfig": { "Sink": [ { "name": "applicationInsights", "ApplicationInsights": "***ADD INSTRUMENTATION KEY HERE***" } ] }
Sertakan Sink di
DiagnosticMonitorConfiguration
dengan menambahkan baris berikut diDiagnosticMonitorConfiguration
dariWadCfg
(tepat sebelumEtwProviders
dinyatakan):"sinks": "applicationInsights"
Dalam kedua cuplikan kode sebelumnya, nama "applicationInsights" digunakan untuk menggambarkan sink. Ini bukan persyaratan dan selama nama sink disertakan dalam "sink", Anda dapat mengatur nama ke string apa pun.
Saat ini, log dari kluster muncul sebagai jejak dalam penampil log Application Insights. Karena sebagian besar jejak yang berasal dari platform berlevel "Informasi", Anda juga dapat mempertimbangkan untuk mengubah konfigurasi sink agar hanya mengirim log jenis "Peringatan" atau "Kesalahan". Tindakan ini dapat dilakukan dengan menambahkan "Saluran" ke sink Anda, seperti yang ditunjukkan dalam artikel ini.
Catatan
Jika Anda menggunakan Kunci Application Insights yang salah, baik di portal maupun di templat Resource Manager, Anda harus mengubah kunci tersebut secara manual dan memperbarui kluster/menyebarkan ulang.
Langkah berikutnya
Setelah Mengonfigurasi diagnostik Azure dengan benar, Anda akan melihat data dalam tabel Penyimpanan dari log ETW dan EventSource. Jika Anda memilih untuk menggunakan log Azure Monitor, Kibana, atau platform analitik dan visualisasi data lainnya yang tidak dikonfigurasi secara langsung di templat Manajer Sumber Daya, pastikan untuk menyiapkan platform pilihan Anda untuk membaca data dari tabel penyimpanan ini. Melakukan ini untuk log Azure Monitor relatif mudah, dan dijelaskan dalam Analisis peristiwa dan log. Application Insights adalah sedikit dari kasus khusus dalam pengertian ini, karena dapat dikonfigurasi sebagai bagian dari konfigurasi ekstensi Diagnostik, jadi lihat artikel yang sesuai jika Anda memilih untuk menggunakan AI.
Catatan
Saat ini tidak ada cara untuk memfilter atau memelihara peristiwa yang dikirim ke tabel. Jika Anda tidak menerapkan proses untuk menghapus peristiwa dari tabel, tabel akan terus bertambah. Saat ini, ada contoh layanan perawatan data yang berjalan dalam sampel Watchdog, dan disarankan agar Anda menulisnya untuk diri Anda sendiri juga, kecuali ada alasan yang bisa diterima bagi Anda untuk menyimpan log di luar jangka waktu 30 atau 90 hari.
- Pelajari cara mengumpulkan penghitung performa atau log menggunakan ekstensi Diagnostik
- Analisis Peristiwa dan Visualisasi dengan Application Insights
- Analisis dan Visualisasi Peristiwa dengan log Azure Monitor
- Analisis Peristiwa dan Visualisasi dengan Application Insights
- Analisis dan Visualisasi Peristiwa dengan log Azure Monitor