
Hej, jag heter Evgeny och jag Àr teamledare för B2B-segmentet pÄ Citymobil. En av vÄra teams uppgifter Àr att stödja integrationer för taxibestÀllningar frÄn partners, och för att sÀkerstÀlla en stabil tjÀnst mÄste vi alltid förstÄ vad som hÀnder i vÄra mikrotjÀnster. För detta behöver vi stÀndigt övervaka loggar.
PÄ Citymobil anvÀnder vi ELK-stacken (ElasticSearch, Logstash, Kibana) för att arbeta med loggar, och mÀngden data som kommer dit Àr enorm. Att hitta problem i denna massan av förfrÄgningar som kan uppstÄ efter driftsÀttning av ny kod Àr ganska svÄrt. För att tydligt identifiera dessa problem finns det en dashboard-sektion i Kibana.
Det finns ganska mÄnga artiklar pÄ Habr om hur man konfigurerar ELK-stacken för att fÄ och lagra data, men det finns inga aktuella material om att skapa en dashboard. DÀrför vill jag visa hur man skapar en visuell representation av data baserat pÄ inkommande loggar i Kibana.
InstÀllning
För att göra det tydligare har jag skapat en Docker-image med ELK och Filebeat. Jag har placerat en liten i Go, som för vÄrt exempel kommer att generera testloggar. Jag kommer inte att beskriva konfigurationen av ELK i detalj, det finns tillrÀckligt skrivet om detta pÄ Habr.
Vi klonar repositoryt med konfigurationen docker-compose och instÀllningarna för ELK och startar det med kommandot docker-compose up. Jag avser att inte lÀgga till nyckeln -d, för att se hur ELK-stacken fungerar.
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker-compose up
Om allt Àr korrekt konfigurerat kommer vi att se en loggpost (kanske inte direkt, processen för att starta containern med hela stacken kan ta flera minuter):
{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],"pid":6,"message":"http server running at http://0:5601"}
Vid adressen localhost:5061 bör Kibana öppnas.


Det enda vi behöver stÀlla in Àr att skapa ett Index Pattern för Kibana med information om vilka data som ska visas. För detta utför vi en curl-förfrÄgan eller gör en rad ÄtgÀrder i det grafiska grÀnssnittet.
$ 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"}}'
Skapa Index Pattern via det grafiska grÀnssnittet
För konfigurationen vÀljer vi avsnittet Discover i den vÀnstra menyn och hamnar pÄ sidan för att skapa Index pattern.

Genom att klicka pÄ knappen "Skapa index pattern" kommer vi till sidan för att skapa index. I fÀltet "Index pattern name" skriver vi "logstash-*". Om allt Àr korrekt konfigurerat kommer Kibana att visa de index som omfattas av regeln nedan.

PÄ nÀsta sida vÀljer vi det nyckelfÀlt som har tidsstÀmpel, i vÄrt fall Àr det @timestamp.

Resultatet blir en instÀllningssida för indexet, men just nu krÀvs det inga ytterligare ÄtgÀrder frÄn vÄr sida.

Nu kan vi ÄtergÄ till avsnittet Discover, dÀr vi ser loggposterna.

Dashboard
I vÀnstermenyn klickar vi pÄ avsnittet för att skapa en Dashboard och kommer till motsvarande sida.

Vi klickar pÄ "Skapa ny dashboard" och kommer till sidan för att lÀgga till objekt i Dashboard.

Vi klickar pĂ„ knappen "Skapa ny", och systemet föreslĂ„r att vĂ€lja visningssĂ€tt för data. I Kibana finns det mĂ„nga, men vi kommer att titta pĂ„ att skapa en grafisk representation "Vertical Bar" och en tabell "Data Table". Andra typer av representation kan stĂ€llas in pĂ„ liknande sĂ€tt.Â

Vissa tillgĂ€ngliga objekt har mĂ€rkningar B och E â detta betyder att formatet Ă€r experimentellt eller i beta-testning. Med tiden kan formatet Ă€ndras eller försvinna helt frĂ„n Kibana.
Vertical Bar
Som ett exempel pÄ "Vertical Bar" skapar vi ett histogram över förhÄllandet mellan framgÄngsrika och misslyckade statusar för vÄrt servicesvar. Efter instÀllningarna fÄr vi följande diagram:

Till framgÄngsrika kommer vi att rÀkna alla förfrÄgningar med svarstatus < 400, medan problematiska rÀknas som >= 400.
För att skapa grafen "Vertical Bar" mÄste vi vÀlja datakÀlla. Vi vÀljer Index Pattern som vi skapade tidigare.

Som standard, efter att ha valt datakÀlla, kommer det att visas ett enda kontinuerligt diagram. LÄt oss stÀlla in det.

