Merhaba, adım Eugene, Citymobil'de B2B ekip lideriyim. Ekibimizin görevlerinden biri, ortaklardan taksi siparişi vermek için entegrasyonları desteklemektir ve istikrarlı bir hizmet sağlamak için mikro hizmetlerimizde neler olduğunu her zaman anlamalıyız. Bunun için günlükleri sürekli izlemeniz gerekir.
Citymobil'de günlüklerle çalışmak için ELK yığınını (ElasticSearch, Logstash, Kibana) kullanıyoruz ve buraya gelen veri miktarı çok büyük. Yeni kodun devreye alınmasından sonra ortaya çıkabilecek bu istek yığınında sorun bulmak oldukça zordur. Ve bunların görsel olarak tanımlanması için Kibana'da bir Kontrol Paneli bölümü bulunmaktadır.
Habré hakkında, verileri almak ve depolamak için bir ELK yığınının nasıl kurulacağına dair örnekler içeren pek çok makale var, ancak bir Kontrol Paneli oluşturmayla ilgili hiçbir materyal yok. Bu nedenle Kibana'da gelen loglara dayalı olarak verilerin görsel temsilinin nasıl oluşturulacağını göstermek istiyorum.
Ayar
Daha açık hale getirmek için ELK ve Filebeat ile bir Docker görüntüsü oluşturdum. Ve küçük bir kaba yerleştirildi
Yapılandırma deposunu klonlayın docker-compose
ve ELK ayarlarını seçin ve komutla başlatın. docker-compose up
. Kasıtlı olarak bir anahtar eklememek -d
ELK yığınının ilerlemesini görmek için.
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker-compose up
Her şey doğru yapılandırılmışsa, günlüklerde bir giriş göreceğiz (belki de hemen değil, tüm yığınla bir konteyner başlatma işlemi birkaç dakika sürebilir):
{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],"pid":6,"message":"http server running at http://0:5601"}
Adres localhost:5061
Kibana açılmalı.
Yapılandırmamız gereken tek şey, Kibana için hangi verilerin görüntüleneceğine ilişkin bilgileri içeren bir Dizin Modeli oluşturmaktır. Bunu yapmak için, bir curl isteği yürüteceğiz veya grafik arayüzde bir dizi eylem gerçekleştireceğiz.
$ curl -XPOST -D- 'http://localhost:5601/api/saved_objects/index-pattern'
-H 'Content-Type: application/json'
-H 'kbn-xsrf: true'
-d '{"attributes":{"title":"logstash-*","timeFieldName":"@timestamp"}}'
GUI aracılığıyla Dizin Deseni Oluşturma
Yapılandırmak için sol menüdeki Keşfet bölümünü seçin ve Dizin modeli oluşturma sayfasına gidin.
"Dizin kalıbı oluştur" butonuna tıklayarak indeks oluşturma sayfasına ulaşıyoruz. "Dizin modeli adı" alanına "logstash-*" girin. Her şey doğru yapılandırıldıysa, Kibana'nın altında kuralın kapsamına giren dizinler gösterilecektir.
Bir sonraki sayfada zaman damgalı anahtar alanını seçin; bizim durumumuzda bu @timestamp
.
Bu, dizin ayarları sayfasını açacaktır ancak şu anda başka bir işlem yapmamıza gerek yoktur.
Artık log girişlerini göreceğimiz Discover kısmına tekrar gidebiliriz.
Kullanıcı Paneli
Soldaki menüde Kontrol Paneli oluşturma bölümüne tıklayın ve ilgili sayfaya gidin.
"Yeni kontrol paneli oluştur"a tıklayın ve Kontrol Paneline nesne ekleme sayfasına gidin.
"Yeni oluştur" düğmesine tıkladığınızda sistem sizden veri görüntüleme türünü seçmenizi isteyecektir. Kibana'da bunlardan çok sayıda var, ancak "Dikey Çubuk"un grafiksel bir temsilini ve tablo şeklinde bir "Veri Tablosu" oluşturmaya bakacağız. Diğer sunum türleri de benzer şekilde yapılandırılmıştır.
Mevcut nesnelerin bazıları B ve E olarak etiketlenmiştir; bu, formatın deneysel veya beta test aşamasında olduğu anlamına gelir. Zamanla format değişebilir veya Kibana'dan tamamen kaybolabilir.
Dikey çubuk
“Dikey Çubuk” örneği için hizmetimizin başarılı ve başarısız yanıt durumlarının oranının histogramını oluşturalım. Ayarların sonunda aşağıdaki grafiği elde ediyoruz:
Yanıt durumu < 400 olan tüm istekleri başarılı, >= 400 sorunlu olarak sınıflandıracağız.
"Dikey Çubuk" grafiği oluşturmak için bir veri kaynağı seçmemiz gerekiyor. Daha önce oluşturduğumuz Dizin Desenini seçin.
Varsayılan olarak, bir veri kaynağı seçildikten sonra tek bir düz grafik görünecektir. Hadi ayarlayalım.
"Kovalar" bloğunda, "Ekle" düğmesine basın, "X-asis"i seçin ve X eksenini ayarlayın. Günlükteki girişlerin zaman damgalarını bunun üzerine bir kenara koyalım. "Toplama" alanında "Tarih Histogramı"nı seçin ve "Alan"da zaman alanını gösteren "@timestamp"ı seçin. "Minimum aralık"ı "Otomatik" durumda bırakalım, otomatik olarak ekranımıza uyum sağlayacaktır.
"Güncelle" butonuna tıkladığımızda, her 30 saniyede bir istek sayısını gösteren bir grafik göreceğiz.
Şimdi Y ekseni boyunca sütunları ayarlayalım, seçilen zaman aralığındaki toplam istek sayısını görüntülüyoruz.
Başarılı ve başarısız istekler için verileri birleştirmemize olanak sağlayacak "Toplama" değerini "Toplam Kovası" olarak değiştirelim. Kova -> Toplama bloğunda, "Filtreler" ile toplamayı seçin ve filtrelemeyi "statusCode >= 400" ile ayarlayın. Grafikteki lejantta ve genel listede daha anlaşılır görüntülenmesi için "Custom label" alanında da göstergenin adını belirtiyoruz.
Ayarlar bloğunun altındaki “Güncelle” butonuna tıklayarak sorun isteklerini içeren bir grafik elde edeceğiz.
Açıklamanın yanındaki daireye tıklarsanız sütunların rengini değiştirebileceğiniz bir pencere açılacaktır.
Şimdi başarılı isteklere ilişkin verileri grafiğe ekleyelim. "Metrikler" bölümünde "Ekle" düğmesini tıklayın ve "Y ekseni"ni seçin.
Oluşturulan metrikte hatalı istekler için yaptığımız ayarların aynısını yapıyoruz. Yalnızca filtrede "statusCode < 400" ifadesini belirtiyoruz.
Yeni sütunun rengini değiştirerek sorunlu ve başarılı isteklerin oranını gösteren bir görüntü elde ediyoruz.
Ekranın üst kısmındaki “Kaydet” butonuna tıklayıp adını belirterek Dashboard’da ilk grafiği göreceğiz.
veri Tablosu
Şimdi "Veri Tablosu" tablo görünümünü düşünün. İstenen tüm URL'lerin ve bu isteklerin sayısının listesini içeren bir tablo oluşturalım. Dikey Çubuk örneğinde olduğu gibi öncelikle bir veri kaynağı seçiyoruz.
Bundan sonra ekranda seçilen zaman aralığı için toplam istek sayısını gösteren tek sütunlu bir tablo görüntülenecektir.
Yalnızca "Kovalar" bloğunu değiştireceğiz. "Ekle" düğmesini tıklayın ve "Satırları böl" seçeneğini seçin.
"Toplama" alanında "Şartlar"ı seçin. Ve beliren "Alan" alanında "url.keyword" seçeneğini seçin.
"Özel etiket" alanında "Url" değerini belirleyip "Güncelle"ye tıklayarak, seçilen zaman dilimi için URL'lerin her biri için istek sayısını içeren istenen tabloyu elde edeceğiz.
Ekranın üst kısmındaki "Kaydet" düğmesini tekrar tıklayın ve tablonun adını (örneğin URL'ler) belirtin. Kontrol Paneline geri dönelim ve her iki görünümün de oluşturulduğunu görelim.
Kontrol Paneli ile Çalışmak
Kontrol Panelini oluştururken görüntüleme nesnesi ayarlarında yalnızca ana görünüm parametrelerini belirliyoruz. Nesnelerdeki filtreler için veri belirtmenin bir anlamı yoktur; örneğin, "tarih aralığı", "kullanıcı aracısına göre filtreleme", "istek ülkesine göre filtreleme" vb. Nesnelerin üzerinde bulunan sorgu panelinde istenilen zaman dilimini belirtmek veya gerekli filtrelemeyi ayarlamak çok daha uygundur.
Bu panele eklenen filtreler tüm Dashboard'a uygulanacak ve tüm görüntüleme nesneleri, filtrelenen gerçek verilere uygun olarak yeniden oluşturulacaktır.
Sonuç
Kibana, her türlü veriyi uygun bir şekilde görselleştirmenize olanak tanıyan güçlü bir araçtır. İki ana ekran tipinin ayarını göstermeye çalıştım. Ancak diğer türler de benzer şekilde yapılandırılmıştır. Ve "perde arkasında" bıraktığım çok sayıda ayar, grafikleri ihtiyaçlarınıza göre çok esnek bir şekilde özelleştirmenize olanak tanıyacak.
Kaynak: habr.com