Memantau instans Azure App Service menggunakan pemeriksaan kesehatan

Artikel ini menggunakan Pemeriksaan kesehatan di portal Microsoft Azure untuk memantau instans Layanan Aplikasi. Pemeriksaan kesehatan meningkatkan ketersediaan aplikasi Anda dengan mengalihkan permintaan dari instans yang tidak sehat dan mengganti instans jika tetap tidak sehat. Itu dilakukan dengan melakukan ping setiap menit jalur aplikasi web pilihan Anda.

Kegagalan dalam pemeriksaan kesehatan

Perhatikan bahwa /api/health hanyalah contoh yang ditambahkan untuk tujuan ilustrasi. Kami tidak membuat jalur Pemeriksaan Kesehatan secara default. Anda harus memastikan bahwa jalur yang Anda pilih adalah jalur valid yang ada dalam aplikasi Anda

Apa yang dilakukan Azure App Service dengan pemeriksaan Kesehatan

  • Saat diberikan jalur pada aplikasi Anda, pemeriksaan kesehatan akan melakukan ping jalur ini pada semua instans aplikasi App Service Anda dengan interval 1 menit.
  • Jika aplikasi web yang berjalan pada instans tertentu tidak merespons dengan kode status antara 200-299 (inklusif) setelah 10 permintaan, App Service menentukannya tidak sehat dan menghapusnya dari load balancer untuk Aplikasi Web ini. Jumlah permintaan gagal yang diperlukan untuk instans yang dianggap tidak sehat dapat dikonfigurasi hingga minimal dua permintaan.
  • Setelah dihapus, pemeriksaan Kesehatan terus menghasilkan ping instans tidak sehat. Jika instans mulai merespons dengan kode status sehat (200-299), maka instans dikembalikan ke load balancer.
  • Jika aplikasi web yang berjalan pada instans tetap tidak sehat selama satu jam, instans diganti dengan yang baru.
  • Saat meluaskan skala, App Service melakukan ping pada jalur Pemeriksaan kesehatan untuk memastikan instans baru siap.

Catatan

  • Pemeriksaan kesehatan tidak mengikuti pengalihan 302.
  • Paling banyak satu instans akan diganti per jam, dengan maksimum tiga instans per hari per Paket Azure App Service.
  • Jika pemeriksaan kesehatan Anda memberikan status Waiting for health check response, maka pemeriksaan kemungkinan gagal karena kode status HTTP 307, yang dapat terjadi jika pengalihan HTTPS Anda diaktifkan tetapi HTTPS Only dinonaktifkan.

Aktifkan Pemeriksaan kesehatan

Navigasi pemeriksaan kesehatan di portal Azure

  1. Untuk mengaktifkan Pemeriksaan kesehatan, telusuri ke portal Microsoft Azure dan pilih aplikasi Layanan Aplikasi Anda.
  2. Di bawah Pemantauan, pilih Pemeriksaan kesehatan.
  3. Pilih Aktifkan dan sediakan jalur URL yang valid pada aplikasi Anda, seperti /health atau /api/health.
  4. Pilih Simpan.

Catatan

  • Paket App Service Anda harus diskalakan ke dua instans atau lebih untuk menggunakan pemeriksaan Kesehatan.
  • Jalur pemeriksaan kesehatan harus memeriksa komponen penting pada aplikasi Anda. Misalnya, jika aplikasi Anda bergantung pada database dan sistem pesan, titik akhir pemeriksaan kesehatan harus terhubung ke komponen tersebut. Jika aplikasi tidak dapat terhubung ke komponen penting, maka jalur seharusnya menampilkan kode respons 500 tingkat untuk menunjukkan aplikasi tersebut tidak sehat. Selain itu, jika jalur tidak mengembalikan respons dalam waktu 1 menit, ping pemeriksaan kesehatan dianggap tidak sehat.
  • Saat memilih jalur Pemeriksaan kesehatan, pastikan Anda memilih jalur yang mengembalikan kode status 200, hanya saat aplikasi dihangatkan sepenuhnya.
  • Untuk menggunakan Pemeriksaan kesehatan pada Aplikasi Fungsi Anda, Anda harus menggunakan paket hosting premium atau khusus.
  • Detail tentang Pemeriksaan kesehatan tentang Aplikasi Fungsi dapat ditemukan di sini: Memantau aplikasi fungsi menggunakan Pemeriksaan kesehatan.

