Memantau instans App Service dengan menggunakan Pemeriksaan kesehatan
Catatan
Mulai 1 Juni 2024, semua aplikasi App Service yang baru dibuat akan memiliki opsi untuk menghasilkan nama host default yang unik menggunakan konvensi <app-name>-<random-hash>.<region>.azurewebsites.net
penamaan . Nama aplikasi yang ada akan tetap tidak berubah.
Contoh: myapp-ds27dh7271aah175.westus-01.azurewebsites.net
Untuk detail lebih lanjut, lihat Nama Host Default Unik untuk Sumber Daya App Service.
Artikel ini menjelaskan cara menggunakan Pemeriksaan kesehatan di portal Azure untuk memantau instans App Service. 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 aplikasi web Anda setiap menit, melalui jalur yang Anda pilih.
Perhatikan bahwa /api/health hanyalah contoh. Tidak ada jalur Pemeriksaan kesehatan default. Anda harus memastikan bahwa jalur yang Anda pilih adalah jalur valid yang ada dalam aplikasi Anda.
Cara kerja Pemeriksaan kesehatan
- Saat diberi jalur di aplikasi Anda, Kesehatan memeriksa ping jalur pada semua instans aplikasi App Service Anda pada interval 1 menit.
- Jika aplikasi web yang berjalan pada instans tertentu tidak merespons dengan kode status antara 200 dan 299 (inklusif) setelah 10 permintaan, App Service menentukan instans tidak sehat dan menghapusnya dari load balancer untuk aplikasi web. Jumlah permintaan gagal yang diperlukan untuk instans yang dianggap tidak sehat dapat dikonfigurasi hingga minimal dua permintaan.
- Setelah instans dihapus, Pemeriksaan kesehatan terus melakukan ping. 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 App Service.
- Jika Pemeriksaan kesehatan mengirim status
Waiting for health check response
, maka pemeriksaan kemungkinan gagal karena kode status HTTP 307, yang dapat terjadi jika Anda mengaktifkan pengalihan HTTPS tetapi telahHTTPS Only
dinonaktifkan.
Aktifkan Pemeriksaan kesehatan
- Untuk mengaktifkan Pemeriksaan kesehatan, telusuri ke portal Microsoft Azure dan pilih aplikasi Layanan Aplikasi Anda.
- Di bawah Pemantauan, pilih Pemeriksaan kesehatan.
- Pilih Aktifkan dan berikan jalur URL yang valid untuk aplikasi Anda, seperti
/health
atau/api/health
. - 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 satu 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 harus menggunakan paket hosting premium atau khusus.
- Detail tentang Pemeriksaan kesehatan pada 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, ketika ini diatur ke 2 , instans Anda dihapus setelah 2 ping yang gagal. (Nilai defaultnya adalah 10 .) |
WEBSITE_HEALTHCHECK_MAXUNHEALTHYWORKERPERCENT |
1 - 100 | Secara default, untuk menghindari kewalahan instans sehat yang tersisa, tidak lebih dari setengah instans akan dikecualikan dari load balancer pada satu waktu. 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 di mana semua instans tidak sehat, tidak ada yang dikecualikan. Untuk mengambil alih perilaku ini, atur pengaturan aplikasi ini 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 memberikan keamanan untuk titik akhir Pemeriksaan kesehatan, Anda harus terlebih dahulu menggunakan fitur seperti pembatasan IP, sertifikat klien, atau jaringan virtual untuk membatasi akses aplikasi. Setelah Anda memiliki fitur tersebut, Anda dapat mengautentikasi permintaan Pemeriksaan kesehatan dengan memeriksa header x-ms-auth-internal-token
dan memvalidasi bahwa itu cocok dengan hash SHA256 dari variabel WEBSITE_AUTH_ENCRYPTION_KEY
lingkungan . Jika cocok, permintaan Pemeriksaan kesehatan valid dan berasal dari App Service.
Catatan
Untuk autentikasi Azure Functions, fungsi yang berfungsi sebagai titik akhir Pemeriksaan kesehatan perlu mengizinkan 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 App Service untuk Windows.
Instans
Setelah pemeriksaan Kesehatan diaktifkan, Anda dapat memulai ulang dan memantau status instans aplikasi Anda dari tab instans. Tab instans menunjukkan nama instans Anda dan status instans aplikasi tersebut. Anda juga dapat memulai ulang instans secara manual dari tab ini.
Jika status instans aplikasi Anda "tidak sehat," Anda dapat memulai ulang instans secara manual dengan menggunakan tombol hidupkan ulang dalam tabel. Perlu diingat bahwa aplikasi lain yang dihosting pada paket App Service yang sama dengan instans juga akan terpengaruh 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 akan diberi opsi untuk mengganti pekerja. (Hanya satu instans yang dapat diganti per jam.) Ini juga akan memengaruhi aplikasi apa pun menggunakan paket App Service yang sama.
Untuk aplikasi Windows, Anda juga dapat 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 pada 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 akun penyimpanan atau memilih yang sudah 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 toolbar atas. Ini membuka bilah baru tempat Anda dapat melihat riwayat status kesehatan situs dan membuat aturan pemberitahuan baru. Metrik pemeriksaan kesehatan mengagregasi kegagalan ping dan tampilan yang berhasil hanya ketika instans dianggap tidak sehat berdasarkan konfigurasi Pemeriksaan kesehatan. Untuk informasi selengkapnya tentang memantau situs Anda, lihat Kuota dan pemberitahuan Azure App Service.
Batasan
- Pemeriksaan kesehatan dapat diaktifkan untuk paket App Service Gratis dan Bersama , sehingga Anda dapat memiliki metrik pada kesehatan situs dan menyiapkan pemberitahuan. Namun, karena situs Gratis dan Bersama tidak dapat memperluas skala, instans yang tidak sehat tidak akan diganti. Anda harus meningkatkan skala ke tingkat Dasar atau lebih tinggi sehingga Anda dapat menskalakan ke dua instans atau lebih dan mendapatkan manfaat penuh dari Pemeriksaan kesehatan. Ini direkomendasikan untuk aplikasi yang menghadap produksi karena 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.
Tanya jawab umum
Apa yang terjadi jika aplikasi saya berjalan pada satu instans?
Jika aplikasi Anda hanya diskalakan ke satu instans dan menjadi tidak sehat, aplikasi tersebut tidak akan dihapus dari load balancer 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 App Service untuk Windows dan Linux, permintaan Pemeriksaan kesehatan dikirim melalui HTTPS saat HTTPS Saja diaktifkan di situs. Jika tidak, permintaan dikirim melalui HTTP.
Apakah Pemeriksaan kesehatan mengikuti pengalihan yang dikonfigurasi kode aplikasi antara domain default dan domain kustom?
Tidak, fitur Pemeriksaan kesehatan mem-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. Ini akan menjadi pengalihan (301), yang 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 load balancer terlepas dari aplikasi lain pada paket App Service (hingga persentase yang ditentukan dalam WEBSITE_HEALTHCHECK_MAXUNHEALTHYWORKERPERCENT
). Saat aplikasi pada instans tetap tidak sehat selama lebih dari satu jam, instans hanya akan diganti jika semua aplikasi lain tempat pemeriksaan Kesehatan diaktifkan juga tidak sehat. Aplikasi yang tidak mengaktifkan Pemeriksaan kesehatan tidak akan dipertimbangkan.
Contoh
Bayangkan Anda memiliki dua aplikasi (atau satu aplikasi dengan slot) dengan Pemeriksaan kesehatan diaktifkan. Mereka disebut Aplikasi A dan Aplikasi B. Mereka berada pada paket App Service yang sama, dan paket diskalakan 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 hanya diganti jika App B juga tidak sehat pada instans tersebut. Jika App B sehat, instans tidak diganti.
Catatan
Jika ada situs atau slot lain pada paket (Aplikasi C) tanpa pemeriksaan Kesehatan diaktifkan, itu tidak akan dipertimbangkan untuk penggantian instans.
Bagaimana jika semua kasus saya tidak sehat?
Jika semua instans aplikasi Anda tidak sehat, App Service tidak akan menghapus instans dari load balancer. Dalam skenario ini, mengambil semua instans aplikasi yang tidak sehat dari rotasi penyeimbang beban akan secara efektif menyebabkan pemadaman untuk aplikasi Anda. Namun, penggantian instans masih akan terjadi.
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 Lingkungan App Service Anda ke versi 3.