Sistem durumu denetimini kullanarak App Service örneklerini izleme

Bu makalede, App Service örneklerini izlemek için Azure portalında Sistem Durumu denetimi kullanılmaktadır. Sistem durumu denetimi, istekleri iyi durumda olmayan örneklerden uzağa yönlendirerek ve iyi durumda kalmaları durumunda örnekleri değiştirerek uygulamanızın kullanılabilirliğini artırır. Bunu, web uygulamanızın istediğiniz bir yoluna dakikada bir ping atarak yapar.

Sistem durumu denetimi hatası

/api/health'in yalnızca çizim amacıyla eklenen bir örnek olduğunu unutmayın. Varsayılan olarak bir Sistem Durumu Denetimi yolu oluşturmayız. Seçtiğiniz yolun, uygulamanız içinde mevcut olan geçerli bir yol olduğundan emin olmalısınız

App Service, Sistem durumu denetimleriyle ne yapar?

  • Uygulamanızda bir yol verildiğinde, Sistem Durumu denetimi bu yola App Service uygulamanızın tüm örneklerinde 1 dakikalık aralıklarla ping atar.
  • Belirli bir örnekte çalışan bir web uygulaması 10 istekten sonra 200-299 (dahil) arasında bir durum koduyla yanıt vermezse, App Service iyi durumda olmadığını belirler ve bu Web Uygulamasının yük dengeleyicisinden kaldırır. Bir örneğin iyi durumda olmadığını kabul etmek için gereken başarısız istek sayısı en az iki istekle yapılandırılabilir.
  • Sistem durumu denetimi kaldırıldıktan sonra iyi durumda olmayan örneğe ping göndermeye devam eder. Örnek iyi durumdaki bir durum koduyla (200-299) yanıt vermeye başlarsa, örnek yük dengeleyiciye döndürülür.
  • Bir örnekte çalışan web uygulaması bir saat boyunca iyi durumda değilse, örnek yenisiyle değiştirilir.
  • Ölçeği genişletirken App Service, yeni örneklerin hazır olduğundan emin olmak için Sistem Durumu denetim yoluna ping atar.

Not

  • Sistem durumu denetimi 302 yeniden yönlendirmelerini izlemez.
  • Saatte en fazla bir örnek değiştirilir ve App Service Planı başına günde en fazla üç örnek değiştirilebilir.
  • Durum denetiminiz durumu Waiting for health check response veriyorsa, 307 HTTP durum kodundan dolayı denetim başarısız olabilir. Bu durum, HTTPS yeniden yönlendirmesi etkinleştirildiyse ancak HTTPS Only devre dışı bırakıldıysa gerçekleşebilir.

Sistem Durumu denetimini etkinleştirme

Azure portalında sistem durumu denetimi gezintisi

  1. Sistem durumu denetimini etkinleştirmek için Azure portalına gidin ve App Service uygulamanızı seçin.
  2. İzleme'nin altında Sistem durumu denetimi'ne tıklayın.
  3. Etkinleştir'i seçin ve uygulamanızda veya /api/healthgibi /health geçerli bir URL yolu sağlayın.
  4. Kaydet'i seçin.

Not

  • App Service planınız, Sistem Durumu denetimini tam olarak kullanmak için iki veya daha fazla örneğe ölçeklendirilmelidir.
  • Sistem durumu denetim yolu, uygulamanızın kritik bileşenlerini denetlemelidir. Örneğin, uygulamanız bir veritabanına ve mesajlaşma sistemine bağımlıysa Sistem durumu denetimi uç noktasının bu bileşenlere bağlanması gerekir. Uygulama kritik bir bileşene bağlanamıyorsa, yolun uygulamanın iyi durumda olmadığını belirtmek için 500 düzeyinde bir yanıt kodu döndürmesi gerekir. Ayrıca, yol 1 dakika içinde yanıt döndürmezse sistem durumu denetimi ping'i iyi durumda değil olarak kabul edilir.
  • Sistem durumu denetim yolunu seçerken, yalnızca uygulama tamamen ısındığında 200 durum kodu döndüren bir yol seçtiğinizden emin olun.
  • İşlev Uygulamanızda Sistem Durumu denetimini kullanmak için premium veya ayrılmış bir barındırma planı kullanmanız gerekir.
  • İşlev Uygulamaları'nda Sistem Durumu denetimiyle ilgili ayrıntıları burada bulabilirsiniz: Sistem durumu denetimini kullanarak işlev uygulamalarını izleme.

Dikkat

Sistem durumu denetimi yapılandırma değişiklikleri uygulamanızı yeniden başlatır. Üretim uygulamaları üzerindeki etkiyi en aza indirmek için hazırlama yuvalarını yapılandırmanızı ve üretimle değiştirmenizi öneririz.

Yapılandırma

Sistem durumu denetimi seçeneklerini yapılandırmaya ek olarak, aşağıdaki uygulama ayarlarını da yapılandırabilirsiniz:

Uygulama ayarı adı İzin verilen değerler Açıklama
WEBSITE_HEALTHCHECK_MAXPINGFAILURES 2 - 10 Bir örneğin iyi durumda olmadığını kabul etmek ve yük dengeleyiciden kaldırılması için gerekli başarısız istek sayısı. Örneğin, olarak 2ayarlandığında örnekleriniz başarısız ping'lerden sonra 2 kaldırılır. (Varsayılan değer : 10)
WEBSITE_HEALTHCHECK_MAXUNHEALTHYWORKERPERCENT 1 - 100 Varsayılan olarak, kalan iyi durumdaki örneklerin aşırı yüklenmesini önlemek için örneklerin yarısından fazlası bir kerede yük dengeleyicinin dışında tutulmaz. Örneğin, bir App Service Planı dört örneğe ölçeklendirilirse ve üç örnek iyi durumda değilse, ikisi hariç tutulur. Diğer iki örnek (biri iyi durumda, biri iyi durumda değil) istekleri almaya devam eder. Tüm örneklerin iyi durumda olmadığı en kötü senaryoda, hiçbiri hariç tutulur.
Bu davranışı geçersiz kılmak için, uygulama ayarını ile 100arasında 1 bir değere ayarlayın. Daha yüksek bir değer, daha iyi durumda olmayan örneklerin kaldırılacağı anlamına gelir (varsayılan değer olur 50).

Kimlik doğrulaması ve güvenlik

Sistem durumu denetimi App Service'in kimlik doğrulaması ve yetkilendirme özellikleriyle tümleşir. Bu güvenlik özellikleri etkinse başka ayar gerekmez.

Kendi kimlik doğrulama sisteminizi kullanıyorsanız Sistem durumu denetim yolu anonim erişime izin vermelidir. Sistem durumu denetimi uç noktasının güvenliğini sağlamak için önce uygulama erişimini kısıtlamak için IP kısıtlamaları, istemci sertifikaları veya Sanal Ağ gibi özellikleri kullanmanız gerekir. Bu özelliklere sahip olduktan sonra üst bilgisini x-ms-auth-internal-tokeninceleyerek ve ortam değişkeninin WEBSITE_AUTH_ENCRYPTION_KEYSHA256 karmasıyla eşleşip eşleşmediğini doğrulayarak sistem durumu denetimi isteğinin kimliğini doğrulayabilirsiniz. Eşleşiyorsa, sistem durumu denetimi isteği geçerli ve App Service'ten kaynaklanır.

Not

Özellikle Azure İşlevleri kimlik doğrulaması için, Sistem durumu denetimi uç noktası işlevi görecek işlevin anonim erişime izin vermesi gerekir.

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;
}

Not

Üst x-ms-auth-internal-token bilgi yalnızca Windows App Service'te kullanılabilir.

Örnekler

Sistem Durumu Denetimi etkinleştirildikten sonra, örnekler sekmesi aracılığıyla uygulama örneklerinizin durumunu yeniden başlatabilir ve izleyebilirsiniz. Örnekler sekmesi örneğinizin adını, söz konusu uygulamanın örneğinin durumunu gösterir ve örneği el ile yeniden başlatma seçeneği sunar.

Uygulama örneğinizin durumu iyi durumda değilse, tablodaki yeniden başlatma düğmesini kullanarak örneği el ile yeniden başlatabilirsiniz. Örnekle aynı App Service Planında barındırılan diğer uygulamaların da yeniden başlatmadan etkileneceğini unutmayın. Örnekle aynı App Service Planını kullanan başka uygulamalar varsa, bunlar yeniden başlatma düğmesinden açılan dikey pencerede listelenir.

