Bună ziua, mă numesc Eugene, sunt lider de echipă B2B la Citymobil. Una dintre sarcinile echipei noastre este să sprijine integrările pentru comandarea unui taxi de la parteneri, iar pentru a asigura un serviciu stabil, trebuie să înțelegem mereu ce se întâmplă în microserviciile noastre. Și pentru aceasta trebuie să monitorizați în mod constant jurnalele.
În Citymobil, folosim stiva ELK (ElasticSearch, Logstash, Kibana) pentru a lucra cu jurnalele, iar cantitatea de date care vin acolo este uriașă. Găsirea problemelor în această masă de solicitări care pot apărea după implementarea noului cod este destul de dificilă. Și pentru identificarea lor vizuală, Kibana are o secțiune Dashboard.
Există destul de multe articole despre Habré cu exemple despre cum să configurați o stivă ELK pentru a primi și stoca date, dar nu există materiale relevante pentru crearea unui tablou de bord. Prin urmare, vreau să arăt cum să creez o reprezentare vizuală a datelor bazată pe jurnalele primite în Kibana.
ajustare
Pentru a fi mai clar, am creat o imagine Docker cu ELK și Filebeat. Și pus într-un recipient un mic
Clonează depozitul de configurare docker-compose
și setările ELK și lansați-l cu comanda docker-compose up
. Nu adăugați intenționat o cheie -d
pentru a vedea progresul stivei ELK.
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker-compose up
Dacă totul este configurat corect, atunci vom vedea o intrare în jurnale (poate nu imediat, procesul de lansare a unui container cu întreaga stivă poate dura câteva minute):
{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],"pid":6,"message":"http server running at http://0:5601"}
adresa localhost:5061
Kibana ar trebui să se deschidă.
Singurul lucru pe care trebuie să-l configuram este să creăm un model de index pentru Kibana cu informații despre datele de afișat. Pentru a face acest lucru, vom executa o cerere de curl sau vom efectua o serie de acțiuni în interfața grafică.
$ 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"}}'
Crearea unui model de index prin GUI
Pentru a configura, selectați secțiunea Descoperiți din meniul din stânga și ajungeți la pagina de creare a modelului de index.
Făcând clic pe butonul „Creare model de index”, ajungem la pagina de creare a indexului. În câmpul „Nume model de index”, introduceți „logstash-*”. Dacă totul este configurat corect, mai jos Kibana va afișa indecșii care se încadrează sub regulă.
Pe pagina următoare, selectați câmpul cheie cu un marcaj de timp, în cazul nostru este @timestamp
.
Aceasta va afișa pagina de setări de index, dar nu este necesară nicio acțiune suplimentară din partea noastră în acest moment.
Acum putem merge din nou la secțiunea Discover, unde vom vedea intrările de jurnal.
Contul Meu
În meniul din stânga, faceți clic pe secțiunea de creare a tabloului de bord și ajungeți la pagina corespunzătoare.
Faceți clic pe „Creați un nou tablou de bord” și ajungeți la pagina pentru adăugarea de obiecte la tabloul de bord.
Faceți clic pe butonul „Creați nou”, iar sistemul vă va solicita să selectați tipul de afișare a datelor. Kibana are un număr mare de ele, dar ne vom uita la crearea unei reprezentări grafice a „Barei verticale” și a unui „Tabel de date” tabelar. Alte tipuri de prezentare sunt configurate în mod similar.
Unele obiecte disponibile sunt etichetate B și E, ceea ce înseamnă că formatul este experimental sau în testare beta. În timp, formatul se poate schimba sau dispărea complet din Kibana.
Bară verticală
Pentru exemplul „Bară verticală”, să creăm o histogramă a raportului dintre stările de răspuns reușite și cele nereușite ale serviciului nostru. La sfârșitul setărilor, obținem următorul grafic:
Vom clasifica toate solicitările cu o stare de răspuns < 400 ca fiind reușite și >= 400 ca problematice.
Pentru a crea o diagramă „Bară verticală”, trebuie să selectăm o sursă de date. Selectați modelul de index pe care l-am creat mai devreme.
În mod implicit, un singur grafic solid va apărea după selectarea unei surse de date. Hai să-l setăm.
În blocul „Găleți”, apăsați butonul „Adăugați”, selectați „X-asis” și configurați axa X. Să lăsăm deoparte marcajele de timp pentru primirea înregistrărilor în jurnal. În câmpul „Agregare”, selectați „Histograma dată”, iar în „Câmp” selectați „@timestamp”, indicând câmpul de timp. Să lăsăm „Interval minim” în starea „Automat”, iar acesta se va adapta automat la afișajul nostru.
Făcând clic pe butonul „Actualizare”, vom vedea un grafic cu numărul de solicitări la fiecare 30 de secunde.
Acum să setăm coloanele de-a lungul axei Y. Acum afișăm numărul total de solicitări în intervalul de timp selectat.
Să modificăm valoarea „Agregare” la „Sum Bucket”, ceea ce ne va permite să combinăm datele pentru solicitările reușite și nereușite. În blocul Bucket -> Aggregation, selectați agregarea după „Filtre” și setați filtrarea după „statusCode >= 400”. Și în câmpul „Etichetă personalizată”, indicăm numele nostru al indicatorului pentru o afișare mai ușor de înțeles în legenda de pe diagramă și în lista generală.
Făcând clic pe butonul „Actualizare” de sub blocul de setări, vom obține un grafic cu solicitările de probleme.
Dacă dați clic pe cercul de lângă legendă, va apărea o fereastră în care puteți schimba culoarea coloanelor.
Acum să adăugăm în diagramă date despre solicitările reușite. În secțiunea „Metrici”, faceți clic pe butonul „Adăugați” și selectați „Axa Y”.
În metrica creată, facem aceleași setări ca și pentru solicitările eronate. Doar în filtru specificăm „statusCode < 400”.
Schimbând culoarea noii coloane, obținem o afișare a raportului dintre solicitările problematice și cele reușite.
Făcând clic pe butonul „Salvare” din partea de sus a ecranului și specificând numele, vom vedea prima diagramă pe tabloul de bord.
Tabel de date
Acum luați în considerare vizualizarea tabelară „Tabel de date”. Să creăm un tabel cu o listă a tuturor adreselor URL care au fost solicitate și numărul acestor solicitări. Ca și în exemplul barei verticale, mai întâi selectăm o sursă de date.
După aceea, pe ecran va fi afișat un tabel cu o coloană, care arată numărul total de solicitări pentru intervalul de timp selectat.
Vom schimba doar blocul „Găleți”. Faceți clic pe butonul „Adăugați” și selectați „Divizați rânduri”.
În câmpul „Agregare”, selectați „Termeni”. Iar în câmpul apărut „Field” selectați „url.keyword”.
Specificând valoarea „Url” în câmpul „Etichetă personalizată” și făcând clic pe „Actualizare”, vom obține tabelul dorit cu numărul de solicitări pentru fiecare dintre adresele URL pentru perioada de timp selectată.
În partea de sus a ecranului, faceți clic din nou pe butonul „Salvați” și specificați numele tabelului, de exemplu URL-uri. Să revenim la Tabloul de bord și să vedem ambele vizualizări create.
Lucrul cu Dashboard
La crearea tabloului de bord, setăm doar parametrii de vizualizare principali în setările obiectului de afișare. Nu are sens să specificați date pentru filtre în obiecte, de exemplu, „interval de date”, „filtrare după agent utilizator”, „filtrare după țara de solicitare”, etc. Este mult mai convenabil să specificați perioada de timp dorită sau să setați filtrarea necesară în panoul de interogări, care se află deasupra obiectelor.
Filtrele adăugate pe acest panou vor fi aplicate întregului tablou de bord, iar toate obiectele afișate vor fi reconstruite în conformitate cu datele reale filtrate.
Concluzie
Kibana este un instrument puternic care vă permite să vizualizați orice date într-un mod convenabil. Am încercat să arăt setarea celor două tipuri principale de afișare. Dar alte tipuri sunt configurate într-un mod similar. Și abundența de setări pe care le-am lăsat „în spatele scenei” vă va permite să personalizați foarte flexibil diagramele pentru a se potrivi nevoilor dvs.
Sursa: www.habr.com