Bagikan melalui


Menggunakan ekstensi Application Health dengan Azure Virtual Machines

Memantau kesehatan aplikasi Anda adalah sinyal penting untuk mengelola VM Anda. Azure Virtual Machines menyediakan dukungan untuk Pemutakhiran Tamu VM Otomatis, yang mengandalkan pemantauan kesehatan setiap instans untuk memperbarui VM Anda secara aman.

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 di komputer virtual Azure.

Pemantauan kesehatan aplikasi juga tersedia pada set skala mesin virtual dan membantu mengaktifkan fungsionalitas seperti Peningkatan Bergulir, Peningkatan OS-Image Otomatis, dan Perbaikan Instans Otomatis. Untuk mengalami kemampuan ini dengan manfaat tambahan skala, ketersediaan, dan fleksibilitas pada set skala, Anda dapat melampirkan VM Anda ke set skala yang ada atau membuat set skala baru.

Nota

New! Coba bantuan VM untuk Diagnostik Yang Lebih CepatKami 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.

Prasyarat

Artikel ini mengasumsikan bahwa Anda terbiasa dengan ekstensi komputer virtual Azure.

Perhatian

Ekstensi Kesehatan Aplikasi mengharapkan untuk menerima respons probe yang konsisten di port tcp yang dikonfigurasi atau jalur permintaan http/https untuk memberi label VM sebagai Berfungsi. 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 dikirim ke titik akhir lokal.

Kapan harus menggunakan ekstensi Application Health

Ekstensi Kesehatan Aplikasi melaporkan kesehatan aplikasi dari dalam Komputer Virtual. Ekstensi memeriksa titik akhir aplikasi lokal dan memperbarui status kesehatan berdasarkan respons TCP/HTTP(S) yang diterima dari aplikasi. Status kesehatan ini digunakan oleh Azure untuk memantau dan mendeteksi kegagalan patching selama Patching Tamu VM Otomatis.

Ekstensi melaporkan status kesehatan dari dalam VM dan dapat digunakan dalam situasi ketika pemeriksaan eksternal, seperti pemeriksaan kesehatan Azure Load Balancer, tidak dapat digunakan.

Kesehatan aplikasi adalah sinyal yang disediakan pelanggan pada status aplikasi Anda yang berjalan di dalam VM. Kesehatan aplikasi berbeda dari kesehatan sumber daya, yang merupakan sinyal yang disediakan platform yang digunakan untuk melaporkan peristiwa tingkat layanan yang memengaruhi performa VM Anda.

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 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 masuk ke status Tidak Sehat jika aplikasi memberikan respon 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. Menginisialisasi status memungkinkan instans yang baru dibuat untuk menetap ke Status Kesehatan yang stabil sebelum memunculkan status kesehatan sebagai Sehat, Tidak Sehat, atau Tidak Diketahui.
Protokol HTTP/HTTPS Didukung Didukung
Protokol TCP Didukung Dukungan Terbatas – Status tidak tersedia pada protokol TCP karena tidak diketahui. Lihat tabel protokol Status Kesehatan Terpadu untuk melihat perilaku Status Kesehatan pada TCP.

1 Status Tidak Diketahui tidak tersedia pada protokol TCP. 2 Hanya berlaku untuk protokol HTTP/HTTPS. Protokol TCP mengikuti proses yang sama untuk mengidentifikasi instans Tidak Sehat seperti di Status Kesehatan Biner.

Gunakan 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

Gunakan Status Kesehatan Kaya 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 inisialisasi masa tenggang yang memungkinkan instans yang baru dibuat untuk berada dalam kondisi kesehatan yang stabil

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 ditandai sebagai Tidak Sehat jika kode respons 200 tidak diterima dari aplikasi.

Protokol TCP

Protokol Kondisi Kesehatan Deskripsi
PKT Sehat Untuk mengirim sinyal Sehat , jabat tangan yang berhasil harus dilakukan dengan titik akhir aplikasi yang disediakan.
PKT Tidak sehat Instans ditandai sebagai Tidak Sehat jika jabat tangan yang gagal atau tidak lengkap terjadi dengan titik akhir aplikasi yang disediakan.

Beberapa skenario umum yang mengakibatkan status Tidak Sehat meliputi:

  • Saat titik akhir aplikasi mengembalikan kode status non-200
  • Ketika tidak ada titik akhir aplikasi yang dikonfigurasi di dalam komputer virtual untuk memberikan status kesehatan aplikasi
  • Saat titik akhir aplikasi salah dikonfigurasi
  • Ketika titik akhir aplikasi tidak dapat dijangkau

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 Sehat, aplikasi diharapkan mengembalikan respons pengujian dengan: Kode Respons Probe: Status 2xx, Isi Respons Probe: {"ApplicationHealthState": "Healthy"}
http/https Tidak sehat Untuk mengirim sinyal Tidak Sehat, aplikasi diharapkan untuk mengirimkan kembali respons pemeriksaan 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
PKT Sehat Untuk mengirim sinyal Sehat , jabat tangan yang berhasil harus dilakukan dengan titik akhir aplikasi yang disediakan.
PKT Tidak sehat Instans ditandai sebagai Tidak Sehat jika jabat tangan yang gagal atau tidak lengkap terjadi dengan titik akhir aplikasi yang disediakan.
PKT 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 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 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, maka status kesehatan instans akan ditentukan sebagai berikut:

  • Protokol HTTP/HTTPS: Transisi kesehatan aplikasi dari Menginisialisasi ke Tidak Diketahui
  • Protokol TCP: Status kesehatan aplikasi beralih dari Memulai ke Tidak Stabil

