Hei, jeg heter Eugene, jeg er B2B-teamleder hos Citymobil. En av oppgavene til teamet vårt er å støtte integrasjoner for bestilling av taxi fra partnere, og for å sikre en stabil tjeneste må vi alltid forstå hva som skjer i våre mikrotjenester. Og for dette må du hele tiden overvåke loggene.
I Citymobil bruker vi ELK-stakken (ElasticSearch, Logstash, Kibana) for å jobbe med logger, og mengden data som kommer dit er enorm. Det er ganske vanskelig å finne problemer i denne massen av forespørsler som kan dukke opp etter distribusjon av ny kode. Og for deres visuelle identifikasjon har Kibana en Dashboard-seksjon.
Det er ganske mange artikler om Habré med eksempler på hvordan man setter opp en ELK-stack for å motta og lagre data, men det er ikke noe relevant materiale for å lage et Dashboard. Derfor ønsker jeg å vise hvordan man lager en visuell representasjon av data basert på innkommende logger i Kibana.
justering
For å gjøre det klarere laget jeg et Docker-bilde med ELK og Filebeat. Og plassert i en beholder en liten
Klon konfigurasjonslageret docker-compose
og ELK-innstillinger, og start den med kommandoen docker-compose up
. Med vilje ikke legge til en nøkkel -d
for å se fremdriften til ELK-stakken.
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker-compose up
Hvis alt er konfigurert riktig, vil vi se en oppføring i loggene (kanskje ikke umiddelbart, prosessen med å starte en beholder med hele stabelen kan ta flere minutter):
{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],"pid":6,"message":"http server running at http://0:5601"}
adresse localhost:5061
Kibana bør åpne.
Det eneste vi trenger å konfigurere er å lage et indeksmønster for Kibana med informasjon om hvilke data som skal vises. For å gjøre dette, vil vi utføre en krølleforespørsel eller utføre en rekke handlinger i det grafiske grensesnittet.
$ 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"}}'
Opprette et indeksmønster via GUI
For å konfigurere, velg Discover-delen i venstremenyen, og gå til siden for opprettelse av indeksmønster.
Ved å klikke på "Opprett indeksmønster"-knappen kommer vi til siden for indeksoppretting. I feltet "Indeksmønsternavn" skriver du inn "logstash-*". Hvis alt er riktig konfigurert, vil Kibana nedenfor vise indeksene som faller inn under regelen.
På neste side velger du nøkkelfeltet med et tidsstempel, i vårt tilfelle er det det @timestamp
.
Dette vil få opp siden for indeksinnstillinger, men det kreves ingen ytterligere handling fra oss for øyeblikket.
Nå kan vi gå til Discover-delen igjen, hvor vi vil se loggoppføringene.
Dashbord
I menyen til venstre klikker du på Dashboard-seksjonen og kommer til den tilsvarende siden.
Klikk på "Opprett nytt dashbord" og gå til siden for å legge til objekter til dashbordet.
Klikk på "Opprett ny"-knappen, og systemet vil be deg om å velge type datavisning. Kibana har et stort antall av dem, men vi skal se på å lage en grafisk representasjon av "Vertical Bar" og en tabellform "Data Table". Andre typer presentasjoner er konfigurert på lignende måte.
Noen tilgjengelige objekter er merket med B og E, noe som betyr at formatet er eksperimentelt eller i betatesting. Over tid kan formatet endres eller helt forsvinne fra Kibana.
Vertikal stang
For eksempelet "Vertikal søyle", la oss lage et histogram over forholdet mellom vellykkede og mislykkede svarstatuser for tjenesten vår. På slutten av innstillingene får vi følgende graf:
Vi vil klassifisere alle forespørsler med en svarstatus < 400 som vellykkede, og >= 400 som problematiske.
For å lage et "vertikalt søylediagram" må vi velge en datakilde. Velg indeksmønsteret som vi laget tidligere.
Som standard vil en enkelt solid graf vises etter at du har valgt en datakilde. La oss sette det opp.
I blokken «Bøtter» trykker du på «Legg til»-knappen, velger «X-asis» og setter opp X-aksen. La oss sette til side tidsstemplene for mottak av oppføringer i loggen. I "Aggregering"-feltet velger du "Datohistogram", og i "Felt" velger du "@timestamp", som indikerer tidsfeltet. La oss la "Minimumsintervall" være i "Auto"-tilstanden, og den vil automatisk justere til displayet vårt.
Ved å klikke på "Oppdater"-knappen vil vi se en graf med antall forespørsler hvert 30. sekund.
La oss nå sette opp kolonnene langs Y-aksen Nå viser vi det totale antallet forespørsler i det valgte tidsintervallet.
La oss endre "Aggregering"-verdien til "Sum Bucket", som lar oss kombinere data for vellykkede og mislykkede forespørsler. I Bucket -> Aggregation-blokken velger du aggregeringen ved "Filters" og setter filtreringen etter "statusCode >= 400". Og i feltet "Egendefinert etikett" angir vi navnet på indikatoren for en mer forståelig visning i forklaringen på diagrammet og i den generelle listen.
Ved å klikke på "Oppdater"-knappen under innstillingsblokken får vi opp en graf med problemforespørsler.
Hvis du klikker på sirkelen ved siden av forklaringen, vises et vindu der du kan endre fargen på kolonnene.
La oss nå legge til data om vellykkede forespørsler i diagrammet. I delen "Beregninger", klikk på "Legg til"-knappen og velg "Y-akse".
I den opprettede beregningen gjør vi de samme innstillingene som for feilaktige forespørsler. Bare i filteret spesifiserer vi "statuskode < 400".
Ved å endre fargen på den nye kolonnen får vi en visning av forholdet mellom problematiske og vellykkede forespørsler.
Ved å klikke på "Lagre"-knappen øverst på skjermen og spesifisere navnet, vil vi se det første diagrammet på dashbordet.
data~~POS=TRUNC
Vurder nå tabellvisningen "Datatabell". La oss lage en tabell med en liste over alle nettadressene som ble forespurt og antall forespørsler. Som med eksemplet med vertikal søyle velger vi først en datakilde.
Etter det vil en tabell med én kolonne vises på skjermen, som viser det totale antallet forespørsler for det valgte tidsintervallet.
Vi vil bare endre "Bøtter"-blokken. Klikk på "Legg til"-knappen og velg "Del rader".
I "Aggregering"-feltet velger du "Vilkår". Og i det viste feltet "Felt" velg "url.keyword".
Ved å spesifisere "Url"-verdien i "Egendefinert etikett"-feltet og klikke på "Oppdater", får vi den ønskede tabellen med antall forespørsler for hver av nettadressene for den valgte tidsperioden.
Øverst på skjermen klikker du på "Lagre"-knappen igjen og spesifiserer navnet på tabellen, for eksempel URL-er. La oss gå tilbake til dashbordet og se begge visningene opprettet.
Arbeid med Dashboard
Når vi oppretter dashbordet, angir vi bare hovedvisningsparametrene i skjermobjektinnstillingene. Det gir ingen mening å spesifisere data for filtre i objekter, for eksempel "datoperiode", "filtrering etter brukeragent", "filtrering etter forespørselsland", etc. Det er mye mer praktisk å spesifisere ønsket tidsperiode eller angi nødvendig filtrering i spørringspanelet, som er plassert over objektene.
Filtrene som legges til i dette panelet vil bli brukt på hele dashbordet, og alle visningsobjekter vil bli gjenoppbygd i samsvar med de faktiske filtrerte dataene.
Konklusjon
Kibana er et kraftig verktøy som lar deg visualisere alle data på en praktisk måte. Jeg prøvde å vise innstillingen for de to hovedtypene skjerm. Men andre typer er konfigurert på lignende måte. Og overfloden av innstillinger som jeg la "bak kulissene" vil tillate deg å veldig fleksibelt tilpasse diagrammer for å passe dine behov.
Kilde: www.habr.com