Düzenle | Zhang Chan-Verimli Geliştirme Operasyonu ve Bakımı
İzleme sistemi, tüm BT mimarisinin en önemli önceliğidir. Sorun giderme ve sorun lokasyonundan iş tahmini ve operasyon yönetimine kadar izleme sistemi ayrılmazdır.Sağlıklı ve sağlıklı bir BT mimarisinin bir tane olması gerektiği söylenebilir. Güvenilir izleme sistemi.
Ama izleme sadece izleme mi? Yıllar geçtikçe, izleme terminolojisi hakkında çok fazla kafa karışıklığı oldu ve bazı korkunç araçlar her şeyi tek bir formatta yapabileceklerini iddia etti.
DevOps ve bulut yerelleri çağında, bu yıl, ilk olarak CNCF-Landscape'in Gözlemlenebilirlik gruplamasının ortaya çıkışında ortaya çıkan "Gözlemlenebilirlik" (Gözlenebilirlik) BT alanına tanıtıldı. Bu grubun içeriğinden yola çıkarak, izleme, günlük tutma ve izleme alanlarındaki projeleri içerir. Gözlemlenebilirliğin izlemeden farkı nedir? Basitçe söylemek gerekirse, ikincisi, öncekinin bir alt kümesidir. İzleme, sistemin arıza modelini tanımlamak için sistemin arıza faktörlerine odaklanır. Çekirdeği işletme ve bakım ve izleme tesisleridir. Başarısızlığa odaklanmaya ek olarak, gözlemlenebilirlik, Ar-Ge'nin, uygulamanın ve sistemin kendi kendini incelemesinin merkezinde yer alır. Sistemin kendi durumunu nasıl doğru bir şekilde göstermesi gerektiğini keşfetmek, yaratıcının bakış açısından. Biri dışarıdan içeriye, biri içeriden dışarıya.
Gözlem araçları şunları içerir: Metrik toplama (çoğunlukla zaman serisi verileri), Günlük toplama, Uyarı / görselleştirmeler, Dağıtılmış izleme.
Prometheus
Prometheus, bulut tabanlı uygulamalar için en tanınmış zaman serisi izleme çözümüdür. CNCF tarafından barındırılır ve Go dilinde geliştirilmiştir. Google BorgMon izleme sisteminin benzer bir uygulamasıdır.
Prometheus, Çekme modelini kullanır ve Prometheus Sunucusu, izleme verilerini HTTP çekme yoluyla her hedefe çeker. Toplanacak uç noktaları ve toplama için gerekli aralığı açıklamak için kısmi konfigürasyon kullanır. Her uç noktanın, verileri toplayan ve her istekte (veya istemci yapılandırılmış) gösterimi güncelleyen bir istemcisi vardır. Bu verileri toplayın ve yerel diskteki verimli bir depolama motoruna kaydedin. Depolama sistemi, her ölçüm için yalnızca ek dosyalar kullanır.
Prometheus, PromQL adı verilen verileri seçmek ve görüntülemek için üst düzey bir ifade dili içerir. Bu veriler, REST API aracılığıyla grafik veya tablolarda görüntülenebilir veya harici sistemler tarafından kullanılabilir. İfade dili, kullanıcıların regresyon oluşturmasına, gerçek zamanlı verileri analiz etmesine veya geçmiş verilerini trendlemesine olanak tanır. Etiketler ayrıca verileri filtrelemek ve sorgulamak için harika bir araçtır. Etiketler her bir metrik adıyla ilişkilendirilebilir.
Prometheus, uyarıları işlemek için AlertManager ile birlikte gelir. AlertManager, uyarı gönderme süresini sınırlamak için uyarı toplama ve daha karmaşık trafiğe izin verir. Anahtar kapalıyken 10 düğümün aniden bir sorun yaşadığını varsayarsak, bu 10 düğüm hakkında alarm göndermeniz gerekmeyebilir, çünkü alarmı alan herkes anahtar onarılıncaya kadar herhangi bir işlem gerçekleştiremeyebilir. AlertManager'ı kullanarak, ağ ekibine yalnızca anahtar uyarılarını gönderebilir ve etkilenebilecek sistemle ilgili diğer bilgileri dahil edebilirsiniz; ayrıca sistem ekibine e-postalar (sayfalar yerine) gönderebilir, böylece sistem kapalıysa bu düğümlerin kapalı olduğunu bilmelerini sağlayabilirsiniz. Anahtar onarıldıktan sonra kurtarma yoktur, aksi takdirde yanıt vermeleri gerekmez. Böyle bir durumda AlertManager, anahtar uyarısı tarafından bastırılan uyarıları yeniden etkinleştirecektir.
Grafit
Graphite, Python'da yazılmış, ucuz donanımlarda çalıştırılabilen, açık kaynaklı, kurumsal düzeyde bir izleme ve grafik aracıdır. Grafit, zaman serisi verilerini gerçek zamanlı olarak toplayabilir, depolayabilir ve görüntüleyebilir. Üç yazılım bileşeninden oluşur:
Grafit, uygulamanın Grafitin Karbon bileşenine veri göndermesine izin vererek uygulamadan veri alan itme tabanlı bir sistemdir. Carbon bu verileri Whisper veritabanında depolar ve Graphite Web bileşeni Carbon'u ve veritabanını okur ve kullanıcıların tarayıcıda veri grafikleri çizmesine veya API'ler aracılığıyla veri çıkarmasına olanak tanır. Çok güzel bir özellik, bu grafikleri diğer uygulamalara kolayca gömülebilmeleri için görüntü veya veri dosyası olarak dışa aktarma yeteneğidir.
Grafit'in bir başka ilginç özelliği, zaman serisi göstergeleriyle ilgili keyfi olayları saklama yeteneğidir. Uygulamalar veya altyapı dağıtımları, operasyon ve bakım personelinin veya geliştiricilerin sorunları gidermesine ve araştırılan anormal davranış ortamında daha fazla arka plan bilgisi elde etmesine olanak tanıyan Grafit'e eklenebilir ve izlenebilir.
Grafit izlemeye başlarken:
InfluxDB, Go dilinde yazılmış nispeten yeni bir zaman serisi veritabanıdır, harici bağımlılık yoktur, çok uygun kurulum ve konfigürasyondur ve büyük ölçekli dağıtılmış sistemler için izleme sistemleri oluşturmak için uygundur.
Tasarım hedefi, dağıtılmış ve yatay ölçeklenebilirlik sağlamaktır.
InfluxDB'nin bazı temel özellikleri:
OpenTSDB, Hbase'e dayalı, dağıtılmış ve ölçeklenebilir bir zaman serisi veritabanıdır ve kesin olmak gerekirse, sadece bir HBase uygulamasıdır. OpenTSDB'nin temel amacı, bir izleme sistemi yapmaktır; örneğin, büyük ölçekli kümelerin (ağ ekipmanı, işletim sistemleri, uygulamalar ve çevresel durum dahil) izleme verilerini toplamak ve bunları depolamak ve sorgulamaktır.
OpenTSDB, ölçümleri dinamik olarak artırabilir ve toplayıcıları herhangi bir dilde esnek bir şekilde destekleyebilir, bu da operasyon ve bakım personelini büyük ölçüde kolaylaştırır ve geliştirme ve bakım maliyetlerini azaltır.
OpenTSDB'de depolanan veriler birim olarak metrik kullanır.Bir ölçü bir izleme öğesidir.Örneğin, bir sunucu durumunda, CPU kullanımı ve bellek kullanımı gibi ölçütler olacaktır;
OpenTSDB, HBase'i depolama olarak kullanır.İyi tasarımı nedeniyle, ikinci seviyede metrik veri depolamayı destekler;
OpenTSDB, verilerin kalıcı olarak depolanmasını destekler, yani kaydedilen veriler aktif olarak silinmez; ve orijinal veriler her zaman kaydedilir (bazı izleme sistemleri verileri uzun süre önce kaydeder)
Bazı kayıt kuralları:
ELK
ELK, Elasticsearch, Logstash ve Kibana'nın kısaltmasıdır.Gerçek zamanlı veri alma ve analizde, üçü genellikle işbirliği içinde kullanılır ve piyasadaki en popüler açık kaynaklı günlük toplama aracıdır. Netflix, Facebook, Microsoft, LinkedIn ve Cisco tarafından kullanılmaktadır. Her üç bileşen de Elastic tarafından geliştirilir ve sürdürülür. Elasticsearch, Lucene arama motoru tarafından uygulanan bir NoSQL'dir. Logstash, verileri Elasticsearch gibi mağazalara çıkarabilen, dönüştürebilen ve yükleyebilen bir günlük işlem hattı sistemidir. Kibana, Elasticsearch'ün üstündeki görselleştirme katmanıdır.
Birkaç yıl önce, veri toplayıcı Beats'in verileri Logstash'a aktarma sürecini basitleştirdiği ortaya çıktı. Kullanıcılar Beat'i yükleyebilir ve her günlük türü için doğru sözdizimini bilmeden Elasticsearch'te etkin kullanım için NGINX günlüklerini veya Envoy proxy günlüklerini dışa aktarabilir.
Üretim düzeyinde bir ELK yığını kurarken, Kafka, Redis ve NGINX gibi diğer parçaları içerebilir. Ek olarak, Logstash genellikle Fluentd ile değiştirilebilir. Bu sistemin işletilmesi çok karmaşıktır ve erken aşamada birçok şikayete yol açan birçok sorun vardı. Bu sorunlar büyük ölçüde giderilmiştir, ancak yine de karmaşık bir sistemdir, bu nedenle daha küçük işlemler için denemek istemeyebilirsiniz.
ELK yığını ayrıca Kibana aracılığıyla mükemmel görselleştirme araçları sağlar, ancak uyarı yeteneklerinden yoksundur. Elastic, ücretli X-Pack eklentisinde uyarılar sağlar, ancak açık kaynak sistemde yerleşik bir işlev yoktur. Yelp, bu sorun için ElastAlert adlı bir çözüm sunar ve başka benzer araçlar da olabilir. Bu ek yazılım çok güçlüdür, ancak ELK yığınının karmaşıklığını daha da artırır.
ELK Stack, son iki yılda hızla yükseldi.Geleneksel günlük işleme çözümleriyle karşılaştırıldığında ELK Stack aşağıdaki avantajlara sahiptir:
Graylog
Graylog, Elasticsearch, Java ve MongoDB'ye dayalı güçlü bir günlük yönetimi ve analiz aracıdır, bu da ELK yığını gibi çalışmayı çok karmaşık veya daha da karmaşık hale getirir. Bununla birlikte, Graylog'un açık kaynak sürümü, yerleşik uyarıların yanı sıra akış, mesaj yeniden yazma ve konum belirleme gibi diğer bazı önemli özelliklerle birlikte gelir.
Akış işlevi, verilerin işleme sırasında gerçek zamanlı olarak belirli bir Akışa yönlendirilmesine izin verir. Bu işlevi kullanarak, kullanıcılar bir Akımdaki tüm veritabanı hatalarını ve başka bir Akımdaki web sunucusu hatalarını görüntüleyebilir. Yeni öğeler eklendiğinde veya eşikler aşıldığında, uyarılar bu Akışları temel alabilir. Gecikme, günlük toplama sisteminin en büyük sorunlarından biri olabilir.Bu sorun, Graylog'daki Akışlarda ortadan kaldırılır.Günlük bir kez girdikten sonra, işlenmeden Akış aracılığıyla diğer sistemlere yönlendirilebilir.
Mesaj yeniden yazma özelliği, gelen tüm mesajların kullanıcı tanımlı kural dosyalarına göre değerlendirilmesine izin veren açık kaynak kural motoru Drools'u kullanır. Dosya mesajları atabilir (kara liste olarak adlandırılır), alanlar ekleyebilir veya silebilir ve bilgileri değiştirebilir.
Graylog'un belki de en havalı özelliği, harita üzerinde IP adreslerinin çizilmesini destekleyen coğrafi konum özelliğidir. Bu özellik oldukça yaygındır ve Kibana'da da mevcuttur, ancak Graylog özellikle bir SIEM sistemi olarak kullanmak istiyorsanız çok fazla değer katar. Coğrafi konum yetenekleri, Graylog'un açık kaynak sürümünde sağlanır.
Resim kaynağı: https://testerhome.com/topics/3026
Graylog'u çekici yapan şey:
Graylog açık kaynak sürümü resmi web sitesi: https://www.graylog.org/
Fluentd
Fluentd, tamamen açık kaynaklı ve ücretsiz bir günlük bilgileri toplama yazılımıdır. 125'ten fazla sistemin günlük bilgilerinin toplanmasını destekler. C ve Ruby ile yazılmıştır. CNCF tarafından bir kuluçka projesi olarak kabul edilir ve AWS ve Google Cloud tarafından tavsiye edilir. Birçok kurulumda Fluentd, tüm düğüm günlüklerini toplamak ve bunları merkezi bir depolama sistemine göndermek için yerel bir toplayıcı görevi gören Logstash'a ortak bir alternatif haline geldi. Ancak Fluentd bir log entegrasyon sistemi değildir.
Resim kaynağı:
Fluentd, farklı veri kaynaklarının ve veri çıkışlarının hızlı ve kolay entegrasyonu için kullanım durumlarınızın çoğunu kapsayan 500'den fazla eklentiye sahip güçlü bir eklenti sistemi kullanır.
Fluentd, düşük bellek gereksinimlerine (yalnızca onlarca megabayt) ve yüksek verimliliğe sahiptir, bu nedenle Kubernetes ortamlarında yaygın bir seçimdir. Kubernetes gibi bir ortamda, her Bölmenin bir Fluentd yan arabası vardır ve bellek tüketimi, her yeni Kapsülün oluşturulmasıyla doğrusal olarak artacaktır. Fluentd kullanmak, sistem kullanımını büyük ölçüde azaltacaktır.
Alarm ve görselleştirme aracının amacını adıyla öğrenebilirsiniz Alarm ve görselleştirme sistemi, diğer sistemlerin çıktılarını anlamaya odaklanır. Bu yüzden birlikte gruplanırlar. Görselleştirme ve uyarı araçları, sistemin çıktısını yapılandırabilir.
Yaygın uyarı ve görselleştirme türleri
Önce neyin alarm olmadığını bulmalıyız. Yanıtlayıcı sorunla ilgili herhangi bir işlem yapamazsa, uyarı gönderilmemelidir. Bu senaryo, birden çok kişiye gönderilen uyarıları içerir, ancak yalnızca birkaç kişi yanıt verebilir.
Örneğin, bir operatör alarm sisteminden her gün yüzlerce e-posta alırsa, alarm sisteminden gelen tüm e-postaları görmezden gelir ve yalnızca gerçek olaylara bir sorunla karşılaştığında yanıt verir, müşteri bir e-posta gönderir veya patron çağrıları yapar. Bu durumda alarm anlamını ve amacını yitirmiştir.
Alarmlar, bir dizi bilgi veya durum güncellemesi olmamalıdır. Bunlar, bilinmesi gereken ancak yanıtlanmaması gereken olayları temsil eden, birçok sistemin alarm olarak adlandırdığı veri noktalarıdır. Bu bilgi, gerçek bildirimi tetikleyen olay yerine genellikle uyarı aracının görselleştirme sisteminin bir parçasıdır.
Alarmlar iki kategoriye ayrılabilir: dahili kesintiler ve harici kesintiler. Bu modelde, sistem performansındaki düşüş bir kesinti olarak kabul edilir çünkü genellikle her bir kullanıcının etkisinin ne kadar şiddetli olduğu bilinmemektedir.
Dahili kesmenin önceliği, harici kesmeden daha düşüktür, ancak yine de hızlı bir tepkiye ihtiyaç duyar. İç kesintiler genellikle şirket çalışanları tarafından kullanılan dahili sistemleri veya yalnızca şirket çalışanlarının görebildiği uygulama bileşenlerini içerir.
Dış kesintiler, müşterileri anında etkileyecek tüm sistem kesintilerini içerir. Bunlar, sistem güncellemelerinin yayınlanmasını etkileyen sistem kesintilerini içermez, ancak müşteri odaklı uygulama hatalarını, veritabanı kesintilerini, ağ bölümlerini vb. Ve kullanıcıları doğrudan etkilemeyebilecek araç hatalarını içerir.
Görselleştirme
Görselleştirme ve anlama sistemleri için ortak çözümler şunlardır:
çizgi grafik : Çizgi grafik muhtemelen en yaygın ve en yaygın görselleştirmedir. Zamanla çizgi grafiği sistemin iyi anlaşılmasını sağlayabilir. İlişkileri göstermek için çizgi grafiklerini de yığabilirsiniz. Örneğin, her bir sunucudaki istekleri ayrı ayrı görüntülemek isteyebilirsiniz, ancak bunları toplu olarak da görüntüleyebilirsiniz.
Sıcaklık haritası : Diğer bir yaygın görselleştirme, histogramla görüntüleme için yararlı olan bir ısı haritasıdır. Bu tür bir görselleştirme, bir çubuk grafiğe benzer, ancak genel metriğin farklı yüzdelik dilimlerini temsil eden degradeleri görüntüleyebilir.
Örneğin, istek gecikmesine bakıyor ve tüm taleplerin genel eğilimini ve dağılımını hızlı bir şekilde anlamak isteyebilirsiniz. Isı haritası bunun için çok kullanışlıdır, her parçanın numarasına renge göre hızlıca göz atabilirsiniz.
ölçü : Gösterge, tek değer ölçümünün görselleştirilmesidir. Göstergenin görünümü yarım daire veya tam daire olabilir. İstenilen tasarım estetiği etkisini elde etmek için iç ve dış hatların kalınlığını özelleştirebilirsiniz. Sayacın ve metnin rengi, bir dizi kurala göre tamamen özelleştirilebilir.
Alev grafiği : Alev grafiği, CPU'nun çağrı yığınını göstermek için kullanılan performansın sonucuna dayalı bir SVG görüntüsüdür.
Y ekseni çağrı yığınını temsil eder ve her katman bir işlevdir. Çağrı yığını ne kadar derinse, alev o kadar yüksek, üstteki işlev çalıştırılır ve alt, onun ana işlevidir.
X ekseni, örnek sayısını temsil eder.Bir fonksiyon, x ekseninde daha geniş bir genişliğe sahipse, daha fazla kez çizildiği anlamına gelir, yani çalıştırılması daha uzun sürer. X ekseninin zamanı temsil etmediğini, ancak tüm çağrı yığınlarının birleştirildiğini ve alfabetik sırada düzenlendiğini unutmayın.
Uyarı aracı
Bosun
Bosun, Stack Exchange ekibi tarafından oluşturulan, golang dilinde yazılmış, karmaşık alarm kurallarının tanımını destekleyen ve OpenTSDB, Graphite ve Logstash-Elasticsearch gibi veri kaynaklarını destekleyen yeni bir izleme ve alarm sistemidir. Bosun, zabbix ve nagios'un güçlü bir rakibi olacak.
Resim kaynağı:
Bosun'un çok akıllıca bir özelliği, alarmları geçmiş verilere dayalı olarak test etmenize izin vermesidir. Bosun ayrıca basit grafikler görüntüleme ve alarm oluşturma gibi bazı ortak işlevlere de sahiptir. Bosun, basit bir programlama dili seti olarak kabul edilebilen izleme göstergelerini sorgulamak için bir ifade dili kullanır, bu da onu biraz daha karmaşık hale getirirken esnek ve güçlü kılar.
Cabot
Cabot, PagerDuty, Sunucu Yoğunluğu, Pingdom ve Nagios'un en iyi özelliklerinden bazılarını entegre eden ücretsiz ve açık kaynaklı hafif bir izleme ve alarm hizmetidir, ancak bu araçlar kadar karmaşık değildir ve oldukları kadar pahalı değildir.
Cabot'un mimarisi Bosun'a benzer ve veri toplamaz. Graphite ve Jenkins için yerel destek nispeten nadirdir.
Cabot, hizmetlerin izlenmesine ("Stage Redis sunucusu", "üretim ElasticSearch kümesi" gibi) ve hizmet başarısız olduğunda görev başındaki ekibe tek bir kod satırı bile olmadan telefon görüşmeleri, metin mesajları veya e-posta uyarıları göndermeye izin veren bir web arayüzü sağlar. yazmak.
Catbot'un alarmı şunlara dayanabilir:
Yepyeni bir veri toplayıcı sistemi uygulamaya ve sürdürmeye gerek yoktur.
Görselleştirme aracı
Grafana
Grafana, büyük ölçekli ölçüm verilerini görselleştirmek için açık kaynaklı bir programdır.Go dilinde geliştirilmiştir ve eksiksiz işlevlere sahiptir.Güzel gösterge tabloları ve çizelgeleri vardır.Günlük analizi ve görüntüleme grafikleri için kullanılabilir (API istek günlükleri gibi). Birden çok arka ucu destekler. ElasticSearch, InfluxDB, OpenTSDB, vb. Gibi, çalışırken değiştirilebilir kontrol panelleri ve ölçeklenebilir veri kaynakları ile ağ altyapısı ve uygulama analizi için en yaygın olarak kullanılır,
Alarmları sezgisel olarak ayarlamak için grafana kullanın. Bu, grafikleri görüntüleyebileceğiniz ve hatta sistem performansındaki düşüş nedeniyle uyarının nerede tetiklenmesi gerektiğini görebileceğiniz, uyarıyı tetiklemek için grafiğe tıklayabileceğiniz ve ardından Grafana'ya uyarıyı nereye göndereceğini söyleyebileceğiniz anlamına gelir. Bu, alarm platformunun yerini alması gerekmeyen çok güçlü tamamlayıcı yeni bir özelliktir, ancak kesinlikle alarm işlevini geliştirebilir.
Temelde Grafana, kullanıcıların gösterge tablolarını daha kolay oluşturmasına ve düzenlemesine yardımcı olabilecek, Graphite-web'e zengin özelliklere sahip bir alternatiftir. Metriklerin ve işlevlerin düzenlenmesini basitleştirmek için benzersiz bir Grafit hedef ayrıştırıcı içerir. Grafana'nın hızlı istemci tarafı oluşturma özelliği, varsayılan olarak Flot kullanır, bu da uzun bir zaman aralığını bile idare edebilir, böylece kullanıcılar akıllı eksen biçimleriyle (çizgiler ve noktalar gibi) karmaşık grafikler oluşturabilir.
Vizceral
Vizceral, uygulamalar ve kümeler arasındaki ağ trafiğini neredeyse gerçek zamanlı olarak izlemek için Netflix tarafından yayınlanan açık kaynaklı bir projedir.
Vizceral, WebG standartları kullanılarak uygulanan, veri görüntüleme ve etkileşimi gerçekleştirebilen bir grup dinamik ekran devre şeması bileşenidir.Üç boyuta bölünmüştür: küresel, kısmi alan ve yatay, verileri daha sezgisel ve net hale getirir.
Vizceral bileşeni, birden çok trafik grafiğini alabilir ve her bir "alana" gelen tüm trafiği gösteren ve alanlar arası iletişimi destekleyen "küresel" bir grafik oluşturacaktır.
Netflix bölgeler arası trafik haritasıReferans
https://opensource.com/article/18/8/now-available-open-source-guide-devops-monitoring-tools