Giriş
Sistemlerinizin durumunu anlamak, uygulamalarınızın ve hizmetlerin güvenilirliğini ve istikrarını sağlamak için gereklidir. Dağıtımlarınızın sağlığı ve performansıyla ilgili bilgi, ekibinizin sorunlara tepki vermesine yardımcı olmakla kalmaz, aynı zamanda güvenle değişiklikler yapmaya da güvence verir. Bu bilgiler edinmenin en iyi yollarından biri, metrikleri toplayan, verileri görselleştiren ve işlerin kırıldığı zaman işletmenleri uyaran sağlam bir izleme sistemi ile ilgilidir.
Ölçütlere, izlemeye ve uyarı kılavuzuna girişte yazılım ve altyapıyı izleme ile ilgili temel kavramların bazılarını ele aldık. Metrikler, izlenen sistemlerin birbirine bağlı görünümünü oluşturmak için izleme sistemleri tarafından işlenen ana materyaldir. İzlemeye değer bileşenlerin hangileri olduğuna ve hangi özel karakteristiklerine bakmanız gerektiğini bilmek, yazılım ve donanımınızın durumu hakkında güvenilir ve uygulanabilir bilgiler sunabilen bir sistem tasarlamanın ilk adımıdır.
Bu kılavuzda, takip etmek için en kritik metrikleri belirlemek için kullanılan popüler bir çerçeveyi tartışarak başlayacağız. Daha sonra, dağıtımlarınız boyunca bu göstergelerin bileşenlere nasıl uygulanabileceğini inceleyeceğiz. Bu süreç, öncelikle tek tek sunucuların temel kaynaklarına odaklanacak ve kapsamı gittikçe daha geniş alanlarda kapsayacak şekilde ayarlayacaktır.
İzlemenin Altın Sinyalleri
Oldukça etkili olan Google SRE (site güvenilirliği mühendisliği) Kitabında, dağıtılan sistemlerin izlenmesi konusundaki bölüm, kullanıcılara yönelik bir sistemde ölçülecek en önemli faktörleri temsil eden dört altın izleme sinyali adı verilen yararlı bir çerçeveyi sunar. Bu dört özelliğin her birini aşağıda tartışacağız.
Gecikme
Gecikme, bir işlemi tamamlamak için gereken süreyi ölçmek için kullanılır. Bunun nasıl ölçüleceğine ilişkin ayrıntılar bileşene bağlıdır, ancak bazı ortak analoglar işlem süresi, tepki süresi veya seyahat süresidir.
Gecikmenin ölçülmesi belirli bir görevin veya eylemin ne kadar süreceğini somut bir ölçüt olarak verir. Çeşitli bileşenlerin gecikmesini elde etmek, sisteminizin farklı performans özelliklerine ilişkin bütünsel bir model oluşturmanıza olanak tanır. Bu, tıkanıklıkları bulmanıza, hangi kaynaklara en fazla erişime ihtiyaç duyduğunu anlamanıza ve eylemler aniden beklenenden daha uzun sürdüğüne dikkat etmenize yardımcı olabilir. SRE kitabının yazarları, bir hizmetin ortalamalarını çarpıtabilen çok farklı profillere sahip olabildikleri için gecikmeleri hesaplarken başarılı ve başarısız istekleri ayırt etmenin önemini vurguluyor.
Trafik
Trafik, bileşenlerinizin ve sistemlerin "yoğunluk derecesini" ölçer. Bu, hizmetinizdeki yükü veya talebi gösterir; böylece sisteminizin şu anda ne kadar çok iş yaptığını anlayabilirsiniz.
Sürekli yüksek veya düşük trafik sayıları, hizmetin daha fazla kaynağa ihtiyaç duyabileceğini veya bir sorunun trafik yönlendirmesinin doğru şekilde yönlendirilmesini engelleyebileceğini gösterebilir. Bununla birlikte, vakaların çoğunluğu için, trafik oranları, diğer sinyallerle ortaya çıkan sorunların anlaşılmasına yardımcı olmak için en faydalı olacak. Örneğin, gecikme kabul edilebilir bir seviyenin üzerine çıkarsa, o zaman aralığını trafikte bir artışla ilişkilendirmek faydalı olur. Trafik, ele alınabilecek maksimum trafik miktarını ve hizmetin çeşitli aşamalarında nasıl bozulduğunu veya başarısız olduğunu anlamak için kullanılabilir.
Hatalar
Bileşenlerin durumunu ve ne sıklıkta isteklere uygun bir şekilde yanıt vermediğini anlamak için hataları izlemek önemlidir. Bazı uygulamalar veya hizmetler, hazır, temiz hazır arabirimlerdeki hataları gösterir, ancak verileri diğer programlardan toplamak için ek işler gerekebilir.
Farklı hatalar türleri arasında ayrım yapmak, uygulamalarınızı etkileyen sorunların tam niteliğini tespit etmeyi kolaylaştırabilir. Bu aynı zamanda uyarıda esneklik sağlar. Bir hata türü göründüğünde derhal sizi uyarması gerekebilir, ancak bir diğer hata için oran, kabul edilebilir bir eşiğin altında olduğu sürece endişe duymuyorsunuzdur.
Doyma
Doygunluk, belirli bir kaynağın ne kadarının kullanıldığını ölçer. Yüzdeler veya kesirler, açık bir toplam kapasiteye sahip kaynaklarla sıklıkla kullanılır; ancak, daha az tanımlanmış maksimuma sahip kaynaklar için daha yaratıcı ölçümler gerekebilir.
Doygunluk verileri bir hizmetin veya uygulamanın etkili bir şekilde çalışabilmesi için bağlı olduğu kaynaklar hakkında bilgi sağlar. Bir bileşen tarafından sağlanan bir hizmet başka bir kişi tarafından tüketilebileceğinden doygunluk, alttaki sistemlerin kapasite sorunlarını gösteren tutkal ölçümlerinden biridir. Bu nedenle, bir tabakadaki doygunluk ve gecikme problemleri, alttaki katmandaki trafikte veya hata ölçümlerinde belirgin bir artışa karşılık gelebilir.
Çevrenizdeki Önemli Verileri Ölçme
Dört altın sinyali bir kılavuz olarak kullanarak, bu metriklerin sisteminizin hiyerarşisinde nasıl ifade edileceğine bakabilirsiniz. Hizmetler genellikle daha temel bileşenler üzerine soyutlama katmanları ekleyerek oluşturulduğundan metrikler, dağıtımın her aşamasında fikir sahibi olacak şekilde tasarlanmalıdır.
Ortak dağıtılmış uygulama ortamlarında mevcut farklı karmaşıklık düzeylerine bakacağız:
- Bireysel sunucu bileşenleri
- Uygulamalar ve hizmetler
- Sunucuların koleksiyonları
- Çevresel bağımlılıklar
- Uçtan uca deneyim
Yukarıdaki sıralama, soyutlamanın kapsamını ve düzeyini her bir sonraki katmanla genişletir.
Bireysel Sunucu Bileşenleri için Toplama Ölçütleri
Toplanması gereken önemli taban düzeyi ölçütleri, sistemlerinizin dayandığı temel bilgisayarlarla alâkalı olan ölçütlerdir. Modern yazılım geliştirmede kayda değer gayret, fiziksel bileşenleri ve düşük seviyeli işletim sistemi ayrıntılarını soyutlamakla birlikte, her hizmet, çalışması için temel donanım ve işletim sistemlerine güvenir. Bu nedenle, makinelerinizin temel kaynaklarına göz kulak olmak, sisteminizin sağlığını anlamanın ilk adımıdır.
Makine düzeyinde hangi metriklerin toplanacağını düşünürken, mevcut tek tek kaynakları düşünün. Bunlar, sunucunuzun donanımının temsillerinin yanı sıra süreçler ve dosya tanımlayıcıları gibi işletim sistemi tarafından sağlanan çekirdek soyutlamaları içerecektir. Her bir bileşene dört altın sinyalle bakıldığında, belli sinyaller açık olabilir, bazıları ise mantığı daha zordur.
Brendan Gregg, etkili bir performans mühendisi, birçok diye performans analizi için KULLANIM yöntemini çağıran bir çerçeve ihtiyaçlarını karşılamak için Linux sistemlerinde çekirdek ölçümleri almak için yollar (u tilization, s aturation ve e rrors) özetliyor. USE yöntemi ile dört altın sinyal arasında belirgin bir örtüşme olduğundan, tavsiyelerinin bir kısmını, sunucu bileşenlerinden hangi verilerin toplanacağını bulmak için atlama noktası olarak kullanabiliriz.
CPU'yu ölçmek için aşağıdaki ölçümler uygun olabilir:
- Gecikme : CPU zamanlayıcıda ortalama veya maksimum gecikme
- Trafik : CPU kullanımı
- Hatalar : İşlemciya özgü hata olayları, arızalı CPU'lar
- Doygunluk : Kuyruk uzunluğunu çalıştır
Bellek için sinyaller şöyle olabilir:
- Gecikme : (yok – iyi bir ölçüm yöntemi bulmak zordur ve uygulanabilir değildir)
- Trafik : Kullanılan bellek miktarı
- Hatalar : Bellek yetersiz hatalar
- Doygunluk : OOM katil olayları, takas kullanımı
Depolama aygıtları için :
- Gecikme: ortalama bekleme süresi (
awaitiçin) okur ve yazar
- Trafik : G / Ç düzeylerini okuma ve yazma
- Hatalar : dosya sistemi hataları,
/sys/devicesiçindeki disk hataları
- Doygunluk : G / Ç kuyruk derinliği
Ağ sinyalleri şöyle görünebilir:
- Gecikme : Ağ sürücüsü sırası
- Trafik : Gelen ve giden bayt veya saniye başına paket
- Hatalar : Ağ aygıtı hataları, bırakılan paketler
- Doygunluk : aşırı yayınlar, bırakılan paketler, yeniden aktarılan bölümler
Fiziksel kaynakların temsilciliğiyle birlikte, sınırlamaları zorlayan işletim sistemi soyutlamalarıyla ilgili metrikleri toplamak da iyi bir fikirdir. Bu kategoriye giren bazı örnekler, dosya tanıtıcıları ve iplik sayılarıdır. Bunlar fiziksel kaynaklar değil, süreçlerin aşırı yayılmasını önlemek için işletim sistemi tarafından belirlenen tavanlarla oluşturulmuştur. Çoğu,
ulimit gibi komutlarla ayarlanabilir ve yapılandırılabilir, ancak bu kaynakların kullanımındaki değişikliklerin izlenmesi, yazılım kullanımınızdaki potansiyel olarak zararlı değişiklikleri algılamanıza yardımcı olabilir.
Uygulamalar ve Hizmetler için Toplama Metrikleri
Bir katman yukarı taşıdığımızda, sunucularda çalışan uygulamalar ve hizmetler ile başa çıkmaya başlıyoruz. Bu programlar daha önce çalışmak için kaynakları olarak kullandığımız tek tek sunucu bileşenlerini kullanmaktadır. Bu seviyedeki ölçümler, tek barındıran uygulamalarımızın ve hizmetlerimizin sağlığını anlamamıza yardımcı olur. Bu yapılandırmalarda en önemli faktörleri açıklığa kavuşturmak için dağıtılan çok ana sunuculu hizmetleri ayrı bir bölüme ayırdık.
Son bölümdeki ölçütler, tek tek bileşenlerin ve işletim sisteminin özelliklerini ve performansını ayrıntılı olarak açıklamış olsa da, burada metrikler, uygulamanın kendilerinden istediğimiz işi ne kadar iyi yapabileceğini bize anlatacaktır. Ayrıca, uygulamalarımızın hangi kaynaklara dayandığını ve bu kısıtlamaları ne kadar iyi yönettiklerini öğrenmek istiyoruz.
Bu bölümdeki metriklerin, son kez kullanabileceğimiz yaygınlaştırılmış yaklaşımdan bir sapmayı temsil ettiğini akılda tutmak önemlidir. Bu noktadan itibaren en önemli olan ölçümler, uygulamanızın özelliklerine, yapılandırmanıza ve makinelerinizde çalıştırmakta olduğunuz iş yüklerine çok bağlı olacaktır. En önemli metriklerini belirleme yöntemlerini tartışabiliriz, ancak sonuçlarınız sunucunun özellikle yapması istenen soruna bağlı olacaktır.
Müşterilere hizmet eden uygulamalar için, dört altın sinyalin çoğunlukla ortaya çıkması oldukça basittir:
- Gecikme : İstekleri tamamlama zamanı
- Trafik : Sunulan saniye başına talep sayısı
- Hatalar : İstemci isteklerini işlerken veya kaynaklara erişirken oluşan uygulama hataları
- Doygunluk : Kullanılan kaynakların yüzdesi veya miktarı
Takip etmek istediğiniz önemli ölçütlerden bazıları bağımlılıklarla ilgili olanlar. Bunlar çoğu kez tek tek bileşenlerle ilgili doygunluk ölçümleri ile ifade edilir. Örneğin, uygulama belleği kullanımı, kullanılabilir bağlantılar, açılan dosya tanıtıcısı sayısı veya etkin çalışan personel sayısı, yapılandırmanızın fiziksel sunucu bağlamında uygulanmasının etkisini anlamanıza yardımcı olabilir.
Dört altın sinyal, öncelikle dağıtılmış mikro servisler için tasarlandığından, bir istemci-sunucu mimarisi varsayıyorlardı. Bir istemci-sunucu mimarisi kullanmayan uygulamalar için aynı sinyaller hala önemlidir, ancak "trafik" sinyalinin biraz daha gözden geçirilmesi gerekebilir. Bu temelde bir meşguliyet ölçüsüdür, bu nedenle uygulamanız için aynı amaca hizmet edecek bir metriği bulmak metrik bulma. Özellikler, programınızın yaptıklarına bağlıdır, ancak bazı genel yedekler saniyede işlenen işlem veya veri sayısı olabilir.
Sunucuların Koleksiyonlarını ve İletişimlerini Ölçmek için Ölçütler
Çoğu hizmet, özellikle bir üretim ortamında çalıştırıldığında, performans ve kullanılabilirliği artırmak için birden fazla sunucu örneğini kapsar. Bu artan karmaşıklık seviyesi, izlenmesi için önemli olan ilave yüzey alanı ekler. Dağıtık bilgi işlem ve yedek sistemler, sistemlerinizi daha esnek hale getirebilir, ancak ağ tabanlı koordinasyon tek bir ana bilgisayar içindeki iletişimden daha kırılgan. Sağlam izleme, daha az güvenilir bir iletişim kanalıyla uğraşmanın zorluklarından bazılarını hafifletmeye yardımcı olabilir.
Dağıtım hizmetleri için ağın ötesinde, sunucu grubunun sağlığı ve performansı, herhangi bir barındırıcıya uygulanan önlemlerden daha önemlidir. Hizmetler, tek bir ana bilgisayarla sınırlandırıldığında üzerinde çalıştıkları bilgisayara yakından bağlı olsa da, yedekli çok ana sunuculu hizmetler, herhangi bir bilgisayara doğrudan bağımlılıktan ayrılmış durumda iken birden fazla ana makinenin kaynaklarından yararlanır.
Bu seviyedeki altın sinyaller, son bölümde hizmet sağlığını ölçenlere çok benzemektedir. Bununla birlikte, grup üyeleri arasında gerekli olan ek koordinasyonu dikkate alacaklardır:
- Gecikme : Havuzun isteklere yanıt verme zamanı, koordinasyon zamanı ya da arkadaşlarıyla senkronizasyon zamanı.
- Trafik : Saniye başına havuz tarafından işlenen istek sayısı
- Hatalar : İstemci isteklerini işlerken, kaynaklara erişirken veya akranlara erişirken oluşan uygulama hataları
- Doygunluk : Şu anda kullanılan kaynakların miktarı, şu anda kapasiteyle çalışan sunucuların sayısı, kullanılabilir sunucuların sayısı.
Bunların tek ana hizmetlere ilişkin önemli ölçütlerle kesin bir benzerliği olsa da, dağıtılan her sinyal karmaşıklığa sahiptir. İşlem birden fazla bilgisayar arasında iletişim gerektirdiğinden, gecikme daha karmaşık bir konudur. Trafik artık tek bir sunucunun yeteneklerinin bir fonksiyonu değil, bunun yerine grupların yeteneklerinin bir özeti ve işi dağıtmak için kullanılan yönlendirme algoritmasının verimliliği. Ağ bağlantısına veya ana makine arızasına ilişkin ek hata modları getirildi. Son olarak, doygunluk, ana makineler için mevcut kombine kaynaklar, her ana bilgisayarı birbirine bağlayan ağ bağlantısı ve her bilgisayarın ihtiyaç duyduğu bağımlılıklara erişimi düzgün bir şekilde koordine etme yeteneğini de içerecek şekilde genişler.
Harici Bağımlılıklara ve Dağıtım Ortamına İlişkin Ölçütler
Toplama yapacak en değerli metriklerden bazıları doğrudan kontrolünüz dışında uygulamanızın veya hizmetinizin sınırında bulunur. Barındırma sağlayıcınız ve uygulamanızın güvenebileceği hizmetler için oluşturulan hizmetler dahil olmak üzere dış bağımlılıklar. Bunlar doğrudan yönetemediğiniz, ancak kendi hizmetinizi garanti etme kabiliyetinizden ödün verebileceğiniz kaynakları temsil eder.
Harici bağımlılıklar kritik kaynakları temsil ettiğinden, tam kesintiler durumunda kullanılabilecek tek azaltma stratejilerinden biri operasyonları farklı bir sağlayıcıya çevirmektir. Bu, emtia hizmetleri için yalnızca geçerli bir strateji ve daha sonra da yalnızca önceden planlama ve sağlayıcıyla gevşek bağlanma ile. Azaltmanın zor olduğu durumlarda bile, uygulamanızı etkileyen harici olayların bilgisi inanılmaz derecede değerlidir.
Harici bağımlılıklara uygulanan altın sinyaller buna benzeyebilir:
- Gecikme : Hizmetten yanıt almak veya sağlayıcıdan yeni kaynaklar sağlamak için geçen süre
- Trafik : Harici bir hizmete itilen iş miktarı, harici bir API için yapılan isteklerin sayısı
- Hatalar : Servis talepleri için hata oranları
- Doygunluk : Kullanılan hesap kısıtlamalı kaynakların miktarı (örnekler, API istekleri, kabul edilebilir maliyet vb.)
Bu metrikler, bağımlılıklarınızla ilgili sorunları belirlemenize, yaklaşmakta olan kaynak tükenilmemesi konusunda sizi uyarmanıza ve giderlerin kontrol altında kalmasına yardımcı olmanıza yardımcı olabilir. Hizmetde yerinden oyma alternatifleri varsa, bu veriler metrikler bir sorunun oluştuğunu gösterdiğinde işi farklı bir sağlayıcıya taşımak isteyip istemediğinize karar vermek için kullanılabilir. Daha az esneklik içeren durumlar için, metrikler, bir operatöre duruma yanıt vermelerini ve mevcut elle indirgeme seçeneklerini uygulamalarını uyarmak için en azından kullanılabilir.
Genel İşlevsellik ve Uçtan Uca Deneyimi İzleyen Metrikler
En üst düzey metrikler, kullanıcıların etkileşimde bulunduğu en dış bileşen bağlamında istekleri sistem aracılığıyla izler. Bu, hizmetinize gelen istekleri alıp koordine etmekten sorumlu bir yük dengeleyicisi veya başka yönlendirme mekanizması olabilir. Bu, sisteminizle olan ilk dokunma noktasını temsil ettiğinden, metrikleri bu düzeyde toplamak kullanıcı deneyiminin tamamına yakındır.
Daha önce açıklanan metrikler inanılmaz derecede yararlı olsa da, bu bölümdeki ölçümler genellikle uyarı oluşturmak için en önemli unsurlardır. Yanıt yorgunluğundan kaçınmak için uyarılar (özellikle sayfalar) kullanıcı deneyimi üzerinde tanınabilir bir olumsuz etkisi olan senaryolar için ayrılmış olmalıdır. Bu metriklerle ortaya çıkan sorunlar, diğer düzeylerde toplanan metrikleri kullanarak ayrıntılı bir şekilde incelenerek incelenebilir.
Burada aradığımız sinyaller, daha önce açıkladığımız bireysel servislerin sinyallerine benziyor. Birincil farklılık burada toplanan verilerin kapsamı ve önemidır:
- Gecikme : Kullanıcı isteklerini tamamlama zamanı
- Trafik : Saniyedeki kullanıcı isteklerinin sayısı
- Hatalar : İstemci isteklerini işlerken veya kaynaklara erişirken oluşan hatalar
- Doygunluk : Kullanılan kaynakların yüzdesi veya miktarı
Bu metrikler kullanıcı isteklerine paralel olduğundan, bu metrikler için kabul edilebilir aralıkların dışına çıkan değerler, doğrudan kullanıcının etkisini gösterebilir. Müşteriye dönük veya dahili SLA'lara (hizmet düzeyi sözleşmeleri) uymayan gecikme, ciddi bir artış veya düşüş gösteren trafik, hatalar oranında artışlar ve kaynak kısıtlamaları nedeniyle isteklere sunulamama durumu oldukça mantıklı bu seviyede. Metriklerin doğru olduğunu varsayarsak, buradaki değerler, kullanılabilirlik, performans ve güvenilirlik hedeflerinize karşı doğrudan eşlenebilir.
Sonuç
Bu kılavuzda, sistemlerimizdeki etkileyici değişiklikleri keşfetmek ve anlamak için en çok yardımcı olma eğiliminde olan dört altın sinyali tartışarak başladık. Ardından sinyalleri, bir dağıtımın farklı katmanlarında izlemek için en önemli faktörleri değerlendirmek için bir lens olarak kullandık.
Sisteminizi üstten alta doğru değerlendirmek, güvenilir ve performanslı hizmetleri çalıştırmak için gereken kritik bileşenleri ve etkileşimleri belirlemenize yardımcı olabilir. Dört altın sinyal, sisteminizin sağlığını en iyi gösterecek metrikleri yapılandırmak için mükemmel bir başlangıç noktası olabilir. Bununla birlikte, altın sinyallerin iyi bir çerçeve olmasına rağmen, durumunuza özgü diğer metriklerin farkında olmalısınız unutmayın. Sorunları uyarmak için muhtemel olduğunu düşündüğünüz verileri toplayın veya işler ters gittiğinde sorun gidermenize yardımcı olun.
Bir önceki yazımız olan Web Seminer Serisi: Konteynerli Uygulamalar Oluşturun başlıklı makalemizi de okumanızı öneririz.