Status tidak diketahui

Status Tidak Diketahui hanya berlaku untuk Status Kesehatan Kaya. Status ini hanya dilaporkan untuk http atau https sensor dan terjadi pada 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 ApplicationHealthState isi respons
  • Ketika masa tenggang berakhir

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 atau lebih tinggi tanggal
penerbit Microsoft.ManagedServices string
jenis ApplicationHealthLinux (Linux), ApplicationHealthWindows (Windows) string
typeHandlerVersion 1.0 string

Pengaturan

Nama Nilai / Contoh Jenis Data
protokol http atau https atau tcp string
port 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 string
intervalDalamDetik Opsional, defaultnya adalah 5 detik. Pengaturan ini adalah interval antara setiap pemeriksaan kesehatan. Misalnya, jika intervalInSeconds == 5, sebuah sonda dikirim ke endpoint aplikasi lokal setiap 5 detik sekali. Nilai minimum adalah 5 detik, maksimum adalah 60 detik. int (integer)
jumlahProbe Opsional, defaultnya adalah 1. Pengaturan 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 sonda, maksimum adalah 24 sonda. int (integer)

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. Sonde TCP juga didukung, tetapi tidak dapat diatur melalui isi respons sonde dan tidak memiliki akses ke status ApplicationHealthState.

{
  "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 atau lebih tinggi tanggal
penerbit Microsoft.ManagedServices string
jenis ApplicationHealthLinux (Linux), ApplicationHealthWindows (Windows) string
typeHandlerVersion 2.0 string

Pengaturan

Nama Nilai / Contoh Jenis Data
protokol http atau https atau tcp string
port 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 string
intervalDalamDetik Opsional, defaultnya adalah 5 detik. Pengaturan ini adalah interval antara setiap pemeriksaan kesehatan. Misalnya, jika intervalInSeconds == 5, sebuah sonda dikirim ke endpoint aplikasi lokal setiap 5 detik sekali. Nilai minimum adalah 5 detik, maksimum adalah 60 detik. int (integer)
jumlahProbe Opsional, defaultnya adalah 1. Pengaturan 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 24 sonda. int (integer)
masa tenggang Opsional, default = intervalInSeconds * numberOfProbes; masa tenggang maksimum adalah 14400 detik int (integer)

Menyebarkan ekstensi Application Health

Ada beberapa cara untuk menyebarkan ekstensi Application Health ke VM Anda sebagaimana dirinci dalam contoh berikut.

Status Kesehatan Biner

Contoh berikut menambahkan ekstensi Application Health bernama myHealthExtension ke komputer virtual berbasis Windows.

Anda juga dapat menggunakan contoh ini untuk mengubah ekstensi yang ada dari Rich Health States ke Binary Health dengan melakukan panggilan PATCH alih-alih PUT.

PUT on `/subscriptions/subscription_id/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM/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.

Status Kesehatan Kaya

Contoh berikut menambahkan ekstensi Application Health - Rich States (dengan nama myHealthExtension) ke komputer virtual 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/virtualMachines/myVM/extensions/myHealthExtension?api-version=2018-10-01`
{
  "name": "myHealthExtension",
  "location": "<location>", 
  "properties": {
    "publisher": "Microsoft.ManagedServices",
    "type": "ApplicationHealthWindows",
    "autoUpgradeMinorVersion": true,
    "typeHandlerVersion": "2.0",
    "settings": {
      "requestPath": "</requestPath>",
      "intervalInSeconds": <intervalInSeconds>,
      "numberOfProbes": <numberOfProbes>,
      "gracePeriod": <gracePeriod>
    }
  }
}

Gunakan PATCH untuk mengedit ekstensi yang sudah disebarkan.

Pemecahan Masalah

Perlu bantuan untuk mengonfigurasi respons sonda

Lihat sampel kesehatan aplikasi untuk contoh respons pemantauan kesehatan yang dikirim ke titik akhir lokal.

Lihat VMHealth

GET https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM/instanceView?api-version=2023-07-01

Respons Sampel (lihat objek "vmHealth" untuk status kesehatan VM terbaru)

"vmHealth": {
    "status": {
      "code": "HealthState/unknown",
      "level": "Warning",
      "displayStatus": "The VM health is unknown",
      "time": "2023-12-04T22:25:39+00:00"
    }
}

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.