Sveiki, mano vardas Eugenijus, esu „Citymobil“ B2B komandos vadovas. Viena iš mūsų komandos užduočių – palaikyti taksi užsakymo iš partnerių integracijas, o norėdami užtikrinti stabilų aptarnavimą, visada turime suprasti, kas vyksta mūsų mikroservisuose. Ir tam reikia nuolat stebėti žurnalus.
„Citymobil“ darbui su žurnalais naudojame ELK stacką (ElasticSearch, Logstash, Kibana), o ten gaunamų duomenų kiekis yra didžiulis. Gana sunku rasti problemų šioje užklausų masėje, kuri gali atsirasti įdiegus naują kodą. O jų vizualiniam atpažinimui „Kibana“ turi prietaisų skydelio skyrių.
Yra nemažai straipsnių apie Habré su pavyzdžiais, kaip nustatyti ELK steką duomenims gauti ir saugoti, tačiau nėra atitinkamos medžiagos apie informacijos suvestinės kūrimą. Todėl noriu parodyti, kaip sukurti vaizdinį duomenų atvaizdavimą pagal gaunamus žurnalus „Kibana“.
reguliavimas
Kad būtų aiškiau, sukūriau Docker vaizdą su ELK ir Filebeat. Ir įdėjo į konteinerį mažą
Klonuoti konfigūracijos saugyklą docker-compose
ir ELK nustatymus, ir paleiskite jį komanda docker-compose up
. Tyčia nepridedamas raktas -d
pamatyti ELK krūvos progresą.
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker-compose up
Jei viskas sukonfigūruota teisingai, žurnaluose pamatysime įrašą (galbūt ne iš karto, konteinerio su visu kaminu paleidimo procesas gali užtrukti keletą minučių):
{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],"pid":6,"message":"http server running at http://0:5601"}
Pagal adresą localhost:5061
Kibana turėtų atsidaryti.
Vienintelis dalykas, kurį turime sukonfigūruoti, yra sukurti „Kibana“ rodyklės šabloną su informacija apie tai, kokius duomenis rodyti. Norėdami tai padaryti, grafinėje sąsajoje vykdysime užklausą arba atliksime keletą veiksmų.
$ 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"}}'
Indekso šablono kūrimas naudojant GUI
Norėdami sukonfigūruoti, kairiajame meniu pasirinkite skyrių Atraskite ir eikite į rodyklės šablono kūrimo puslapį.
Paspaudę mygtuką „Sukurti rodyklės šabloną“, pateksime į rodyklės kūrimo puslapį. Lauke „Indekso šablono pavadinimas“ įveskite „logstash-*“. Jei viskas sukonfigūruota teisingai, žemiau Kibana bus rodomi indeksai, kuriems taikoma taisyklė.
Kitame puslapyje pasirinkite rakto lauką su laiko žyma, mūsų atveju tai yra @timestamp
.
Bus atidarytas rodyklės nustatymų puslapis, tačiau šiuo metu nereikia imtis jokių papildomų veiksmų.
Dabar vėl galime pereiti į skyrių „Atrask“, kur pamatysime žurnalo įrašus.
Prietaisų skydas
Kairiajame meniu spustelėkite prietaisų skydelio kūrimo skyrių ir eikite į atitinkamą puslapį.
Spustelėkite „Sukurti naują prietaisų skydelį“ ir eikite į puslapį, kuriame galite pridėti objektų prie prietaisų skydelio.
Spustelėkite mygtuką „Sukurti naują“ ir sistema paragins pasirinkti duomenų rodymo tipą. „Kibana“ jų turi labai daug, tačiau pažiūrėsime, kaip sukurti grafinį „Vertikalios juostos“ vaizdą ir lentelę „Duomenų lentelė“. Kiti pateikimo tipai konfigūruojami panašiai.
Kai kurie galimi objektai pažymėti B ir E, o tai reiškia, kad formatas yra eksperimentinis arba bandomas beta versijoje. Laikui bėgant formatas gali pasikeisti arba visiškai išnykti iš „Kibana“.
Vertikali juosta
Pavyzdyje „Vertikali juosta“ sukurkime sėkmingų ir nesėkmingų mūsų paslaugos atsakymų būsenų santykio histogramą. Nustatymų pabaigoje gauname tokią diagramą:
Visas užklausas, kurių atsakymo būsena < 400, klasifikuosime kaip sėkmingas, o >= 400 kaip problemines.
Norėdami sukurti „Vertikalią juostinę“ diagramą, turime pasirinkti duomenų šaltinį. Pasirinkite anksčiau sukurtą rodyklės šabloną.
Pagal numatytuosius nustatymus pasirinkus duomenų šaltinį bus rodomas vienas vientisas grafikas. Nustatykime.
Bloke "Kaušeliai" paspauskite mygtuką "Pridėti", pasirinkite "X-asis" ir nustatykite X ašį. Išilgai jos palikime žurnalo įrašų laiko žymes. Lauke „Apibendrinimas“ pasirinkite „Datos histograma“, o lauke „Lauko“ pasirinkite „@timestamp“, nurodydami laiko lauką. Palikime „Minimalaus intervalo“ būseną „Auto“ ir jis automatiškai prisitaikys prie mūsų ekrano.
Paspaudę mygtuką „Atnaujinti“, pamatysime grafiką su užklausų skaičiumi kas 30 sekundžių.
Dabar nustatykime stulpelius išilgai Y ašies. Dabar rodome bendrą užklausų skaičių pasirinktu laiko intervalu.
Pakeiskime „Agregavimo“ reikšmę į „Sum Bucket“, kuri leis sujungti sėkmingų ir nesėkmingų užklausų duomenis. Bloke Bucket -> Aggregation pasirinkite agregavimą pagal "Filtrai" ir nustatykite filtravimą pagal "statusCode >= 400". O lauke „Pasirinktinė etiketė“ nurodome savo indikatoriaus pavadinimą, kad būtų aiškiau rodomas diagramos legendoje ir bendrame sąraše.
Po nustatymų bloku spustelėję mygtuką „Atnaujinti“, gausime grafiką su problemų užklausomis.
Jei paspausite šalia legendos esantį apskritimą, atsiras langas, kuriame galėsite pakeisti stulpelių spalvą.
Dabar į diagramą įtraukkime duomenis apie sėkmingas užklausas. Skiltyje „Metrika“ spustelėkite mygtuką „Pridėti“ ir pasirinkite „Y ašis“.
Sukurtoje metrikoje atliekame tuos pačius nustatymus kaip ir klaidingoms užklausoms. Tik filtre nurodome "statusCode < 400".
Pakeitę naujos stulpelio spalvą, gauname probleminių ir sėkmingų užklausų santykio ekraną.
Spustelėję mygtuką „Išsaugoti“ ekrano viršuje ir nurodę pavadinimą, prietaisų skydelyje pamatysime pirmąją diagramą.
duomenų lentelė
Dabar apsvarstykite lentelės rodinį „Duomenų lentelė“. Sukurkime lentelę su visų užklausų URL sąrašu ir tų užklausų skaičiumi. Kaip ir vertikalios juostos pavyzdyje, pirmiausia pasirenkame duomenų šaltinį.
Po to ekrane bus rodoma lentelė su vienu stulpeliu, kurioje rodomas bendras užklausų skaičius pasirinktam laiko intervalui.
Keisime tik bloką „Kaušeliai“. Spustelėkite mygtuką „Pridėti“ ir pasirinkite „Padalyti eilutes“.
Lauke „Apibendrinimas“ pasirinkite „Sąlygos“. Ir pasirodžiusiame lauke „Laukas“ pasirinkite „url.keyword“.
Lauke „Custom label“ nurodę „Url“ reikšmę ir paspaudę „Atnaujinti“, gausime norimą lentelę su užklausų skaičiumi kiekvienam URL pasirinktam laikotarpiui.
Ekrano viršuje dar kartą spustelėkite mygtuką „Išsaugoti“ ir nurodykite lentelės pavadinimą, pavyzdžiui, URL. Grįžkime į informacijos suvestinę ir pamatysime abu sukurtus rodinius.
Darbas su prietaisų skydeliu
Kurdami Dashboard ekrano objekto nustatymuose nustatome tik pagrindinius rodinio parametrus. Nėra prasmės nurodyti filtrų duomenis objektuose, pvz., „datų diapazonas“, „filtravimas pagal vartotojo agentą“, „filtravimas pagal užklausos šalį“ ir kt. Daug patogiau užklausų skydelyje, esančiame virš objektų, nurodyti norimą laikotarpį arba nustatyti reikiamą filtravimą.
Šiame skydelyje pridėti filtrai bus taikomi visai informacijos suvestinei, o visi ekrano objektai bus atkurti pagal faktinius filtruotus duomenis.
išvada
Kibana yra galingas įrankis, leidžiantis patogiai vizualizuoti bet kokius duomenis. Bandžiau parodyti dviejų pagrindinių rodymo tipų nustatymus. Tačiau kiti tipai sukonfigūruoti panašiai. O nustatymų gausa, kurią palikau „už kadro“, leis labai lanksčiai pritaikyti diagramas pagal savo poreikius.
Šaltinis: www.habr.com