
Hej, jag heter Evgeniy och jag Àr B2B-teamledare 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. Och för att göra detta mÄste du stÀndigt övervaka loggarna.
PÄ Citymobil anvÀnder vi ELK-stacken (ElasticSearch, Logstash, Kibana) för att arbeta med loggar, och mÀngden data som kommer in dit Àr enorm. Det Àr ganska svÄrt att hitta problem i den hÀr massan av förfrÄgningar som kan uppstÄ efter att ny kod har distribuerats. Och för att visuellt identifiera dem har Kibana en instrumentpanelssektion.
Det finns en hel del artiklar om Habr med exempel pÄ hur man konfigurerar en ELK-stack för att ta emot och lagra data, men det finns inget relevant material om hur man skapar en Dashboard. SÄ jag vill visa dig hur du skapar en visuell representation av data baserat pÄ inkommande loggar i Kibana.
justering
För att göra det mer visuellt skapade jag en Docker-avbildning med ELK och Filebeat. Och placerade en liten i behÄllaren i Go, vilket i vÄrt exempel genererar testloggar. Jag kommer inte att beskriva ELK-konfigurationen i detalj, det finns tillrÀckligt skrivet om den pÄ Habr.
Klona arkivet med konfigurationen docker-compose och ELK-instÀllningar, och starta det med kommandot docker-compose up. Jag lÀgger avsiktligt inte till nyckeln -d, för att se ELK-stacken köras.
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 post i loggarna (kanske inte direkt, processen att starta en container 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"}
adress localhost:5061 Kibana borde öppna.


Det enda vi behöver konfigurera Àr att skapa ett indexmönster för Kibana med information om vilken data som ska visas. För att göra detta kommer vi att köra en curl-förfrÄgan eller utföra ett antal Ä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 ett indexmönster via det grafiska anvÀndargrÀnssnittet
För att konfigurera, vÀlj avsnittet UpptÀck i vÀnstermenyn sÄ kommer du till sidan för att skapa indexmönster.

Genom att klicka pĂ„ knappen âSkapa indexmönsterâ kommer vi till sidan för att skapa index. I fĂ€ltet "Indexmönsternamn" anger du "logstash-*". Om allt Ă€r korrekt konfigurerat kommer Kibana att visa de index som matchar regeln nedan.

PÄ nÀsta sida vÀljer du nyckelfÀltet med tidsstÀmpeln, i vÄrt fall Àr det @timestamp.

Som ett resultat kommer sidan med indexinstÀllningar att visas, men nu krÀvs inga ytterligare ÄtgÀrder frÄn oss.

Nu kan vi gÄ tillbaka till avsnittet UpptÀck dÀr vi ser loggposterna.

Dashboard
I vÀnstermenyn klickar du pÄ avsnittet Skapa instrumentpanel sÄ kommer du till motsvarande sida.

Klicka pÄ "Skapa ny instrumentpanel" sÄ kommer du till sidan för att lÀgga till objekt i instrumentpanelen.

Klicka pĂ„ knappen âSkapa nyâ sĂ„ uppmanas du att vĂ€lja typ av datavisning. Det finns mĂ„nga av dem i Kibana, men vi ska titta pĂ„ att skapa en grafisk representation av den "vertikala stapeln" och en tabellformad "datatabell". De andra typerna av vyer konfigureras pĂ„ ett liknande sĂ€tt.

Vissa tillgÀngliga objekt Àr mÀrkta B och E, vilket betyder att formatet Àr experimentellt eller i betatestning. Med tiden kan formatet Àndras eller försvinna helt och hÄllet frÄn Kibana.
Vertikal bar
För exemplet "Vertikal stapel", lÄt oss skapa ett histogram över förhÄllandet mellan lyckade och misslyckade svarsstatusar för vÄr tjÀnst. NÀr instÀllningarna Àr klara fÄr vi följande graf:

Vi kommer att betrakta alla förfrÄgningar med en svarsstatus < 400 som lyckade och >= 400 som problematiska.
För att skapa ett "vertikalt stapeldiagram" mÄste vi vÀlja en datakÀlla. VÀlj indexmönstret som vi skapade tidigare.

Som standard visas ett enda heldraget diagram efter att en datakÀlla har valts. LÄt oss stÀlla in det.

I blocket "Buckets" klickar du pĂ„ knappen "LĂ€gg till", vĂ€ljer "X-axel" och stĂ€ller in X-axeln. Vi kommer att plotta tidsstĂ€mplarna för de mottagna posterna i loggen lĂ€ngs den. I fĂ€ltet âAggregeringâ vĂ€ljer du âDatumhistogramâ och i âFĂ€ltâ vĂ€ljer du â@tidsstĂ€mpelâ, vilket anger tidsfĂ€ltet. Vi lĂ€mnar "Minsta intervall" i tillstĂ„ndet "Auto", och det kommer automatiskt att justeras till vĂ„r skĂ€rm.

Genom att klicka pÄ knappen "Uppdatera" ser vi ett diagram med antalet förfrÄgningar var 30:e sekund.

Nu ska vi stÀlla in kolumnerna pÄ Y-axeln. Just nu visar vi det totala antalet förfrÄgningar under det valda tidsintervallet.

LĂ„t oss Ă€ndra vĂ€rdet "Aggregering" till "Sum Bucket", vilket gör att vi kan kombinera data frĂ„n lyckade och misslyckade förfrĂ„gningar. I blocket Bucket -> Aggregation, vĂ€lj aggregering med "Filters" och stĂ€ll in filtrering med "statusCode >= 400". Och i fĂ€ltet âAnpassad etikettâ anger vi vĂ„rt indikatornamn för en tydligare visning i förklaringen pĂ„ grafen och i den allmĂ€nna listan.

Genom att klicka pĂ„ knappen âUppdateraâ under instĂ€llningsblocket fĂ„r vi upp ett diagram med problematiska frĂ„gor.

Om du klickar pÄ cirkeln bredvid förklaringen visas ett fönster dÀr du kan Àndra fÀrgen pÄ kolumnerna.

Nu ska vi lĂ€gga till data om lyckade förfrĂ„gningar i grafen. I avsnittet âMĂ€tvĂ€rdenâ klickar du pĂ„ knappen âLĂ€gg tillâ och vĂ€ljer âY-axelâ.

I det skapade mĂ€tvĂ€rdet gör vi samma instĂ€llningar som för felaktiga förfrĂ„gningar. Endast i filtret anger vi âstatusCode < 400â.

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

Genom att klicka pÄ knappen "Spara" högst upp pÄ skÀrmen och ange ett namn ser vi det första diagrammet pÄ instrumentpanelen.

data~~POS=TRUNC
Nu ska vi titta pÄ tabellvyn "Datatabell". LÄt oss skapa en tabell med en lista över alla URL:er som begÀrdes och antalet dessa förfrÄgningar. Precis som i exemplet med den vertikala stapeln, vÀlj först datakÀllan.

Efter detta visas en tabell med en kolumn pÄ skÀrmen, som visar det totala antalet förfrÄgningar för det valda tidsintervallet.

Vi kommer bara att Ă€ndra blocket "Hinkar". Klicka pĂ„ knappen âLĂ€gg tillâ och vĂ€lj âDela raderâ.

I fĂ€ltet âAggregeringâ vĂ€ljer du âTermerâ. Och i fĂ€ltet âFĂ€ltâ som visas vĂ€ljer du âurl.keywordâ.

Genom att ange vĂ€rdet âUrlâ i fĂ€ltet âAnpassad etikettâ och klicka pĂ„ âUppdateraâ fĂ„r vi önskad tabell med antalet förfrĂ„gningar för varje URL under den valda tidsperioden.

Klicka pĂ„ knappen âSparaâ igen högst upp pĂ„ skĂ€rmen och ange namnet pĂ„ tabellen, till exempel URL:er. LĂ„t oss gĂ„ tillbaka till instrumentpanelen och se bĂ„da vyerna vi skapade.

Arbeta med instrumentpanelen
NÀr vi skapar instrumentpanelen stÀller vi bara in de grundlÀggande vyparametrarna i visningsobjektinstÀllningarna. Det Àr ingen idé att ange data för filter i objekt, till exempel "datumintervall", "filtrering efter anvÀndaragent", "filtrering efter begÀranland" etc. Det Àr mycket bekvÀmare att ange önskad tidsperiod eller stÀlla in nödvÀndig filtrering i frÄgepanelen, som finns ovanför objekten.
![]()
Filter som lÀggs till i den hÀr panelen kommer att tillÀmpas pÄ hela instrumentpanelen, och alla visningsobjekt kommer att byggas om enligt den aktuella filtrerade informationen.
Slutsats
Kibana Àr ett kraftfullt verktyg som lÄter dig visualisera all data pÄ ett bekvÀmt sÀtt. Jag försökte visa uppstÀllningen av tvÄ huvudtyper av skÀrmar. Men Àven andra typer Àr konfigurerade pÄ ett liknande sÀtt. Och det stora utbudet av instÀllningar som jag lÀmnade "bakom kulisserna" gör att du mycket flexibelt kan anpassa graferna efter dina behov.
KĂ€lla: will.com