Perhatian

Perubahan pada konfigurasi pemeriksaan kesehatan akan memulai ulang aplikasi Anda. Untuk meminimalkan dampak ke aplikasi produksi, sebaiknya konfigurasi slot pementasan dan bertukar ke produksi.

Konfigurasi

Selain mengonfigurasi opsi Pemeriksaan kesehatan, Anda juga dapat mengonfigurasi pengaturan aplikasi berikut:

Nama pengaturan aplikasi Nilai yang diizinkan Deskripsi
WEBSITE_HEALTHCHECK_MAXPINGFAILURES 2 -10 Jumlah permintaan yang gagal yang diperlukan untuk sebuah instans dianggap tidak sehat dan dihapus dari penyeimbang beban. Misalnya, saat diatur ke 2, instans Anda dihapus setelah 2 ping yang gagal. (Nilai defaultnya adalah 10)
WEBSITE_HEALTHCHECK_MAXUNHEALTHYWORKERPERCENT 1 - 100 Secara default, tidak lebih dari setengah dari instans akan dikecualikan dari penyeimbang beban pada satu waktu untuk menghindari membanjiri sisa waktu yang sehat. Misalnya, jika Paket App Service diskalakan ke empat instans dan tiga tidak sehat, dua dikecualikan. Dua instans lainnya (satu sehat dan satu tidak sehat) terus menerima permintaan. Dalam skenario terburuk di mana semua instans tidak sehat, tidak ada yang dikecualikan.
Untuk menimpa perilaku ini, atur pengaturan aplikasi ke nilai antara 1 dan 100. Nilai yang lebih tinggi berarti lebih banyak instans yang tidak sehat dihapus (nilai defaultnya adalah 50).

Autentikasi dan keamanan

Pemeriksaan kesehatan terintegrasi dengan fitur autentikasi dan otorisasi App Service. Tidak ada pengaturan lain yang diperlukan jika fitur keamanan ini diaktifkan.

Jika Anda menggunakan sistem autentikasi Anda sendiri, jalur Pemeriksaan kesehatan harus mengizinkan akses anonim. Untuk mengamankan titik akhir pemeriksaan Kesehatan, Anda harus terlebih dahulu menggunakan fitur seperti pembatasan IP, sertifikat klien, atau Microsoft Azure Virtual Network untuk membatasi akses aplikasi. Setelah memiliki fitur tersebut di tempat, Anda dapat mengautentikasi permintaan pemeriksaan kesehatan dengan memeriksa header, x-ms-auth-internal-token, dan memvalidasi bahwa permintaan itu cocok dengan hash SHA256 dari variabel lingkungan WEBSITE_AUTH_ENCRYPTION_KEY. Jika cocok, itu berarti permintaan pemeriksaan kesehatan valid dan berasal dari App Service.

Catatan

Khusus untuk autentikasi Azure Functions, fungsi yang berfungsi sebagai Titik akhir pemeriksaan kesehatan perlu memungkinkan akses anonim.

using System;
using System.Text;

/// <summary>
/// Method <c>HeaderMatchesEnvVar</c> returns true if <c>headerValue</c> matches WEBSITE_AUTH_ENCRYPTION_KEY.
/// </summary>
public Boolean HeaderMatchesEnvVar(string headerValue) {
    var sha = System.Security.Cryptography.SHA256.Create();
    String envVar = Environment.GetEnvironmentVariable("WEBSITE_AUTH_ENCRYPTION_KEY");
    String hash = System.Convert.ToBase64String(sha.ComputeHash(Encoding.UTF8.GetBytes(envVar)));
    return hash == headerValue;
}

Catatan

Header x-ms-auth-internal-token hanya tersedia di Windows App Service.

Instans

Setelah Pemeriksaan Kesehatan diaktifkan, Anda dapat memulai ulang dan memantau status instans aplikasi Anda melalui tab instans. Tab instans menunjukkan nama instans Anda, status instans aplikasi tersebut, dan memberi Anda opsi untuk menghidupkan ulang instans secara manual.