Örneği yeniden başlatırsanız ve yeniden başlatma işlemi başarısız olursa, çalışanı değiştirme seçeneği sunulur (saatte yalnızca 1 örnek değiştirilebilir). Bu, aynı App Service Planını kullanan tüm uygulamaları da etkiler.

Windows uygulamaları, İşlem Gezgini aracılığıyla işlemleri görüntüleme seçeneğine de sahip olur. Bu, iş parçacığı sayısı, özel bellek ve toplam CPU süresi dahil olmak üzere örneğin işlemleri hakkında daha fazla içgörü sağlar.

Tanılama bilgisi toplama

Windows uygulamaları için Sistem Durumu Denetimi sekmesinde tanılama bilgilerini toplama seçeneğiniz vardır. Tanılama koleksiyonunun etkinleştirilmesi, iyi durumda olmayan örnekler için bellek dökümleri oluşturan ve bunu belirlenmiş bir depolama hesabına kaydeden bir otomatik düzeltme kuralı ekler. Bu seçeneğin etkinleştirilmesi, otomatik düzeltme yapılandırmalarını değiştirir. Mevcut otomatik düzeltme kuralları varsa, bunu App Service tanılaması aracılığıyla ayarlamanızı öneririz.

Tanılama toplama etkinleştirildikten sonra, dosyalarınız için mevcut bir depolama hesabı oluşturabilir veya seçebilirsiniz. Yalnızca uygulamanızla aynı bölgedeki depolama hesaplarını seçebilirsiniz. Kaydetmenin uygulamanızı yeniden başlatdığını unutmayın. Kaydettikten sonra, sürekli ping işlemleri sonrasında site örneklerinizin iyi durumda olmadığını fark ederseniz depolama hesabı kaynağınıza gidebilir ve bellek dökümlerini görüntüleyebilirsiniz.

İzleme

Uygulamanızın Sistem Durumu denetim yolunu sağladıktan sonra Azure İzleyici'yi kullanarak sitenizin durumunu izleyebilirsiniz. Portaldaki Sistem Durumu denetimi dikey penceresinde üst araç çubuğundaki Ölçümler'i seçin. Bu, sitenin geçmiş sistem durumunu ve yeni bir uyarı kuralı oluşturma seçeneğini görebileceğiniz yeni bir dikey pencere açar. Sistem durumu denetimi ölçümleri, başarılı pingleri ve görüntüleme hatalarını yalnızca sistem durumu denetimi yapılandırmasına göre örneğin iyi durumda olmadığını kabul ettiğinde toplar. Sitelerinizi izleme hakkında daha fazla bilgi için Bkz. Azure İzleyici kılavuzu.

Sınırlamalar

  • Sitenin sistem durumu ve kurulum uyarılarında ölçümlere sahip olabilmeniz için Ücretsiz ve Paylaşılan App Service Planları için sistem durumu denetimi etkinleştirilebilir, ancak Ücretsiz ve Paylaşılan siteler ölçeği genişletemediğinden, iyi durumda olmayan örneklerin hiçbiri değiştirilmez. Ölçeği 2 veya daha fazla örneğe genişletebilmek ve Sistem Durumu denetiminin tüm avantajlarından yararlanabilmek için Temel katmana veya daha yüksek bir katmana yükseltmeniz gerekir. Bu, uygulamanızın kullanılabilirliğini ve performansını artıracağı için üretime yönelik uygulamalar için önerilir.
  • App Service planında saatte en fazla bir iyi durumda olmayan örnek ve günde en fazla üç örnek değiştirilebilir.
  • Ölçek birimi başına Sistem Durumu Denetimi ile değiştirilen toplam örnek sayısı üzerinde yapılandırılamaz bir sınır vardır. Bu sınıra ulaşılırsa, iyi durumda olmayan örnekler değiştirilmez. Bu değer 12 saatte bir sıfırlanır.

Sık Sorulan Sorular

Uygulamam tek bir örnekte çalışıyorsa ne olur?

Uygulamanız yalnızca bir örneğe ölçeklendirilir ve iyi durumda değilse yük dengeleyiciden kaldırılmaz çünkü bu durum uygulamanızı tamamen çöker. Ancak, bir saatlik sürekli iyi durumda olmayan pinglerden sonra örnek değiştirilir. Sistem durumu denetiminin yeniden yönlendirme avantajını elde etmek için ölçeği iki veya daha fazla örneğe genişletin. Uygulamanız tek bir örnekte çalışıyorsa, uygulamanızın durumunu izlemek için Sistem Durumu denetiminin izleme özelliğini kullanmaya devam edebilirsiniz.

