Sistem Durumu Uç Nokta İzleme düzeni
Dış araçların düzenli aralıklarla ortaya çıkarılan uç noktalar üzerinden erişebildiği bir uygulamada işlev denetimleri yapın. Bu, uygulamaların ve hizmetlerin doğru şekilde çalıştığını doğrulamaya yardımcı olabilir.
Bağlam ve sorun
Web uygulamaları ve arka uç hizmetlerini kullanılabilir ve düzgün çalışır durumda olmasını sağlamak için izlemek iyi bir uygulamadır ve genellikle bir iş gereksinimidir. Ancak, bulutta çalışan hizmetleri izlemek bazen şirket içi hizmetleri izlemekten daha zordur. Örneğin, barındırma ortamı üzerinde tam denetiminiz yoktur ve hizmetler genellikle platform üreticileri ve başkaları tarafından sağlanan diğer hizmetlere bağlıdır.
Bulutta barındırılan uygulamaları etkileyen, ağ gecikmesi, performans ve arka plandaki işlem ve depolama sistemlerinin kullanılabilirliği, bu sistemler arasındaki ağ bant genişliği gibi pek çok etken vardır. Hizmet, bu etkenlerin herhangi biri nedeniyle tamamen veya kısmen başarısız olabilir. Bu nedenle, hizmet düzeyi sözleşmenizin (SLA) de bir parçası olabilecek gerekli kullanılabilirlik düzeyini sağlamak için hizmetin doğru şekilde çalıştığını düzenli aralıklarla doğrulamanız gerekir.
Çözüm
Uygulamadaki bir uç noktaya istek göndererek sistem durumu izleme uygulayın. Uygulamayı gerekli denetimleri gerçekleştirir ve durumunu belirtir.
Sistem durumu izleme denetimi genellikle iki faktörü bir araya getirir:
- Sistem durumu doğrulama uç noktası isteğine yanıt olarak uygulama veya hizmet tarafından gerçekleştirilen denetimler (varsa).
- Sistem durumu doğrulama denetimini gerçekleştiren çerçeve veya araç tarafından sonuçların analizi.
Yanıt kodu, uygulamanın durumunu ve isteğe bağlı olarak, kullandığı bileşenler veya hizmetlerin durumunu gösterir. Gecikme veya yanıt süresi denetimi izleme aracı veya çerçeve tarafından gerçekleştirilir. Şekilde düzene genel bir bakış sağlanmıştır.

