Hej, mit navn er Eugene, jeg er B2B-teamleder hos Citymobil. En af vores teams opgaver er at understøtte integrationer til bestilling af taxa hos partnere, og for at sikre en stabil service skal vi altid forstå, hvad der sker i vores mikrotjenester. Og for dette skal du konstant overvåge logfilerne.
I Citymobil bruger vi ELK-stakken (ElasticSearch, Logstash, Kibana) til at arbejde med logs, og mængden af data, der kommer dertil, er enorm. Det er ret svært at finde problemer i denne masse af anmodninger, der kan dukke op efter implementeringen af ny kode. Og til deres visuelle identifikation har Kibana en Dashboard-sektion.
Der er en del artikler om Habré med eksempler på, hvordan man opsætter en ELK-stack til at modtage og gemme data, men der er ikke noget relevant materiale om at oprette et Dashboard. Derfor vil jeg vise, hvordan man skaber en visuel repræsentation af data baseret på indgående logfiler i Kibana.
justering
For at gøre det tydeligere oprettede jeg et Docker-billede med ELK og Filebeat. Og anbragt i en beholder en lille
Klon config-lageret docker-compose
og ELK-indstillinger, og start den med kommandoen docker-compose up
. Med vilje ikke tilføje en nøgle -d
for at se udviklingen af ELK-stakken.
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker-compose up
Hvis alt er konfigureret korrekt, vil vi se en post i loggene (måske ikke umiddelbart, processen med at starte en container med hele stakken kan tage 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 skulle åbne.
Det eneste, vi skal konfigurere, er at oprette et indeksmønster til Kibana med information om, hvilke data der skal vises. For at gøre dette vil vi udføre en krølleanmodning eller udføre en række handlinger i den grafiske grænseflade.
$ 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"}}'
Oprettelse af et indeksmønster via GUI
For at konfigurere skal du vælge Discover-sektionen i venstremenuen og komme til siden for oprettelse af indeksmønster.
Ved at klikke på knappen "Opret indeksmønster" kommer vi til siden for oprettelse af indeks. I feltet "Indeksmønsternavn" skal du indtaste "logstash-*". Hvis alt er konfigureret korrekt, vil Kibana nedenfor vise de indekser, der falder ind under reglen.
På næste side skal du vælge nøglefeltet med et tidsstempel, i vores tilfælde er det det @timestamp
.
Dette vil åbne siden med indeksindstillinger, men der kræves ingen yderligere handling fra os på nuværende tidspunkt.
Nu kan vi gå til Discover-sektionen igen, hvor vi vil se logposterne.
Hovedmenu
I menuen til venstre skal du klikke på afsnittet om oprettelse af Dashboard og komme til den tilsvarende side.
Klik på "Opret nyt dashboard" og gå til siden for tilføjelse af objekter til dashboardet.
Klik på knappen "Opret ny", og systemet vil bede dig om at vælge typen af datavisning. Kibana har et stort antal af dem, men vi vil se på at skabe en grafisk repræsentation af "Lodret bjælke" og en tabelformet "Datatabel". Andre præsentationstyper er konfigureret på lignende måde.
Nogle tilgængelige objekter er mærket B og E, hvilket betyder, at formatet er eksperimentelt eller i beta-testning. Over tid kan formatet ændre sig eller helt forsvinde fra Kibana.
Lodret bjælke
For eksemplet "Lodret bjælke", lad os oprette et histogram over forholdet mellem succesfulde og mislykkede svarstatusser for vores tjeneste. I slutningen af indstillingerne får vi følgende graf:
Vi vil klassificere alle anmodninger med en svarstatus < 400 som succesfulde og >= 400 som problematiske.
For at oprette et "Lodret søjle"-diagram skal vi vælge en datakilde. Vælg det indeksmønster, vi oprettede tidligere.
Som standard vises en enkelt solid graf efter valg af datakilde. Lad os sætte det op.
I "Buckets"-blokken skal du trykke på "Tilføj"-knappen, vælge "X-asis" og opsætte X-aksen. Lad os tilsidesætte tidsstemplerne for indtastninger i loggen langs den. I feltet "Aggregation" skal du vælge "Datohistogram", og i "feltet" skal du vælge "@timestamp", hvilket angiver tidsfeltet. Lad os lade "Minimumsinterval" være i tilstanden "Auto", og det vil automatisk tilpasse sig vores skærm.
Ved at klikke på knappen "Opdater", vil vi se en graf med antallet af anmodninger hvert 30. sekund.
Lad os nu opsætte kolonnerne langs Y-aksen Nu viser vi det samlede antal anmodninger i det valgte tidsinterval.
Lad os ændre "Aggregation"-værdien til "Sum Bucket", hvilket vil give os mulighed for at kombinere data for vellykkede og mislykkede anmodninger. I Bucket -> Aggregation-blokken skal du vælge aggregeringen ved "Filtre" og indstille filtreringen efter "statusCode >= 400". Og i feltet "Brugerdefineret etiket" angiver vi vores navn på indikatoren for en mere forståelig visning i forklaringen på diagrammet og i den generelle liste.
Ved at klikke på knappen "Opdater" under indstillingsblokken får vi en graf med problemanmodninger.
Hvis du klikker på cirklen ved siden af forklaringen, vises et vindue, hvor du kan ændre farven på kolonnerne.
Lad os nu tilføje data om vellykkede anmodninger til diagrammet. I sektionen "Metrics" skal du klikke på knappen "Tilføj" og vælge "Y-akse".
I den oprettede metrik foretager vi de samme indstillinger som for fejlagtige anmodninger. Kun i filteret angiver vi "statusKode < 400".
Ved at ændre farven på den nye kolonne får vi en visning af forholdet mellem problematiske og vellykkede anmodninger.
Ved at klikke på knappen "Gem" øverst på skærmen og angive navnet, vil vi se det første diagram på Dashboardet.
datatabel
Overvej nu tabelvisningen "Datatabel". Lad os oprette en tabel med en liste over alle de URL'er, der blev anmodet om, og antallet af disse anmodninger. Som med eksemplet med vertikal bjælke vælger vi først en datakilde.
Derefter vil en tabel med én kolonne blive vist på skærmen, som viser det samlede antal anmodninger for det valgte tidsinterval.
Vi vil kun ændre "Buckets"-blokken. Klik på knappen "Tilføj" og vælg "Opdel rækker".
I feltet "Aggregation" skal du vælge "Vilkår". Og i det viste felt "Felt" vælg "url.keyword".
Ved at angive "URL"-værdien i feltet "Custom label" og klikke på "Opdater", får vi den ønskede tabel med antallet af anmodninger for hver af URL'erne for den valgte tidsperiode.
Øverst på skærmen skal du klikke på knappen "Gem" igen og angive navnet på tabellen, for eksempel URL'er. Lad os gå tilbage til Dashboardet og se begge visninger oprettet.
Arbejde med Dashboard
Når vi opretter Dashboardet, indstiller vi kun hovedvisningsparametrene i visningsobjektindstillingerne. Det giver ingen mening at specificere data for filtre i objekter, for eksempel "datointerval", "filtrering efter brugeragent", "filtrering efter anmodningsland" osv. Det er meget mere praktisk at angive den ønskede tidsperiode eller indstille den nødvendige filtrering i forespørgselspanelet, som er placeret over objekterne.
Filtrene tilføjet på dette panel vil blive anvendt på hele Dashboardet, og alle visningsobjekter vil blive genopbygget i overensstemmelse med de faktiske filtrerede data.
Konklusion
Kibana er et kraftfuldt værktøj, der giver dig mulighed for at visualisere alle data på en bekvem måde. Jeg forsøgte at vise indstillingerne for de to hovedtyper af display. Men andre typer er konfigureret på lignende måde. Og den overflod af indstillinger, som jeg efterlod "bag kulisserne", giver dig mulighed for meget fleksibelt at tilpasse diagrammer, så de passer til dine behov.
Kilde: www.habr.com