Sistem durumu denetimi istekleri neden web sunucusu günlüklerimde gösterilmiyor?

Sistem durumu denetimi istekleri sitenize dahili olarak gönderilir, bu nedenle istek web sunucusu günlüklerinde gösterilmez. Sistem durumu denetim yolunuza ping atıldığında günlükleri tutmak için Sistem Durumu denetim kodunuza günlük deyimleri ekleyebilirsiniz.

Durum denetimi istekleri HTTP veya HTTPS üzerinden mi gönderiliyor?

Windows App Service'te, sitede Yalnızca HTTPS etkinleştirildiğinde Durum denetimi istekleri HTTPS aracılığıyla gönderilir. Aksi takdirde, BUNLAR HTTP üzerinden gönderilir. Linux App Service'te sistem durumu denetimi istekleri yalnızca HTTP üzerinden gönderilir ve şu anda HTTPS üzerinden gönderilemiyor.

Sistem durumu denetimi, varsayılan etki alanı ile özel etki alanı arasında yapılandırılan uygulama kodu yeniden yönlendirmelerini takip ediyor mu?

Hayır, Sistem durumu denetimi özelliği web uygulamasının varsayılan etki alanının yoluna ping atıyor. Varsayılan etki alanından özel bir etki alanına yeniden yönlendirme varsa, Sistem durumu denetiminin döndüreceği durum kodu 200 değil, çalışanı iyi durumda değil olarak işaretleyecek bir yeniden yönlendirme (301) olacaktır.

Aynı App Service Planında birden çok uygulamam varsa ne olur?

İyi durumda olmayan örnekler, App Service Planı'ndaki diğer uygulamalardan bağımsız olarak yük dengeleyici döndürmesinden her zaman kaldırılır (içinde WEBSITE_HEALTHCHECK_MAXUNHEALTHYWORKERPERCENTbelirtilen yüzdeye kadar). Bir örnekteki bir uygulama bir saatten fazla iyi durumda olmadığında, örnek yalnızca Sistem Durumu denetimi etkin olan diğer tüm uygulamalar da iyi durumda değilse değiştirilir. Sistem durumu denetimi etkin olmayan uygulamalar dikkate alınmaz.

Örnek

Uygulama A ve Uygulama B olarak adlandırılan Sistem Durumu denetimi etkin iki uygulamanız (veya yuvalı bir uygulamanız) olduğunu düşünün. Bunlar aynı App Service Planındadır ve Planın ölçeğinin dört örneğe genişletildiğini gösterir. Uygulama A iki örnekte iyi durumda değilse, yük dengeleyici bu iki örnekte Uygulama A'ya istek göndermeyi durdurur. İstekler, Uygulama B'nin iyi durumda olduğu varsayılarak bu örneklerde Uygulama B'ye yönlendirilmeye devam eder. Uygulama A bu iki örnekte bir saatten fazla iyi durumda değilse, bu örnekler yalnızca Bu örneklerde Uygulama B de iyi durumda değilse değiştirilir. Uygulama B iyi durumdaysa örnek değiştirilmez.

Yukarıdaki örnek senaryoyu açıklayan görsel diyagram.

Not

Plan 'da (C Sitesi) Sistem Durumu denetimi etkinleştirilmemiş başka bir site veya yuva varsa, örnek değiştirme işlemi dikkate alınmaz.

Tüm örneklerim iyi durumda değilse ne olur?

Uygulamanızın tüm örneklerinin iyi durumda olmadığı senaryoda App Service yük dengeleyiciden örnekleri kaldırmaz. Bu senaryoda, tüm iyi durumda olmayan uygulama örneklerinin yük dengeleyici döndürmesinin dışına alınması, uygulamanız için etkili bir kesintiye neden olur; ancak örneklerin değiştirilmesi yine de kabul edilir.

Sistem durumu denetimi App Service Ortamı çalışıyor mu?

Evet, sistem durumu denetimi App Service Ortamı v3 için kullanılabilir, ancak 1 veya 2 sürümleri için kullanılamaz. App Service Ortamı eski sürümlerini kullanıyorsanız, App Service Ortamı sürüm 3'e geçirmek için geçiş özelliğini kullanabilirsiniz.

Sonraki adımlar