Uygulamadaki sistem durumu izleme kodu tarafından gerçekleştirilebilecek diğer denetimler:
- Bulut depolamayı veya veritabanını kullanılabilirlik ve yanıt süresine göre denetleme.
- Uygulamada veya uygulama tarafından kullanılan başka bir yerde bulunan diğer kaynakları veya hizmetleri denetleme.
Web uygulamalarını, yapılandırılabilir bir uç noktaları kümesine istek göndererek ve sonuçları, yapılandırılabilir bir kurallar kümesine göre değerlendirerek izlemek için kullanılabilen hizmetler ve araçlar vardır. Tek amacı sistemde bazı işlevsel testleri gerçekleştirmek olan bir hizmet uç noktası oluşturmak oldukça kolaydır.
İzleme araçları tarafından gerçekleştirilebilen yaygın denetimler şunlardır:
- Yanıt kodunu doğrulama. Örneğin, bir HTTP yanıtının 200 (Tamam) olması uygulamanın hatasız yanıt verdiğini belirtir. İzleme sistemi, daha kapsamlı sonuçlar vermek için diğer yanıt kodlarını da denetleyebilir.
- 200 (Tamam) durum kodu döndürülse bile hataları algılamak için yanıt içeriğini denetleyebilir. Böylece, döndürülen web sayfası veya hizmet yanıtının yalnızca bir bölümünü etkileyen hatalar da algılanabilir. Örneğin, bir sayfa başlığının denetimi veya doğru sayfanın döndürüldüğünü gösteren belirli bir tümcecik denetlenebilir.
- Ağ gecikmesi ve uygulamanın isteğin yürütülmesi için harcadığı sürenin bir birleşimini gösteren yanı süresinin ölçümü. Artan bir değer, uygulama veya ağda ortaya çıkacak bir sorunu gösterebilir.
- Genel önbelleklerden içerik sunmak için uygulama tarafından kullanılan bir içerik dağıtım ağı gibi, uygulama dışında bulunan kaynakların veya hizmetlerin denetlenmesi.
- SSL sertifikalarının süresini denetleme.
- DNS gecikme süresi ve DNS hatalarını denetlemek için uygulamanın URL'sine yapılan DNS aramasının yanıt süresini ölçme.
- Girişlerin doğruluğundan emin olmak için, DNS araması tarafından döndürülen URL’yi doğrulama. Bu, DNS sunucusuna saldırı yaparak kötü amaçlı istek yeniden yönlendirmesine neden olunmasını önlemeye yardımcı olabilir.
Mümkün olduğunda bu denetimleri farklı şirket içi veya barındırılan konumlardan çalıştırarak yanıt sürelerini ölçmek ve karşılaştırmak da yararlıdır. İdeal olarak her konumdan performansın doğru bir görünümünü elde etmek için, uygulamaları müşterilere yakın olan konumlardan izlemeniz gerekir. Sonuçlar, daha sağlam bir denetim mekanizması sağlamanın yanı sıra uygulamanın dağıtım konumunu ve birden fazla veri merkezinde dağıtıp dağıtmama konusunda karar verme konusunda size yardımcı olabilir.
Testler ayrıca uygulamanın tüm müşteriler için düzgün çalıştığından emin olmak için müşterilerin kullandığı tüm hizmet örneklerinde çalıştırılmalıdır. Örneğin, müşteri depolama alanı birden fazla depolama hesabına yayılmışsa, izleme işleminin bunların tümünü denetlemesi gerekir.
Sorunlar ve dikkat edilmesi gerekenler
Bu düzenin nasıl uygulanacağına karar verirken aşağıdaki noktaları göz önünde bulundurun:
Yanıtı doğrulama. Örneğin, yalnızca tek bir 200 (Tamam) durum kodu uygulamanın düzgün çalıştığını doğrulamak için yeterli midir? Bu, uygulama kullanılabilirliğinin en temel ölçüsünü sağlar ve bu düzenin minimum uygulamasıdır. İşlemler, eğilimler ve uygulamadaki yaklaşan olası sorunlar hakkında az miktarda bilgi sağlar.
Bir uygulama için kullanıma sunulacak uç nokta sayısı. Yaklaşımlardan biri, uygulamanın kullandığı temel hizmetler için en az bir uç noktanın kullanıma sunulması, daha düşük öncelikli hizmetler için de başka bir uç noktanın kullanıma sunulmasıdır. Böylece her bir izleme sonucuna farklı önem düzeyleri atanabilir. Ayrıca, ek izleme ayrıntı düzeyi elde etmek için her çekirdek hizmetine bir adet gibi daha fazla uç nokta kullanıma sunmak isteyebilirsiniz. Örneğin, sistem durumu doğrulama denetimi, uygulamanın kullandığı veritabanını, depolama alanını ve bir dış coğrafi kodlama hizmetini denetleyebilir. Bunların her biri farklı düzeyde bir çalışma süresi ve yanıt süresi gerektirir. Uygulama, coğrafi kodlama hizmeti veya başka bir arka plan görevi birkaç dakikalığına kullanılamasa da iyi durumda olabilir.
genel erişim için kullanılanizleme uç noktasının, ancak genel erişim uç noktası üzerinde /health gibi sistem durumu doğrulama denetimleri için tasarlanmış belirli bir yola yönelik olup olmadığı. Bu, uygulamada, yeni bir kullanıcı kaydı ekleme, oturum açma, test komutu verme gibi bazı işlevsel testlerin izleme araçları tarafından çalıştırılmasını sağlar ve genel erişim uç noktasının kullanılabilir olup olmadığını doğrular.
İzleme isteklerine yanıt olarak hizmette toplayan bilgilerin türü ve bu bilgilerin nasıl iade edilebilir olduğu. Pek çok mevcut araç ve çerçeve, yalnızca uç noktanın döndürdüğü HTTP durum koduna bakar. Dönüp ek bilgileri doğrulamak için bir özel izleme yardımcı programı veya hizmeti oluşturmanız gerekebilir.
Ne kadar bilgi toplanacağı. Denetim sırasında fazla işlem yapılması, uygulamanın aşırı yüklenmesine ve diğer kullanıcıların etkilenmesine neden olabilir. Aldığı süre izleme sisteminin zaman aşımı süresini aşabileceğinden uygulama kullanılamaz olarak işaretlenir. Çoğu uygulama aracı, performans ve ayrıntılı hata bilgilerini kaydeden performans sayaçları ve hata işleyicileri araçlar sağlar. Sistem durumu doğrulama denetimden ek bilgi döndürmek yerine bunlar yeterli olabilir.
Uç nokta durumunu önbelleğe alma. Sistem durumu denetimini çok sık çalıştırmak pahalı olabilir. Örneğin, bir pano aracılığıyla durum bildiriliyorsa, panoya yapılan her isteğin bir durum denetimi tetiklemesi istemiyorsanız. Bunun yerine, sistem durumunu düzenli aralıklarla denetleyin ve durum önbelleğe alın. Önbelleğe alınan durumu döndüren bir uç noktayı kullanıma sunma.
İzleme uç noktalarının, uygulamayı kötü amaçlı saldırılara maruz kalmalarına, hassas bilgilerin açığa çıkarılama riskine veya hizmet reddi (DoS) saldırılarına maruz kalmalarına neden olan genel erişime karşı korumak için güvenliği yapılandırma. Genellikle bu uygulamanın yeniden başlatılmadan kolayca güncelleştirilmesi için uygulama yapılandırmasında yapılmalıdır. Aşağıdaki tekniklerden bir veya daha fazlasını kullanmayı düşünebilirsiniz:
Kimlik doğrulaması gerektirerek uç noktanın güvenliğini sağlama. İzleme hizmeti veya araç kimlik doğrulamasını destekliyorsa, istek üstbilgisindeki bir kimlik doğrulama güvenlik anahtarı kullanarak veya istekle birlikte kimlik bilgilerini geçirerek bunu yapabilirsiniz.
Belirsiz veya gizli bir uç noktası kullanma. Örneğin, varsayılan uygulama URL’si tarafından kullanılan farklı bir IP adresinde uç noktayı kullanıma sunun, uç noktasını standart olmayan bir HTTP bağlantı noktasında yapılandırın veya test sayfasına karmaşık bir yol kullanın. Genellikle, ek uç nokta adresleri ve bağlantı noktalarını uygulama yapılandırmasında belirtebilir ve IP adresini doğrudan belirtmek zorunda kalmamak için gerekliyse girişleri bu uç noktalar için DNS sunucusuna ekleyebilirsiniz.
Bir anahtar değeri veya bir işlem modu değeri gibi bir parametre kabul eden bir uç noktada bir yöntem kullanıma sunma. Bu parametre için sağlanan değere bağlı olarak, bir istek alındığında kod belirli testi veya test kümesini gerçekleştirebilir veya parametre değeri tanınmıyorsa 404 (bulunamadı) hatası döndürebilir. Tanınan parametre değerlerini uygulama yapılandırmasında ayarlayabilirsiniz.
DoS saldırıları, uygulamanın işleyişinden ödün vermeden temel işlevsel testleri gerçekleştiriyorsa ayrı bir uç noktayı daha az etkileyebilir. İdeal olarak, hassas bilgilerin açığa çıkmasına neden olabilecek bir test kullanmaktan kaçının. Bir saldırgan için yararlı olabilecek bilgiler döndürmeniz gerekiyorsa, uç noktayı ve verileri yetkisiz erişimden nasıl koruyacağınızı göz önünde bulundurun. Bu durumda yalnızca belirsizlik yeterli değildir. Sunucu üzerindeki yükü artıracak olsa da hassas verileri şifrelemeyi ve bir HTTPS bağlantısı kullanmayı da düşünmelisiniz.
Kimlik doğrulaması kullanılarak güvenliği sağlanacak bir uç noktaya erişim, durum denetimi uç noktalarının ve onu kullananların değerlendirilmesi gereken bir noktadır. Örneğin, App Service sistem durumu denetimi, App Service kimlik doğrulaması ve yetkilendirme özellikleriyle tümleştirilmiştir.
İzleme Aracısının doğru şekilde çalışmasını sağlama. Yaklaşımlardan biri uygulama yapılandırmasından bir değer veya test aracısı için kullanılan rastgele bir değeri döndüren bir uç noktanın kullanıma sunulmasıdır.
Ayrıca izleme sisteminin hatalı pozitif sonuçları engellemek için kendi kendine test ve yerleşik test gibi kendi üzerinde denetimler gerçekleştirmesini sağlayın.
Bu düzenin kullanılacağı durumlar
Bu düzen aşağıdakiler için kullanışlıdır:
- Kullanılabilirliğini doğrulamak için web sitelerini ve web uygulamalarını izleme.
- Doğru işlediklerinden emin olmak için web sitelerini ve web uygulamalarını izleme.
- Diğer uygulamaları aksatabilecek bir hatayı yalıtmak için orta katman veya paylaşılan hizmetleri izleme.
- Uygulamada, performans sayaçları ve hata işleyicileri gibi mevcut araçların eksiklerini tamamlama. Sistem durumu doğrulama denetimi uygulamada günlüğe kaydetme ve denetim gereksinimlerinin yerine geçmez. İzleme, hatalar ve diğer sorunları algılama amacıyla sayaçları ve hata günlüklerini izleyen mevcut bir çerçeve için değerli bilgiler sağlayabilir. Ancak, uygulama kullanılabilir değilse bilgi sağlayamaz.
Örnek
ASP.NET sistem durumu denetimleri , ara yazılım ve uygulama altyapısı bileşenlerinin sistem durumunu raporlamak için bir kitaplık kümesidir. Düzenli bir yöntemde sistem durumu denetimleri bildirmek için bir çerçeve sağlar ve yukarıda belirtilen birçok uygulamayı uygulayarak. Bu, veritabanı bağlantısı gibi dış denetimleri ve limek ve hazırlık araştırmaları gibi belirli kavramları içerir.
ASP.NET sistem durumu denetimleri kullanarak bir dizi örnek uygulama GitHubbulunabilir.
Azure’da barındırılan uygulamalardaki uç noktaları izleme
Azure uygulamalarında uç noktaları izlemek için bazı seçenekler şunlardır:
Azure’un yerleşik izleme özelliklerini kullanma.
Üçüncü taraf hizmet veya Microsoft System Center Operations Manager gibi bir çerçeve kullanma.
Kendi sunucunuzda veya barındırılan bir sunucuda çalışan özel bir yardımcı program veya hizmet oluşturma.
Azure makul kapsamlı bir izleme seçenekleri kümesi sağlasa da ek bilgi sağlamak için ek hizmetler ve araçlar kullanabilirsiniz. Azure izleyici 'nin bir özelliği olan Application Insights, uygulamanızın nasıl çalıştığını ve nasıl kullanıldığını anlamanıza yardımcı olmak için geliştirme ekibine hedeflenmiş hale gelir. İstek hızlarını, yanıt sürelerini, başarısızlık hızlarını, bağımlılık oranlarını ve başarısızlık hızlarını izler ve dış hizmetlerin sizi yavaşlatarak yavaşlamadığını bulmanıza yardımcı olabilir.
İzleyebilmeniz gereken koşullar, uygulamanız için seçtiğiniz barındırma mekanizmasına bağlı olarak farklılık gösterir, ancak bunların hepsi hizmetinize ilişkin ayarlarda belirttiğiniz bir Web uç noktası kullanan bir uyarı kuralı oluşturma özelliğini içerir. Uyarı sisteminin uygulamanın düzgün çalıştığını algılayabilmesi için bu uç noktanın zamanında yanıt vermesi gerekir.
Uyarı bildirimleri oluşturma hakkında daha fazla bilgi okuyun.
Büyük bir kesinti durumunda, istemci trafiğinin diğer bölgeler veya bölgelerde kullanılabilir durumda kalan bir uygulama dağıtımına yönlendirilebilir olması gerekir. Bu sonunda, uygulamanın iç ve/veya dış kaynaklı olmasına bağlı olarak şirket içi bağlantı ve genel yük dengelemenin kullanılması gerekir. Azure ön kapısı, Azure Traffic Manager veya cdns gibi hizmetler, sistem durumu araştırmaları aracılığıyla sunulan uygulama durumuna göre trafiği bölgeler arasında yönlendirebilir.
Azure Traffic Manager , istekleri bir dizi kurala ve ayarlara göre uygulamanızın belirli örneklerine dağıtabilecek bir yönlendirme ve yük dengeleme hizmetidir. İstekleri yönlendirmeye ek olarak, Traffic Manager belirttiğiniz bir URL, bağlantı noktası ve göreli yola uygulamanın hangi örneklerinin etkin olduğunu ve isteklere yanıt verdiğini belirlemek için düzenli olarak ping gönderir. 200 (Tamam) durum kodu algılarsa, uygulamayı kullanılabilir olarak işaretler. Diğer durum kodları Traffic Manager’ın uygulamayı çevrimdışı olarak işaretlemesine neden olur. Traffic Manager konsolunda durumu görüntüleyebilir ve kuralı, yanıt veren uygulamanın diğer örneklerine istekleri yeniden yönlendirecek şekilde yapılandırabilirsiniz.
ancak Traffic Manager, izleme URL 'sinden yanıt almak için yalnızca belirli bir süre bekler. Bu nedenle, sistem durumu doğrulama kodunuzun bu süre içinde, Traffic Manager'dan uygulamaya gidiş dönüş ağ gecikmesine gereken süreyi verecek şekilde yürütülmesini sağlamanız gerekir.
İlgili yönergeler
Bu düzeni uygularken aşağıdaki yönergeler kullanışlı olabilir:
- Mikro hizmet tabanlı uygulamalarda sistem durumu izleme Kılavuzu
- Well-Architected Framework 'Ün güvenilirlik için uygulama durumunu izleme
- Uyarı bildirimleri alma