Görev açısından kritik iş yükleri için sistem durumu modellemesi
Uygulamaların ve altyapının izlenmesi, tüm altyapı dağıtımlarının önemli bir parçasıdır. Görev açısından kritik bir iş yükü için izleme, dağıtımın kritik bir parçasıdır. Azure kaynaklarının uygulama durumunu ve önemli ölçümlerini izlemek, ortamın beklendiği gibi çalışıp çalışmadiğini anlamanıza yardımcı olur.
Bu ölçümleri tam olarak anlamak ve bir iş yükünün genel durumunu değerlendirmek için izlenen tüm verilerin bütünsel olarak anlaşılması gerekir. Sistem durumu modeli, ham ölçümler yerine iş yükünün durumunun net bir göstergesini görüntüleyerek genel sistem durumunun değerlendirilmesi konusunda yardımcı olabilir. Durum genellikle kırmızı, yeşil veya sarı gibi "trafik ışığı" göstergeleri olarak sunulur. Açık göstergelere sahip bir sistem durumu modelinin temsili, operatörün iş yükünün genel durumunu anlamasını ve ortaya çıkan sorunlara hızlı bir şekilde yanıt vermesini sezgisel hale getirir.
Sistem durumu modellemesi, görev açısından kritik dağıtım için aşağıdaki operasyonel görevlere genişletilebilir:
Uygulama Sistem Sağlığı Hizmeti - Bir damganın durumunu belirlemek için bir API sağlayan işlem kümesindeki uygulama bileşeni.
İzleme - Uygulama ve altyapının sistem durumunu ve performansını değerlendiren performans ve uygulama sayaçlarının toplanması.
Uyarı - Altyapı ve uygulamadaki sorunlar veya kesintiler için eyleme dönüştürülebilir uyarılar.
Hata analizi - Kök neden belgeleri de dahil olmak üzere tüm hataların dökümü ve analizi.
Bu görevler, görev açısından kritik altyapı için kapsamlı bir sağlık modeli oluşturur. Sistem durumu modelinin geliştirilmesi, görev açısından kritik herhangi bir dağıtımın kapsamlı ve ayrılmaz bir parçası olabilir ve olmalıdır.
Daha fazla bilgi için bkz . Azure'da görev açısından kritik iş yüklerinin sistem durumu modellemesi ve gözlemlenebilirliği.
Uygulama Sistem Sağlığı Hizmeti
Application Sistem Sağlığı Hizmeti (HealthService), işlem kümesindeki Katalog Hizmeti (CatalogService) ve Arka Plan İşlemcisi (BackgroundProcessor) ile birlikte bulunan bir uygulama bileşenidir. HealthService, damganın durumunu belirlemek üzere çağrı yapmak üzere Azure Front Door için bir REST API sağlar. HealthService, kendi bağımlılıklarına ek olarak bağımlılıkların durumunu yansıtan karmaşık bir bileşendir.
İşlem kümesi kapalı olduğunda sistem durumu hizmeti yanıt vermez. Hizmetler çalışır durumdayken altyapıda aşağıdaki bileşenlere yönelik düzenli denetimler gerçekleştirir:
Azure Cosmos DB'ye yönelik bir sorgu gerçekleştirmeye çalışır.
Event Hubs'a ileti göndermeye çalışır. İleti, arka plan çalışanı tarafından filtrelenmiş.
Depolama hesabında bir durum dosyası arar. Bu dosya, diğer denetimler düzgün çalışmaya devam ederken bile bir bölgeyi kapatmak için kullanılabilir. Bu dosya diğer işlemlerle iletişim kurmak için kullanılabilir. Örneğin damga, bakım amacıyla boşaltılacaksa, iyi durumda olmayan bir duruma zorlamak ve trafiği yeniden yönlendirmek için dosya silinebilir.
Tüm işletimsel ölçümlerin önceden belirlenmiş eşikler içinde olup olmadığını belirlemek için sistem durumu modelini sorgular. Sistem durumu modeli damganın iyi durumda olmadığını gösterdiğinde, HealthService'in gerçekleştirdiği diğer testler başarıyla döndürülse bile trafik damgaya yönlendirilmemelidir. Sistem Durumu Modeli, sistem durumunun daha eksiksiz bir görünümünü dikkate alır.
Tüm sistem durumu denetimi sonuçları, varsayılan olarak 10 saniye yapılandırılabilir bir süre için bellekte önbelleğe alınır. Bu işlem olası olarak kesintileri algılamada küçük bir gecikme süresi ekler, ancak her HealthService sorgusunun arka uç çağrıları gerektirmediğinden, küme ve aşağı akış hizmetlerindeki yükü azaltır.
Azure Front Door gibi genel bir yönlendirici kullanılırken HealthService sorgularının sayısı önemli ölçüde arttığı için bu önbelleğe alma düzeni önemlidir: İsteklere hizmet veren her Azure veri merkezindeki her kenar düğümü, işlevsel bir arka uç bağlantısı olup olmadığını belirlemek için Sistem Sağlığı Hizmeti çağırır. sonuçların Önbelleğe Alma sistem durumu denetimleri tarafından oluşturulan ek küme yükünü azaltır.
Yapılandırma
HealthService ve CatalogService, yalnızca HealthService tarafından kullanılan aşağıdaki ayarlar dışında bileşenler arasında ortak olan yapılandırma ayarlarına sahiptir:
Ayar | Değer |
---|---|
HealthServiceCacheDurationSeconds |
Bellek önbelleğinin süre sonu süresini saniye cinsinden denetler. |
HealthServiceStorageConnectionString |
Durum dosyasının mevcut olması gereken Depolama Hesabı için Bağlan ion dizesi. |
HealthServiceBlobContainerName |
Durum dosyasının mevcut olması gereken kapsayıcıyı Depolama. |
HealthServiceBlobName |
Durum dosyasının adı - sistem durumu denetimi bu dosyayı arar. |
HealthServiceOverallTimeoutSeconds |
Denetimin tamamı için zaman aşımı - varsayılan olarak 3 saniyedir. Denetim bu aralıkta tamamlanmazsa hizmet iyi durumda olmadığını bildirir. |
Uygulama
Tüm denetimler zaman uyumsuz ve paralel olarak gerçekleştirilir. Bunlardan biri başarısız olursa, damga damgasının tamamı kullanılamaz olarak kabul edilir.
Standart, dağıtılmamış ASP.NET Core MemoryCache
kullanılarak sonuçların bellekte önbelleğe alınarak denetlenir. Önbellek süre sonu tarafından SysConfig.HealthServiceCacheDurationSeconds
denetlenır ve varsayılan olarak 10 saniye olarak ayarlanır.
Dekont
Her SysConfig.HealthServiceCacheDurationSeconds
istek bağımlı hizmetlere aşağı akış çağrısına neden olmadığından, yapılandırma ayarı sistem durumu denetimleri tarafından oluşturulan ek yükü azaltır.
Aşağıdaki tabloda altyapıdaki bileşenler için sistem durumu denetimleri ayrıntılı olarak yer alır:
Bileşen | Durum denetimi |
---|---|
Depolama hesabı Blobu | Blob denetimi şu anda iki amaca hizmet eder: 1. Blob Depolama ulaşmanın mümkün olup olmadığını test edin. Depolama hesabı damgadaki diğer bileşenler tarafından kullanılır ve kritik bir kaynak olarak kabul edilir. 2. Durum dosyasını silerek bölgeyi el ile "kapatın". Denetimin yalnızca belirtilen blob kapsayıcısında durum dosyasının varlığını arayacağı bir tasarım kararı alındı. Dosyanın içeriği işlenmez. Dosyanın içeriğini okuyan ve dosyanın içeriğine göre farklı durum döndüren daha gelişmiş bir sistem kurma olasılığı vardır. İçerik örnekleri: HEALTHY, UNHEALTHY ve MAINTENANCE. Durum dosyasının kaldırılması damgayı devre dışı bırakır. Uygulamayı dağıttığınızda sistem durumu dosyasının mevcut olduğundan emin olun. Sistem durumu dosyasının olmaması, hizmetin her zaman UNHEALTHY ile yanıt vermesine neden olur. Front Door arka ucu kullanılabilir durumda tanımaz. Dosya Terraform tarafından oluşturulur ve altyapı dağıtımından sonra mevcut olmalıdır. |
Olay Hub’ı | Event Hubs sistem durumu raporlaması tarafından EventHubProducerService işlenir. Bu hizmet, Event Hubs'a yeni bir ileti gönderebiliyorsa iyi durumda olduğunu bildirir. Filtreleme için, bu iletiye bir tanımlayıcı özelliği eklenir: HEALTHCHECK=TRUE Bu ileti alıcı uçta yoksayılır. Yapılandırma AlwaysOn.BackgroundProcessor.EventHubProcessorService.ProcessEventHandlerAsync() ayarı özelliği denetler HEALTHCHECK . |
Azure Cosmos DB | Azure Cosmos DB sistem durumu raporlaması tarafından CosmosDbService işlenir ve durum şuysa iyi durumda olduğunu bildirir: 1. Azure Cosmos DB veritabanına bağlanıp sorgu gerçekleştirebilir. 2. Veritabanına test belgesi yazabilme. Test belgesi kısa bir Yaşam Süresi kümesine sahiptir ve Azure Cosmos DB belgeyi otomatik olarak kaldırır. HealthService iki ayrı yoklama gerçekleştirir. Azure Cosmos DB, okumanın çalıştığı ve yazmanın olmadığı bir durumdaysa, iki yoklama bir uyarının tetiklendiğinden emin olur. |
Azure Cosmos DB sorguları
Salt okunur sorgu için, hiçbir veri getirmeyen ve genel yük üzerinde büyük bir etkisi olmayan aşağıdaki sorgu kullanılır:
SELECT GetCurrentDateTime ()
Yazma sorgusu, en düşük içerikle bir kukla ItemRating
oluşturur:
var testRating = new ItemRating()
{
Id = Guid.NewGuid(),
CatalogItemId = Guid.NewGuid(), // Create some random (=non-existing) item id
CreationDate = DateTime.UtcNow,
Rating = 1,
TimeToLive = 10 // will be auto-deleted after 10sec
};
await AddNewRatingAsync(testRating);
İzleme
Azure Log Analytics, tüm uygulama ve altyapı bileşenleri için merkezi depo günlükleri ve ölçümleri olarak kullanılır. Azure Uygulaması Analizler tüm uygulama izleme verileri için kullanılır. Altyapıdaki her damganın ayrılmış bir Log Analytics çalışma alanı ve Application Analizler örneği vardır. Front Door ve Azure Cosmos DB gibi genel olarak paylaşılan kaynaklar için ayrı bir Log Analytics çalışma alanı kullanılır.
Tüm damga pulları kısa ömürlü ve sürekli olarak her yeni sürümle değiştirilir. Damga başına Log Analytics çalışma alanları, Log Analytics kaynaklarını damgalama olarak ayrı bir izleme kaynak grubunda genel kaynak olarak dağıtılır. Bu kaynaklar damganın yaşam döngüsünü paylaşmaz.
Daha fazla bilgi için bkz . Bağıntılı analiz için birleşik veri havuzu.
İzleme: Veri kaynakları
Tanılama ayarları: Azure Görev Açısından Kritik için kullanılan tüm Azure hizmetleri, günlükler ve ölçümler de dahil olmak üzere tüm Tanılama verilerini dağıtıma özgü (genel veya damgalı) Log Analytics Çalışma Alanına gönderecek şekilde yapılandırılır. Bu işlem Terraform dağıtımının bir parçası olarak otomatik olarak gerçekleşir. Yeni seçenekler otomatik olarak tanımlanır ve öğesinin
terraform apply
bir parçası olarak eklenir.Kubernetes izleme: Tanılama ayarları, AKS günlüklerini ve ölçümlerini Log Analytics'e göndermek için kullanılır. AKS, Container Analizler kullanacak şekilde yapılandırılmıştır. Container Analizler, AKS kümelerindeki her düğümde Kubernetes DaemonSet aracılığıyla OMSAgentForLinus'u dağıtır. OMSAgentForLinux, Kubernetes kümesi içinden ek günlükler ve ölçümler toplayabilir ve bunları ilgili Log Analytics çalışma alanına gönderir. Bu ek günlükler ve ölçümler podlar, dağıtımlar, hizmetler ve genel küme durumu hakkında daha ayrıntılı veriler içerir. Görev açısından kritik iş yükünün yanında Kubernetes'e dağıtılan ing-nginx, cert-manager ve diğer bileşenlerden daha fazla içgörü elde etmek için Prometheus kazıma özelliğini kullanmak mümkündür. Prometheus kazıma, küme içindeki çeşitli uç noktalardan Prometheus ölçümlerini kazımak için OMSAgentForLinux'u yapılandırıyor.
Uygulama Analizler telemetrisi: Uygulama Analizler, uygulamadan telemetri verilerini toplamak için kullanılır. Kod, Uygulama Analizler SDK'sı ile uygulamanın performansı hakkında veri toplamak için izlendi. Elde edilen durum kodu ve işlenmeyen özel durumlar için bağımlılık çağrılarının ve sayaçlarının süresi gibi kritik bilgiler toplanır. Bu bilgiler Sistem Durumu Modeli'nde kullanılır ve uyarı ve sorun giderme için kullanılabilir.
İzleme: Uygulama Analizler kullanılabilirlik testleri
Tek tek damgaların ve genel çözümün kullanılabilirliğini dışarıdan izlemek için Uygulama Analizler Kullanılabilirlik Testleri iki yerde ayarlanır:
Bölgesel kullanılabilirlik testleri: Bu testler bölgesel Uygulama Analizler örneklerinde ayarlanır ve damgaların kullanılabilirliğini izlemek için kullanılır. Bu testler, damgaların kümelerini ve statik depolama hesaplarını doğrudan hedefler. Kümelerin giriş noktalarını doğrudan çağırmak için isteklerin doğru Front Door Kimliği üst bilgisini taşıması gerekir, aksi takdirde giriş denetleyicisi tarafından reddedilir.
Genel kullanılabilirlik testi: Bu testler genel Uygulama Analizler örneğinde ayarlanır ve Front Door'a ping atarak genel çözümün kullanılabilirliğini izlemek için kullanılır. İki test kullanılır: Biri CatalogService'te api çağrısını test etmek için, diğeri de web sitesinin giriş sayfasını test etmek için.
İzleme: Sorgular
Azure Görev Açısından Kritik, Log Analytics'ten veri almak için işlev olarak özel sorgular uygulamak için farklı Kusto Sorgu Dili (KQL) sorguları kullanır. Bu sorgular, genel ve damga dağıtımları için ayrılmış olarak kod depomuzda tek tek dosyalar olarak depolanır. Bunlar, her altyapı işlem hattı çalıştırmasının bir parçası olarak Terraform aracılığıyla içeri aktarılır ve otomatik olarak uygulanır.
Bu yaklaşım, sorgu mantığını görselleştirme katmanından ayırır. Log Analytics sorguları doğrudan koddan, örneğin HealthService API'sinden çağrılır. Bir diğer örnek de Azure Panoları, Çalışma Kitaplarını İzleme veya Grafana gibi bir görselleştirme aracıdır.
İzleme: Görselleştirme
Log Analytics sistem durumu sorgularımızın sonuçlarını görselleştirmek için başvuru uygulamamızda Grafana'yı kullandık. Grafana, Log Analytics sorgularının sonuçlarını göstermek için kullanılır ve herhangi bir mantık içermez. Grafana yığını çözümün dağıtım yaşam döngüsünün bir parçası değildir, ancak ayrı olarak yayınlanacaktır.
Daha fazla bilgi için bkz . Görselleştirme.
Uyarı
Uyarılar, genel operasyon stratejisinin önemli bir parçasıdır. Pano kullanımı gibi proaktif izleme, sorunlara anında dikkat çeken uyarılarla kullanılmalıdır.
Bu uyarılar, işleci durum durumundaki bir değişikliğe, düzeyi düşürülmüş/sarı duruma veya iyi durumda olmayan/kırmızı durumuna uyararak sistem durumu modelinin bir uzantısını oluşturur. Uyarıyı Sistem Durumu Modeli'nin kök düğümüne ayarlayarak, operatör çözümün durumuna etki eden herhangi bir iş düzeyini hemen fark eder: Sonuçta, temel alınan kullanıcı akışlarından veya kaynaklarından biri sarı veya kırmızı ölçümler bildiriyorsa bu kök düğüm sarı veya kırmızıya dönüşür. Operatör, sorun giderme için dikkatini Sistem Durumu Modeli görselleştirmesine yönlendirebilir.
Daha fazla bilgi için bkz . Otomatik olay yanıtı.
Hata analizi
Hata analizini oluşturmak çoğunlukla teorik bir planlama alıştırmasıdır. Bu teorik alıştırma, sürekli doğrulama sürecinin bir parçası olan otomatik hata eklemeleri için giriş olarak kullanılmalıdır. Burada tanımlanan hata modlarının benzetimini yaparak, kesintilere neden olmayacağından emin olmak için çözümün bu hatalara karşı dayanıklılığını doğrulayabiliriz.
Aşağıdaki tabloda, Azure Görev Açısından Kritik başvuru uygulamasının çeşitli bileşenleriyle ilgili hata örnekleri listelenmiştir.
Sonraki adımlar
Bu mimaride kullanılan kaynakları ve yapılandırmalarını tam olarak anlamak için başvuru uygulamasını dağıtın.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin