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.
Memantau kesehatan aplikasi Anda adalah sinyal penting untuk mengelola dan meningkatkan penyebaran Anda. Azure Virtual Machine Scale Sets menyediakan dukungan untuk Peningkatan Bergulir termasuk Peningkatan OS-Image Otomatis dan Patching Tamu VM Otomatis, yang mengandalkan pemantauan kesehatan instans individual untuk memperbarui pengaturan Anda. Anda juga dapat menggunakan Ekstensi Kesehatan Aplikasi untuk memantau kesehatan aplikasi setiap instans dalam set skala Anda dan melakukan perbaikan instans menggunakan Perbaikan Instans Otomatis.
Artikel ini menjelaskan bagaimana Anda dapat menggunakan dua jenis ekstensi Application Health, Status Kesehatan Biner atau Status Kesehatan Kaya, untuk memantau kesehatan aplikasi Anda yang disebarkan pada Set Skala Komputer Virtual.
Prasyarat
Artikel ini mengasumsikan bahwa Anda tidak asing dengan:
- Ekstensi mesin virtual Azure
- Memodifikasi Set Skala Komputer Virtual
Perhatian
Ekstensi Kesehatan Aplikasi mengharapkan untuk menerima tanggapan uji coba yang konsisten pada jalur permintaan http/https atau port tcp yang telah dikonfigurasi untuk memberi label VM sebagai Sehat. Jika tidak ada aplikasi yang berjalan pada VM, atau Anda tidak dapat mengonfigurasi respons pemeriksaan, VM Anda akan muncul sebagai Tidak Sehat (Status Kesehatan Biner) atau Tidak Diketahui (Status Kesehatan Kaya). Lihat sampel kesehatan aplikasi untuk contoh respons pemantauan kesehatan yang dikirimkan ke titik akhir lokal.
Catatan
Hanya satu sumber pemantauan kesehatan yang dapat digunakan untuk Virtual Machine Scale Set, yaitu Ekstensi Kesehatan Aplikasi atau Pemeriksaan Kesehatan. Jika Anda mengaktifkan kedua opsi, Anda harus menghapusnya sebelum menggunakan layanan orkestrasi seperti Perbaikan Instans atau Peningkatan OS Otomatis.
Kapan harus menggunakan ekstensi Application Health
Ekstensi Kesehatan Aplikasi disebarkan dalam instans Set Skala Komputer Virtual dan melaporkan kesehatan aplikasi dari dalam instans Set Skala. Pemeriksaan ekstensi pada titik akhir aplikasi lokal dan akan memperbarui status kesehatan berdasarkan respons TCP/HTTP(S) yang diterima dari aplikasi. Status kesehatan ini digunakan oleh Azure untuk memulai perbaikan pada instans yang tidak sehat dan untuk menentukan apakah instans memenuhi syarat untuk operasi peningkatan.
Ekstensi melaporkan status kesehatan dari dalam VM dan dapat digunakan dalam situasi di mana pemeriksaan eksternal seperti pemeriksaan kesehatan Azure Load Balancer tidak dapat digunakan.
Biner versus Status Kesehatan Kaya
Ekstensi Kesehatan Aplikasi memiliki dua opsi yang tersedia: Status Kesehatan Biner dan Status Kesehatan Kaya. Tabel berikut menyoroti beberapa perbedaan utama antara dua opsi. Lihat akhir bagian ini untuk rekomendasi umum.
| Fitur | Status Kesehatan Biner | Status Kesehatan Kaya |
|---|---|---|
| Status Kesehatan yang Tersedia | Dua status yang tersedia: Sehat, Tidak Sehat | Empat status yang tersedia: Sehat, Tidak Sehat, Inisialisasi, Tidak Diketahui1 |
| Mengirim Sinyal Kesehatan | Sinyal kesehatan dikirim melalui kode respons HTTP/HTTPS atau koneksi TCP. | Sinyal kesehatan pada protokol HTTP/HTTPS dikirim melalui kode respons probe dan isi respons. Sinyal kesehatan melalui protokol TCP tetap tidak berubah dari Status Kesehatan Biner. |
| Mengidentifikasi Instans Tidak Sehat | Instans akan secara otomatis jatuh ke status Tidak Sehat jika sinyal Sehat tidak diterima dari aplikasi. Instans yang tidak sehat dapat menunjukkan masalah dengan konfigurasi ekstensi (misalnya, titik akhir yang tidak dapat dijangkau) atau masalah dengan aplikasi (misalnya, kode status non-200). | Instans hanya akan masuk ke status Tidak Sehat jika aplikasi memancarkan respons pemeriksaan Tidak Sehat . Pengguna bertanggung jawab untuk menerapkan logika kustom untuk mengidentifikasi dan menandai instans dengan aplikasi Tidak Sehat2. Instans dengan pengaturan ekstensi yang salah (misalnya, titik akhir yang tidak dapat dijangkau) atau respons pemeriksaan kesehatan yang tidak valid akan berada di bawah status Tidak Diketahui2. |
| Menginisialisasi status untuk instans yang baru dibuat | Status inisialisasi tidak tersedia. Instans yang baru dibuat mungkin memakan waktu sebelum ditetapkan ke status stabil. | Status inisialisasi memungkinkan instans yang baru dibuat untuk mencapai Status Kesehatan yang stabil sebelum instans tersebut dapat dipilih untuk peningkatan bergulir atau operasi perbaikan instansnya. |
| Protokol HTTP/HTTPS | Didukung | Didukung |
| Protokol TCP | Didukung | Dukungan Terbatas – Keadaan tidak diketahui tidak tersedia pada protokol TCP. Lihat tabel protokol Negara Kesehatan Kaya untuk perilaku Negara Kesehatan di TCP. |
1 Status Tidak Diketahui tidak tersedia pada protokol TCP. 2 Hanya berlaku untuk protokol HTTP/HTTPS. Protokol TCP akan mengikuti proses yang sama untuk mengidentifikasi instans Tidak Sehat seperti di Status Kesehatan Biner.
Secara umum, Anda harus menggunakan Rich Health States jika:
- Anda mengirim sinyal kesehatan melalui protokol HTTP/HTTPS dan dapat menyampaikan informasi kesehatan melalui badan respons probe
- Anda ingin menggunakan logika kustom untuk mengidentifikasi dan menandai instans yang tidak sehat
- Anda ingin mengatur masa tenggang inisialisasi untuk instans yang baru dibuat, sehingga mereka bertransisi ke dalam Status Kesehatan yang stabil sebelum instans memenuhi syarat untuk pemutakhiran bergulir atau perbaikan instans.
- Anda tertarik untuk mendapatkan kontrol lebih atas proses pemesanan dan pembaruan dengan pembaruan bertahap, dengan menghadirkan metrik kustom.
Anda harus menggunakan Status Kesehatan Biner jika:
- Anda tidak tertarik untuk mengonfigurasi logika kustom untuk mengidentifikasi dan menandai instans yang tidak sehat
- Anda tidak memerlukan masa tenggang inisialisasi untuk instans yang baru dibuat
- Anda tidak perlu menggunakan metrik kustom saat melakukan peningkatan bergulir pada VM Anda
Status Kesehatan Kaya
Pelaporan Rich Health States berisi empat Status Kesehatan, Inisialisasi, Sehat, Tidak Sehat, dan Tidak Diketahui. Tabel berikut ini memberikan deskripsi singkat tentang bagaimana setiap Status Kesehatan dikonfigurasi.
Protokol HTTP/HTTPS
| Protokol | Kondisi Kesehatan | Deskripsi |
|---|---|---|
| http/https | Sehat | Untuk mengirim sinyal Healthy, aplikasi harus mengembalikan respons dengan: Probe Response Code: Status 2xx, Probe Response Body: {"ApplicationHealthState": "Healthy"} |
| http/https | Tidak sehat | Untuk mengirim sinyal Tidak Sehat, aplikasi diharapkan untuk mengembalikan respons probe dengan: Kode Respons Probe: Status 2xx, Isi Respons Probe: {"ApplicationHealthState": "Unhealthy"} |
| http/https | Menginisialisasi | Instans secara otomatis memasukkan status Inisialisasi pada waktu mulai ekstensi. Untuk informasi selengkapnya, lihat Menginisialisasi status. |
| http/https | Tidak dikenal | Status Tidak Diketahui dapat terjadi dalam skenario berikut: ketika kode status non-2xx dikembalikan oleh aplikasi, ketika waktu permintaan pemeriksaan habis, ketika titik akhir aplikasi tidak dapat dijangkau atau salah dikonfigurasi, ketika nilai yang hilang atau tidak valid disediakan untuk ApplicationHealthState dalam isi respons, atau ketika masa tenggang berakhir. Untuk informasi selengkapnya, lihat Status tidak diketahui. |
Protokol TCP
| Protokol | Kondisi Kesehatan | Deskripsi |
|---|---|---|
| TCP | Sehat | Untuk mengirim sinyal Sehat , jabat tangan yang berhasil harus dilakukan dengan titik akhir aplikasi yang disediakan. |
| TCP | Tidak sehat | Instans akan ditandai sebagai Tidak Sehat jika jabat tangan yang gagal atau tidak lengkap terjadi dengan titik akhir aplikasi yang disediakan. |
| TCP | Menginisialisasi | Instans secara otomatis memasukkan status Inisialisasi pada waktu mulai ekstensi. Untuk informasi selengkapnya, lihat Menginisialisasi status. |
Menginisialisasi status
Status ini hanya berlaku untuk Rich Health States. Status Inisialisasi hanya terjadi sekali pada waktu mulai ekstensi dan dapat dikonfigurasi oleh pengaturan gracePeriod ekstensi dan numberOfProbes.
Pada permulaan ekstensi, kesehatan aplikasi akan tetap dalam status Inisialisasi hingga salah satu dari dua skenario terjadi:
- Status Kesehatan yang sama (Sehat atau Tidak Sehat) dilaporkan beberapa kali berturut-turut seperti yang dikonfigurasi melalui numberOfProbes
- Ini akan kedaluwarsa
gracePeriod
Jika Status Kesehatan yang sama (Sehat atau Tidak Sehat) dilaporkan secara berturut-turut, kesehatan aplikasi akan beralih keluar dari status Inisialisasi dan ke Status Kesehatan yang dilaporkan (Sehat atau Tidak Sehat).
Contoh
Jika numberOfProbes = 3, itu berarti:
- Untuk transisi dari Menginisialisasi ke status Sehat : Ekstensi kesehatan aplikasi harus menerima tiga sinyal Sehat berturut-turut melalui protokol HTTP/HTTPS atau TCP
- Untuk beralih dari Menginisialisasi ke Status tidak sehat : Ekstensi kesehatan aplikasi harus menerima tiga sinyal Tidak Sehat berturut-turut melalui protokol HTTP/HTTPS atau TCP
Jika gracePeriod kedaluwarsa sebelum status kesehatan berturut-turut dilaporkan oleh aplikasi, status kesehatan instans akan ditentukan sebagai berikut:
- Protokol HTTP/HTTPS: Kesehatan aplikasi akan beralih dari Inisialisasi ke Tidak Diketahui
- Protokol TCP: Kesehatan aplikasi akan beralih dari Inisialisasi ke Tidak Sehat
Status tidak diketahui
Status ini hanya berlaku untuk Rich Health States. Status Tidak Diketahui hanya dilaporkan untuk pemeriksaan "http" atau "https" dan terjadi dalam skenario berikut:
- Ketika kode status non-2xx dikembalikan oleh aplikasi
- Ketika waktu permintaan pemeriksaan habis
- Ketika titik akhir aplikasi tidak dapat dijangkau atau dikonfigurasi dengan salah
- Ketika nilai yang hilang atau tidak valid disediakan dalam
ApplicationHealthStateisi respons - Ketika masa tenggang berakhir
Instans dalam status Tidak Diketahui diperlakukan mirip dengan instans Tidak Sehat . Jika diaktifkan, perbaikan instans akan dilakukan pada instans Tidak Diketahui saat peningkatan bergulir akan dijeda hingga instans kembali ke status Sehat .
Tabel berikut menunjukkan interpretasi status kesehatan untuk Peningkatan Bergulir dan Perbaikan Instans:
| Kondisi Kesehatan | Interpretasi Peningkatan Bergulir | Pemicu Aktivasi Perbaikan Instansi |
|---|---|---|
| Menginisialisasi | Tunggu status dalam Kondisi Sehat, Tidak Sehat, atau Tidak Diketahui | Tidak. |
| Sehat | Sehat | Tidak. |
| Tidak sehat | Tidak sehat | Ya |
| Tidak dikenal | Tidak sehat | Ya |
Skema ekstensi untuk Status Kesehatan Kaya
JSON berikut menunjukkan skema untuk ekstensi Rich Health States. Ekstensi ini memerlukan minimal permintaan "http" atau "https" dengan port terkait atau jalur permintaan masing-masing. Pemeriksaan TCP juga didukung, tetapi tidak akan dapat mengatur ApplicationHealthState melalui isi respons probe dan tidak akan memiliki akses ke status Tidak Diketahui .
{
"extensionProfile" : {
"extensions" : [
{
"name": "HealthExtension",
"properties": {
"publisher": "Microsoft.ManagedServices",
"type": "<ApplicationHealthLinux or ApplicationHealthWindows>",
"autoUpgradeMinorVersion": true,
"typeHandlerVersion": "2.0",
"settings": {
"protocol": "<protocol>",
"port": <port>,
"requestPath": "</requestPath>",
"intervalInSeconds": 5,
"numberOfProbes": 1,
"gracePeriod": 600
}
}
}
]
}
}
Nilai properti
| Nama | Nilai / Contoh | Jenis Data |
|---|---|---|
| apiVersion | 2018-10-01 |
tanggal |
| penerbit | Microsoft.ManagedServices |
benang |
| jenis |
ApplicationHealthLinux (Linux), ApplicationHealthWindows (Windows) |
benang |
| typeHandlerVersion | 2.0 |
benang |
Pengaturan
| Nama | Nilai / Contoh | Jenis Data |
|---|---|---|
| protokol |
http atau https atau tcp |
benang |
| pelabuhan | Opsional jika protokol adalah http atau https, wajib jika protokol adalah tcp |
int (integer) |
| requestPath | Wajib jika protokol adalah http atau https, tidak diizinkan jika protokol adalah tcp |
benang |
| intervalDalamDetik | Opsional, defaultnya adalah 5 detik. Ini adalah interval antara setiap pengecekan kesehatan. Misalnya, jika intervalInSeconds == 5, pemeriksaan akan dikirim ke titik akhir aplikasi lokal setiap 5 detik sekali. Nilai minimum adalah 5 detik, maksimum adalah 60 detik. | int (integer) |
| jumlahProbe | Opsional, defaultnya adalah 1. Ini adalah jumlah pemeriksaan berturut-turut yang diperlukan agar status kesehatan berubah. Misalnya, jika numberOfProbles == 3, Anda akan memerlukan 3 sinyal "Sehat" berturut-turut untuk mengubah status kesehatan dari "Tidak Sehat"/"Tidak Diketahui" menjadi status "Sehat". Persyaratan yang sama berlaku untuk mengubah status kesehatan menjadi status "Tidak Sehat" atau "Tidak Diketahui". Nilai minimum adalah 1 sonda, maksimum adalah 3 sonda. | int (integer) |
| masa tenggang | Opsional, default = intervalInSeconds * numberOfProbes; masa tenggang maksimum adalah 7200 detik |
int (integer) |
Status Kesehatan Biner
Pelaporan Status Kesehatan Biner berisi dua Status Kesehatan, Sehat dan Tidak Sehat. Tabel berikut ini memberikan deskripsi singkat tentang bagaimana Status Kesehatan dikonfigurasi.
Protokol HTTP/HTTPS
| Protokol | Kondisi Kesehatan | Deskripsi |
|---|---|---|
| http/https | Sehat | Untuk mengirim sinyal Sehat , aplikasi diharapkan mengembalikan kode respons 200. |
| http/https | Tidak sehat | Instans akan ditandai sebagai Tidak Sehat jika kode respons 200 tidak diterima dari aplikasi. |
Protokol TCP
| Protokol | Kondisi Kesehatan | Deskripsi |
|---|---|---|
| TCP | Sehat | Untuk mengirim sinyal Sehat , jabat tangan yang berhasil harus dilakukan dengan titik akhir aplikasi yang disediakan. |
| TCP | Tidak sehat | Instans akan ditandai sebagai Tidak Sehat jika jabat tangan yang gagal atau tidak lengkap terjadi dengan titik akhir aplikasi yang disediakan. |
Beberapa skenario yang dapat mengakibatkan status Tidak Sehat meliputi:
- Saat titik akhir aplikasi mengembalikan kode status non-200
- Ketika tidak ada titik akhir aplikasi yang dikonfigurasi di dalam instans komputer virtual untuk memberikan status kesehatan aplikasi
- Saat titik akhir aplikasi salah dikonfigurasi
- Ketika titik akhir aplikasi tidak dapat dijangkau
Skema ekstensi untuk Status Kesehatan Biner
JSON berikut menunjukkan skema untuk ekstensi Kesehatan Aplikasi. Ekstensi memerlukan minimum permintaan "tcp", "http" atau "https" dengan port terkait atau jalur permintaan masing-masing.
{
"extensionProfile" : {
"extensions" : [
{
"name": "HealthExtension",
"properties": {
"publisher": "Microsoft.ManagedServices",
"type": "<ApplicationHealthLinux or ApplicationHealthWindows>",
"autoUpgradeMinorVersion": true,
"typeHandlerVersion": "1.0",
"settings": {
"protocol": "<protocol>",
"port": <port>,
"requestPath": "</requestPath>",
"intervalInSeconds": 5,
"numberOfProbes": 1
}
}
}
]
}
}
Nilai properti
| Nama | Nilai / Contoh | Jenis Data |
|---|---|---|
| apiVersion | 2018-10-01 |
tanggal |
| penerbit | Microsoft.ManagedServices |
benang |
| jenis |
ApplicationHealthLinux (Linux), ApplicationHealthWindows (Windows) |
benang |
| typeHandlerVersion | 1.0 |
benang |
Pengaturan
| Nama | Nilai / Contoh | Jenis Data |
|---|---|---|
| protokol |
http atau https atau tcp |
benang |
| pelabuhan | Opsional jika protokol adalah http atau https, wajib jika protokol adalah tcp |
int (integer) |
| requestPath | Wajib jika protokol adalah http atau https, tidak diizinkan jika protokol adalah tcp |
benang |
| intervalDalamDetik | Opsional, defaultnya adalah 5 detik. Ini adalah interval antara setiap pengecekan kesehatan. Misalnya, jika intervalInSeconds == 5, pemeriksaan akan dikirim ke titik akhir aplikasi lokal setiap 5 detik sekali. Nilai minimum adalah 5 detik, maksimum adalah 60 detik. | int (integer) |
| jumlahProbe | Opsional, defaultnya adalah 1. Ini adalah jumlah pemeriksaan berturut-turut yang diperlukan agar status kesehatan berubah. Misalnya, jika numberOfProbles == 3, Anda akan memerlukan 3 sinyal "Sehat" berturut-turut untuk mengubah status kesehatan dari "Tidak Sehat" menjadi status "Sehat". Persyaratan yang sama berlaku untuk mengubah status kesehatan menjadi status "Tidak Sehat". Nilai minimum adalah 1 sensor, maksimum adalah 3 sensor. | int (integer) |
Menyebarkan ekstensi Application Health
Ada beberapa cara untuk menyebarkan ekstensi Application Health ke set skala Anda seperti yang dirinci dalam contoh berikut.
Status Kesehatan Kaya
Contoh berikut menambahkan ekstensi Application Health - Rich States (dengan nama myHealthExtension) ke extensionProfile dalam model skala set dari set skala berbasis Windows.
Anda juga dapat menggunakan contoh ini untuk meningkatkan ekstensi yang ada dari Biner ke Rich Health States dengan melakukan panggilan PATCH alih-alih PUT.
PUT on `/subscriptions/subscription_id/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/extensions/myHealthExtension?api-version=2018-10-01`
{
"name": "myHealthExtension",
"location": "<location>",
"properties": {
"publisher": "Microsoft.ManagedServices",
"type": "ApplicationHealthWindows",
"autoUpgradeMinorVersion": true,
"typeHandlerVersion": "2.0",
"settings": {
"protocol": "<protocol>",
"port": <port>,
"requestPath": "</requestPath>",
"intervalInSeconds": <intervalInSeconds>,
"numberOfProbes": <numberOfProbes>,
"gracePeriod": <gracePeriod>
}
}
}
Gunakan PATCH untuk mengedit ekstensi yang sudah disebarkan.
Tingkatkan VM untuk menginstal ekstensi.
POST on `/subscriptions/<subscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.Compute/virtualMachineScaleSets/< myScaleSet >/manualupgrade?api-version=2022-08-01`
{
"instanceIds": ["*"]
}
Status Kesehatan Biner
Contoh berikut menambahkan ekstensi Application Health (dengan nama myHealthExtension) ke extensionProfile dengan model set skala dari set skala berbasis Windows.
Anda bisa menggunakan contoh ini untuk mengubah ekstensi yang ada dari Status Kesehatan Kaya ke Status Kesehatan Biner dengan melakukan panggilan PATCH bukan PUT.
PUT on `/subscriptions/subscription_id/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/extensions/myHealthExtension?api-version=2018-10-01`
{
"name": "myHealthExtension",
"location": "<location>",
"properties": {
"publisher": "Microsoft.ManagedServices",
"type": "ApplicationHealthWindows",
"autoUpgradeMinorVersion": true,
"typeHandlerVersion": "1.0",
"settings": {
"protocol": "<protocol>",
"port": <port>,
"requestPath": "</requestPath>"
}
}
}
Gunakan PATCH untuk mengedit ekstensi yang sudah disebarkan.
Tingkatkan VM untuk menginstal ekstensi.
POST on `/subscriptions/<subscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.Compute/virtualMachineScaleSets/< myScaleSet >/manualupgrade?api-version=2022-08-01`
{
"instanceIds": ["*"]
}
Pecahkan masalah
Perlu bantuan untuk mengonfigurasi respons sonda
Lihat sampel kesehatan aplikasi untuk contoh respons pemeriksaan kesehatan yang dikirimkan ke titik akhir lokal.
Lihat VMHealth - instans tunggal
Get-AzVmssVM
-InstanceView `
-ResourceGroupName <rgName> `
-VMScaleSetName <vmssName> `
-InstanceId <instanceId>
Lihat VMHealth – panggilan batch
Ini hanya tersedia untuk Virtual Machine Scale Sets dengan orkestrasi Uniform.
GET on `/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachineScaleSets/<vmssName>/virtualMachines/?api-version=2022-03-01&$expand=instanceview`
Status Kesehatan tidak muncul
Jika Status Kesehatan tidak muncul di portal Azure atau melalui panggilan GET, periksa untuk memastikan bahwa VM ditingkatkan ke model terbaru. Jika VM tidak ada pada model terbaru, tingkatkan VM dan status kesehatan akan muncul.
Log output pelaksanaan ekstensi
Output eksekusi ekstensi disimpan dalam file yang ditemukan dalam direktori berikut:
C:\WindowsAzure\Logs\Plugins\Microsoft.ManagedServices.ApplicationHealthWindows\<version>\
/var/lib/waagent/Microsoft.ManagedServices.ApplicationHealthLinux-<extension_version>/status
/var/log/azure/applicationhealth-extension
Log juga menangkap status kesehatan aplikasi secara berkala.
Langkah berikutnya
Pelajari cara menyebarkan aplikasi Anda di Virtual Machine Scale Sets.