Salam, mənim adım Eugene, mən Citymobildə B2B komandasının lideriyəm. Komandamızın vəzifələrindən biri partnyorlardan taksi sifariş etmək üçün inteqrasiyaları dəstəkləməkdir və dayanıqlı xidmət təmin etmək üçün mikroservislərimizdə nə baş verdiyini həmişə başa düşməliyik. Və bunun üçün qeydləri daim izləmək lazımdır.
Citymobil-də biz loglarla işləmək üçün ELK yığınından (ElasticSearch, Logstash, Kibana) istifadə edirik və ora gələn məlumatların miqdarı böyükdür. Yeni kodun yerləşdirilməsindən sonra yarana biləcək bu sorğu kütləsində problemləri tapmaq olduqca çətindir. Və onların vizual identifikasiyası üçün Kibanada Dashboard bölməsi var.
Habré-də məlumatların qəbulu və saxlanması üçün ELK yığınının necə qurulacağına dair nümunələrlə kifayət qədər bir neçə məqalə var, lakin İdarə Paneli yaratmaq üçün müvafiq materiallar yoxdur. Buna görə də, Kibana-da daxil olan qeydlər əsasında verilənlərin vizual təsvirinin necə yaradılacağını göstərmək istəyirəm.
nizamlama
Daha aydın olmaq üçün mən ELK və Filebeat ilə Docker şəkli yaratdım. Və kiçik bir konteynerə qoyulur
Konfiqurasiya deposunu klonlayın docker-compose
və ELK parametrlərini seçin və əmrlə işə salın docker-compose up
. Qəsdən açar əlavə etməmək -d
ELK yığınının gedişatını görmək üçün.
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker-compose up
Hər şey düzgün konfiqurasiya edilibsə, onda biz qeydlərdə bir giriş görəcəyik (bəlkə də dərhal deyil, bütün yığınla konteynerin işə salınması prosesi bir neçə dəqiqə çəkə bilər):
{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],"pid":6,"message":"http server running at http://0:5601"}
Ünvan üzrə localhost:5061
Kibana açılmalıdır.
Konfiqurasiya etməmiz lazım olan yeganə şey, hansı məlumatların göstəriləcəyi ilə bağlı Kibana üçün İndeks Nümunəsi yaratmaqdır. Bunun üçün biz curl sorğusunu yerinə yetirəcəyik və ya qrafik interfeysdə bir sıra hərəkətləri yerinə yetirəcəyik.
$ 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 vasitəsilə İndeks Nümunəsinin yaradılması
Konfiqurasiya etmək üçün sol menyudan Discover bölməsini seçin və İndeks nümunəsinin yaradılması səhifəsinə keçin.
"İndeks nümunəsi yarat" düyməsini sıxaraq, indeks yaratma səhifəsinə keçirik. "İndeks nümunəsinin adı" sahəsinə "logstash-*" daxil edin. Hər şey düzgün konfiqurasiya edilibsə, aşağıda Kibana qaydaya düşən indeksləri göstərəcək.
Növbəti səhifədə vaxt möhürü olan açar sahəsini seçin, bizim vəziyyətimizdə belədir @timestamp
.
Bu, indeks parametrləri səhifəsini açacaq, lakin hazırda bizdən əlavə hərəkət tələb olunmur.
İndi biz yenidən Discover bölməsinə keçə bilərik, burada jurnal qeydlərini görəcəyik.
İdarə paneli
Sol menyuda Dashboard yaradılması bölməsinə klikləyin və müvafiq səhifəyə keçin.
"Yeni tablosunu yarat" üzərinə klikləyin və İdarə panelinə obyektlər əlavə etmək üçün səhifəyə keçin.
"Yeni yaradın" düyməsini basın və sistem sizə məlumat ekranının növünü seçməyi təklif edəcək. Kibana onların sayı çoxdur, lakin biz "Şaquli zolağın" qrafik təsvirinin və cədvəlli "Məlumat cədvəli"nin yaradılmasına baxacağıq. Digər təqdimat növləri də oxşar şəkildə konfiqurasiya edilmişdir.
Bəzi mövcud obyektlər B və E ilə etiketlənir, bu o deməkdir ki, format eksperimentaldır və ya beta testdədir. Vaxt keçdikcə format Kibanadan dəyişə və ya tamamilə yox ola bilər.
Şaquli bar
"Şaquli Bar" nümunəsi üçün xidmətimizin uğurlu və uğursuz cavab statuslarının nisbətinin histoqramını yaradaq. Parametrlərin sonunda aşağıdakı qrafiki alırıq:
Cavab statusu < 400 olan bütün sorğuları uğurlu, >= 400 isə problemli kimi təsnif edəcəyik.
"Şaquli Bar" diaqramı yaratmaq üçün məlumat mənbəyi seçməliyik. Daha əvvəl yaratdığımız İndeks Nümunəsini seçin.
Varsayılan olaraq, məlumat mənbəyi seçildikdən sonra tək möhkəm qrafik görünəcək. Gəlin onu quraşdıraq.
"Buckets" blokunda "Əlavə et" düyməsini sıxın, "X-asis" seçin və X oxunu qurun.Gəlin jurnalda qeydlərin qəbulu üçün vaxt ştamplarını bir kənara qoyaq. “Aqreqasiya” sahəsində “Tarix histoqramı”nı, “Sahə”də isə vaxt sahəsini göstərən “@zaman damgası”nı seçin. Gəlin "Minimum interval"ı "Avtomatik" vəziyyətində buraxaq və o, avtomatik olaraq bizim displeyimizə uyğunlaşacaq.
"Yeniləmə" düyməsini klikləməklə, hər 30 saniyədən bir sorğuların sayı ilə bir qrafik görəcəyik.
İndi Y oxu boyunca sütunları quraşdıraq.İndi biz seçilmiş vaxt intervalında sorğuların ümumi sayını göstəririk.
Uğurlu və uğursuz sorğular üçün məlumatları birləşdirməyə imkan verəcək "Aqreqasiya" dəyərini "Cəmi Kod" olaraq dəyişdirək. Bucket -> Aqreqasiya blokunda "Filtrlər" üzrə aqreqasiyanı seçin və filtrləməni "statusCode >= 400" ilə təyin edin. Və "Xüsusi etiket" sahəsində, diaqramdakı əfsanədə və ümumi siyahıda daha başa düşülən ekran üçün göstəricinin adını göstəririk.
Parametrlər blokunun altındakı "Yeniləmə" düyməsini klikləməklə, problem sorğuları olan bir qrafik alacağıq.
Əfsanənin yanındakı dairəni klikləsəniz, sütunların rəngini dəyişdirə biləcəyiniz bir pəncərə görünəcəkdir.
İndi diaqrama uğurlu sorğular haqqında məlumatları əlavə edək. "Metriklər" bölməsində "Əlavə et" düyməsini basın və "Y oxu"nu seçin.
Yaradılmış metrikada biz səhv sorğularla eyni parametrləri edirik. Yalnız filtrdə biz "statusCode < 400" təyin edirik.
Yeni sütunun rəngini dəyişdirməklə, problemli və uğurlu sorğuların nisbətinin görüntüsünü əldə edirik.
Ekranın yuxarısındakı “Saxla” düyməsini sıxaraq və adı qeyd etməklə, İdarə panelində ilk diaqramı görəcəyik.
Məlumat Cədvəli
İndi "Məlumat Cədvəli" cədvəlli görünüşünü nəzərdən keçirin. Gəlin tələb olunan bütün URL-lərin siyahısı və həmin sorğuların sayı ilə cədvəl yaradaq. Vertical Bar nümunəsində olduğu kimi, biz əvvəlcə məlumat mənbəyi seçirik.
Bundan sonra ekranda seçilmiş vaxt intervalı üçün sorğuların ümumi sayını göstərən bir sütunlu bir cədvəl görünəcək.
Biz yalnız "Buckets" blokunu dəyişəcəyik. "Əlavə et" düyməsini basın və "Sətirləri ayır" seçin.
"Aqreqasiya" sahəsində "Şərtlər" seçin. Və görünən "Sahə" sahəsində "url.keyword" seçin.
"Xüsusi etiket" sahəsində "Url" dəyərini göstərərək və "Yeniləmə" düyməsini klikləməklə, seçilmiş müddət üçün URL-lərin hər biri üçün sorğuların sayı ilə istədiyiniz cədvəli əldə edəcəyik.
Ekranın yuxarı hissəsində, yenidən "Saxla" düyməsini basın və cədvəlin adını, məsələn, Url-ləri göstərin. Gəlin İdarə Panelinə qayıdaq və yaradılan hər iki görünüşə baxaq.
Dashboard ilə işləmək
Dashboard yaratarkən, biz ekran obyekti parametrlərində yalnız əsas görünüş parametrlərini təyin edirik. Obyektlərdəki filtrlər üçün məlumatların təyin edilməsi mənasızdır, məsələn, “tarix diapazonu”, “istifadəçi agenti ilə filtrləmə”, “sorğu ölkəsi üzrə filtrləmə” və s. İstədiyiniz vaxt müddətini təyin etmək və ya obyektlərin üstündə yerləşən sorğu panelində lazımi filtrasiyanı təyin etmək daha rahatdır.
Bu panelə əlavə edilmiş filtrlər bütün İdarə Panelinə tətbiq ediləcək və bütün displey obyektləri faktiki süzülmüş məlumatlara uyğun olaraq yenidən qurulacaq.
Nəticə
Kibana istənilən məlumatı rahat şəkildə vizuallaşdırmağa imkan verən güclü vasitədir. Mən iki əsas ekran növünün parametrlərini göstərməyə çalışdım. Ancaq digər növlər oxşar şəkildə konfiqurasiya edilir. Və "pərdə arxasında" qoyduğum parametrlərin çoxluğu sizə ehtiyaclarınıza uyğun olaraq qrafikləri çox çevik şəkildə fərdiləşdirməyə imkan verəcəkdir.
Mənbə: www.habr.com