Jika status instans aplikasi Anda tidak sehat, Anda dapat memulai ulang instans secara manual menggunakan tombol hidupkan ulang dalam tabel. Perlu diingat bahwa aplikasi lain yang dihosting pada Paket App Service yang sama dengan instans juga akan dipengaruhi oleh mulai ulang. Jika ada aplikasi lain yang menggunakan Paket App Service yang sama dengan instans, aplikasi tersebut tercantum di bilah pembuka dari tombol hidupkan ulang.

Jika Anda memulai ulang instans dan proses hidupkan ulang gagal, Anda kemudian akan diberi opsi untuk mengganti pekerja (hanya 1 instans yang dapat diganti per jam). Ini juga akan memengaruhi aplikasi apa pun menggunakan Paket App Service yang sama.

Aplikasi Windows juga akan memiliki opsi untuk melihat proses melalui Process Explorer. Ini memberi Anda wawasan lebih lanjut tentang proses instans termasuk jumlah utas, memori privat, dan total waktu CPU.

Pengumpulan informasi diagnostik

Untuk aplikasi Windows, Anda memiliki opsi untuk mengumpulkan informasi diagnostik di tab Pemeriksaan Kesehatan. Mengaktifkan koleksi diagnostik menambahkan aturan pemulihan otomatis yang membuat cadangan memori untuk instans yang tidak sehat dan menyimpannya ke akun penyimpanan yang ditunjuk. Mengaktifkan opsi ini mengubah konfigurasi auto-heal. Jika ada aturan penyembuhan otomatis yang ada, sebaiknya siapkan ini melalui diagnostik App Service.

Setelah koleksi diagnostik diaktifkan, Anda dapat membuat atau memilih akun penyimpanan yang ada untuk file Anda. Anda hanya dapat memilih akun penyimpanan di wilayah yang sama dengan aplikasi Anda. Perlu diingat bahwa menyimpan menghidupkan ulang aplikasi Anda. Setelah menyimpan, jika instans situs Anda ditemukan tidak sehat setelah ping berkelanjutan, Anda dapat membuka sumber daya akun penyimpanan Anda dan melihat cadangan memori.

Pemantauan

Setelah menyediakan jalur pemeriksaan kesehatan untuk aplikasi Anda, Anda dapat memantau kesehatan situs Anda menggunakan Azure Monitor. Dari bilah Pemeriksaan kesehatan di Portal, pilih Metrik di bilah alat atas. Hal ini akan membuka bilah baru tempat Anda dapat melihat status kesehatan historis situs dan opsi untuk membuat aturan peringatan baru. Metrik pemeriksaan kesehatan mengagregasi kegagalan ping & tampilan yang berhasil hanya ketika instans dianggap tidak sehat berdasarkan konfigurasi pemeriksaan kesehatan. Untuk informasi selengkapnya tentang memantau situs Anda, lihat panduan di Azure Monitor.

Batasan

  • Pemeriksaan kesehatan diaktifkan untuk Paket App Service Gratis dan Bersama, sehingga Anda dapat memiliki metrik di kesehatan situs dan menyiapkan pemberitahuan, tetapi situs Gratis dan Bersama tidak dapat diluaskan skalanya, instans yang tidak sehat tidak akan diganti. Anda harus meningkatkan skala ke tingkat Dasar atau lebih tinggi sehingga Anda dapat meluaskan skala ke 2 instans atau lebih dan memanfaatkan keuntungan penuh dari Pemeriksaan kesehatan. Ini direkomendasikan untuk aplikasi yang menghadapi produksi karena akan meningkatkan ketersediaan dan performa aplikasi Anda.
  • Paket App Service dapat memiliki maksimum satu instans yang tidak sehat diganti per jam dan, paling banyak, tiga instans per hari.
  • Ada batas yang tidak dapat dikonfigurasi pada jumlah total instans yang digantikan oleh Pemeriksaan Kesehatan per unit skala. Jika batas ini tercapai, tidak ada instans yang tidak sehat yang diganti. Nilai ini akan diatur ulang setiap 12 jam.

Pertanyaan Umum

Apa yang terjadi jika aplikasi saya berjalan pada satu instans?

Jika aplikasi Anda hanya diskalakan ke satu instans dan menjadi tidak sehat, ini tidak akan dihapus dari penyeimbang beban karena itu akan menghapus aplikasi Anda sepenuhnya. Namun, setelah satu jam ping tidak sehat berkelanjutan, instans diganti. Perluas skala ke dua instans atau lebih untuk mendapatkan keuntungan perutean ulang dari Pemeriksaan kesehatan. Jika aplikasi Anda berjalan pada satu instans, Anda masih dapat menggunakan fitur pemantauan Pemeriksaan kesehatan untuk melacak kesehatan aplikasi Anda.