I blocket "Buckets" klickar vi pĂ„ knappen "LĂ€gg till", vĂ€ljer "X-axel" och stĂ€ller in X-axeln. Vi kommer att anvĂ€nda tidsstĂ€mplarna för loggposterna. I fĂ€ltet "Aggregation" vĂ€ljer vi "Date Histogram", och i "Field" vĂ€ljer vi "@timestamp", som pekar pĂ„ tidsfĂ€ltet. "Minimum interval" lĂ€mnar vi i "Auto"-lĂ€ge, sĂ„ det automatiskt anpassar sig efter vĂ„r visning.Â

Genom att klicka pÄ knappen "Uppdatera" kommer vi att se diagrammet med antalet förfrÄgningar vart trettio sekunder.

Nu stÀller vi in kolumnerna pÄ Y-axeln. Just nu visas det totala antalet förfrÄgningar inom den valda tidsintervallet.

Vi Àndrar vÀrdet pÄ "Aggregation" till "Sum Bucket", vilket lÄter oss sammanfoga data för framgÄngsrika och misslyckade förfrÄgningar. I blocket Bucket -> Aggregation vÀljer vi aggregering enligt "Filters" och stÀller in filtrering enligt "statusCode >= 400". I fÀltet "Custom label" anger vi vÄr indikatornamn för en tydligare visning i legenden pÄ diagrammet och i den övergripande listan.

Genom att klicka pÄ knappen «Update» under instÀllningspanelen fÄr vi en graf med problematiska förfrÄgningar.

Om du klickar pÄ cirkeln bredvid legenden kommer ett fönster att öppnas dÀr du kan Àndra fÀrgen pÄ staplarna.

Nu lÀgger vi till data om framgÄngsrika förfrÄgningar pÄ grafen. Under «Metrics» klickar vi pÄ knappen «Add» och vÀljer «Y-axis».

I den skapade metrikern gör vi samma instÀllningar som för felaktiga förfrÄgningar. Men i filtret anger vi «statusCode < 400».

Genom att Àndra fÀrgen pÄ den nya stapeln fÄr vi en visning av förhÄllandet mellan problematiska och framgÄngsrika förfrÄgningar.

Genom att klicka pÄ knappen «Save» högst upp pÄ skÀrmen och ange ett namn, kommer vi att se den första grafen pÄ Dashboard.

Data Table
Nu ska vi titta pÄ tabellformatet «Data Table». Vi skapar en tabell med en lista över alla URL:er som har fÄtt förfrÄgningar, samt antalet dessa förfrÄgningar. Precis som i exemplet med Vertical Bar vÀljer vi först datakÀllan.

Efter detta kommer en tabell med en kolumn att visas pÄ skÀrmen, som visar det totala antalet förfrÄgningar under den valda tidsperioden.

Vi kommer att Àndra endast blocket «Buckets». Klicka pÄ knappen «Add» och vÀlj «Split rows».

I fÀltet «Aggregation» vÀljer vi «Terms». I det fÀlt som visas vÀljer vi «url.keyword».

Genom att ange «Url» i fÀltet «Custom label» och klicka pÄ «Update», fÄr vi den önskade tabellen med antalet förfrÄgningar för varje URL under den valda tidsperioden.

Högst upp pÄ skÀrmen klickar vi Äterigen pÄ knappen «Save» och anger tabellens namn, till exempel Urls. Vi gÄr tillbaka till Dashboard och ser bÄda de skapade visningarna.

Arbete med Dashboard
NÀr vi skapade Dashboard i instÀllningarna för visningsobjekten angav vi endast de grundlÀggande visningsparametrarna. Det Àr inte meningsfullt att ange data för filter i objekten, t.ex. «datumintervall», «filtrering av useragent», «filtrering per land för förfrÄgningar» osv. Det Àr mycket bekvÀmare att ange önskad tidsperiod eller stÀlla in nödvÀndig filtrering i förfrÄgningspanelen som ligger ovanför objekten.
![]()
De filter som lagts till pÄ denna panel kommer att tillÀmpas pÄ hela Dashboard, och alla visningsobjekt kommer att omstrukturera efter de aktuella filtrerade uppgifterna.
Slutsats
Kibana Àr ett kraftfullt verktyg som gör det möjligt att visualisera vilken data som helst pÄ ett bekvÀmt sÀtt. Jag har försökt att visa instÀllningarna för tvÄ grundlÀggande visningssÀtt. Men andra typer gÄr att konfigurera pÄ liknande sÀtt. Och de mÄnga instÀllningar som jag lÀmnat "bakom kulisserna" gör att du kan anpassa graferna mycket flexibelt efter dina behov.
KĂ€lla: habr.com