Mengapa permintaan pemeriksaan Kesehatan tidak muncul di log server web saya?

Permintaan pemeriksaan Kesehatan dikirim ke situs Anda secara internal, sehingga permintaan tidak akan ditampilkan di log server web. Anda dapat menambahkan pernyataan log dalam kode Pemeriksaan kesehatan untuk menyimpan log saat jalur Pemeriksaan kesehatan Anda di-ping.

Apakah permintaan Pemeriksaan kesehatan dikirim melalui HTTP atau HTTPS?

Pada Windows App Service, permintaan Pemeriksaan kesehatan dikirim melalui HTTPS saat HTTPS Saja diaktifkan di situs. Jika tidak, permintaan dikirim melalui HTTP. Pada App Service Linux, permintaan pemeriksaan kesehatan hanya dikirim melalui HTTP dan tidak dapat dikirim melalui HTTPS saat ini.

Apakah Pemeriksaan kesehatan mengikuti pengalihan kode aplikasi yang dikonfigurasi antara domain default dan domain kustom?

Tidak, fitur Pemeriksaan kesehatan melakukan ping jalur domain default aplikasi web. Jika ada pengalihan dari domain default ke domain kustom, maka kode status yang dikembalikan Pemeriksaan kesehatan tidak akan menjadi 200 tetapi pengalihan (301), yang akan menandai pekerja tidak sehat.

Bagaimana jika saya memiliki beberapa aplikasi pada Paket App Service yang sama?

Instans yang tidak sehat akan selalu dihapus dari rotasi penyeimbang beban terlepas dari aplikasi lain pada Paket App Service (hingga persentase yang ditentukan dalam WEBSITE_HEALTHCHECK_MAXUNHEALTHYWORKERPERCENT). Saat sebuah aplikasi pada suatu instans tetap tidak sehat selama lebih dari satu jam, instans hanya akan diganti jika semua aplikasi lain yang mengaktifkan Pemeriksaan kesehatan juga tidak sehat. Aplikasi yang tidak mengaktifkan Pemeriksaan kesehatan tidak akan dipertimbangkan.

Contoh

Bayangkan Anda memiliki dua aplikasi (atau satu aplikasi dengan slot) yang mengaktifkan Pemeriksaan kesehatan, yang disebut Aplikasi A dan Aplikasi B. Aplikasi tersebut berada di Paket App Service yang sama dan bahwa Paket diluaskan skalanya ke empat instans. Jika Aplikasi A menjadi tidak sehat pada dua instans, load balancer berhenti mengirim permintaan ke Aplikasi A pada dua instans tersebut. Permintaan masih dirutekan ke Aplikasi B pada instans tersebut dengan asumsi App B sehat. Jika App A tetap tidak sehat selama lebih dari satu jam pada kedua instans tersebut, instans tersebut hanya diganti jika App B juga tidak sehat pada instans tersebut. Jika App B sehat, instans tidak diganti.

Diagram visual yang menjelaskan contoh skenario di atas.

Catatan

Jika ada situs atau slot lain pada Paket (Situs C) tanpa Pemeriksaan kesehatan diaktifkan, itu tidak akan dipertimbangkan untuk penggantian instans.

Bagaimana jika semua kasus saya tidak sehat?

Dalam skenario di mana semua instans aplikasi Anda tidak sehat, App Service tidak akan menghapus instans dari load balancer. Dalam skenario ini, mengeluarkan semua instans aplikasi yang tidak sehat dari rotasi load balancer akan secara efektif menyebabkan pemadaman untuk aplikasi Anda; namun, penggantian instans akan tetap dihormati.

Apakah Pemeriksaan kesehatan berfungsi di Lingkungan App Service?

Ya, pemeriksaan kesehatan tersedia untuk App Service Environment v3, tetapi tidak untuk versi 1 atau 2. Jika Anda menggunakan versi App Service Environment yang lebih lama, Anda dapat menggunakan fitur migrasi untuk memigrasikan App Service Environment Anda ke versi 3.

Langkah berikutnya