Hej, jag heter Eugene, jag är en B2B-teamledare på Citymobil. En av uppgifterna för vårt team är att stödja integrationer för att beställa en taxi från partners, och för att säkerställa en stabil service måste vi alltid förstå vad som händer i våra mikrotjänster. Och för detta måste du ständigt övervaka loggarna.
I Citymobil använder vi ELK-stacken (ElasticSearch, Logstash, Kibana) för att arbeta med loggar, och mängden data som kommer dit är enorm. Det är ganska svårt att hitta problem i den här massan av förfrågningar som kan dyka upp efter utplaceringen av ny kod. Och för deras visuella identifiering har Kibana en Dashboard-sektion.
Det finns en hel del artiklar om Habré med exempel på hur man ställer in en ELK-stack för att ta emot och lagra data, men det finns inget relevant material för att skapa en Dashboard. Därför vill jag visa hur man skapar en visuell representation av data baserat på inkommande loggar i Kibana.
justering
För att göra det tydligare skapade jag en Docker-bild med ELK och Filebeat. Och placeras i en behållare en liten
Klona konfigurationsförrådet docker-compose
och ELK-inställningar och starta den med kommandot docker-compose up
. Att inte lägga till en nyckel medvetet -d
för att se utvecklingen av ELK-stacken.
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 omedelbart, processen att starta en behållare 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 utföra en curl-begäran eller utföra en serie å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 GUI
För att konfigurera, välj avsnittet Upptäck i den vänstra menyn och gå 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 nedan att visa de index som faller under regeln.
På nästa sida väljer du nyckelfältet med en tidsstämpel, i vårt fall är det det @timestamp
.
Detta kommer att ta upp sidan med indexinställningar, men vi behöver inte göra något mer just nu.
Nu kan vi gå till Discover-sektionen igen, där vi kommer att se loggposterna.
Dashboard
I den vänstra menyn klickar du på avsnittet Skapa instrumentpanel och kommer till motsvarande sida.
Klicka på "Skapa ny instrumentpanel" och gå till sidan för att lägga till objekt till instrumentpanelen.
Klicka på knappen "Skapa ny" så kommer systemet att uppmana dig att välja typ av datavisning. Kibana har ett stort antal av dem, men vi kommer att titta på att skapa en grafisk representation av "Vertical Bar" och en tabellform "Data Table". Andra typer av presentation är konfigurerade på 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 helt försvinna från Kibana.
Vertikal bar
För exemplet "Vertikal stapel", låt oss skapa ett histogram över förhållandet mellan framgångsrika och misslyckade svarsstatusar för vår tjänst. I slutet av inställningarna får vi följande graf:
Vi kommer att klassificera alla förfrågningar med en svarsstatus < 400 som framgångsrika och >= 400 som problematiska.
För att skapa ett "vertikalt stapeldiagram" måste vi välja en datakälla. Välj det indexmönster som vi skapade tidigare.
Som standard visas en enda hel graf efter val av datakälla. Låt oss ställa in det.
I "Buckets"-blocket trycker du på "Lägg till"-knappen, väljer "X-asis" och ställer in X-axeln. Låt oss lägga undan tidsstämplarna för mottagandet av poster i loggen. I fältet "Aggregation", välj "Datumhistogram" och i "Fält" välj "@timestamp", vilket anger tidsfältet. Låt oss lämna "Minsta intervall" i "Auto"-tillståndet, och det kommer automatiskt att anpassa sig till vår skärm.
Genom att klicka på knappen "Uppdatera" kommer vi att se en graf med antalet förfrågningar var 30:e sekund.
Låt oss nu ställa in kolumnerna längs Y-axeln Nu visar vi det totala antalet förfrågningar i det valda tidsintervallet.
Låt oss ändra värdet "Aggregation" till "Sum Bucket", vilket gör att vi kan kombinera data för framgångsrika och misslyckade förfrågningar. I blocket Bucket -> Aggregation väljer du aggregeringen med "Filters" och ställer in filtreringen med "statusCode >= 400". Och i fältet "Anpassad etikett" anger vi vårt namn på indikatorn för en mer förståelig visning i förklaringen på diagrammet och i den allmänna listan.
Genom att klicka på knappen "Uppdatera" under inställningsblocket får vi en graf med problemförfrågningar.
Om du klickar på cirkeln bredvid förklaringen kommer ett fönster upp där du kan ändra färgen på kolumnerna.
Låt oss nu lägga till data om lyckade förfrågningar i diagrammet. I avsnittet "Mätvärden", klicka på knappen "Lägg till" och välj "Y-axel".
I det skapade måttet gör vi samma inställningar som för felaktiga förfrågningar. Endast i filtret anger vi "statuskod < 400".
Genom att ändra färgen på den nya kolumnen får vi en visning av förhållandet mellan problematiska och framgångsrika förfrågningar.
Genom att klicka på "Spara"-knappen högst upp på skärmen och ange namnet kommer vi att se det första diagrammet på instrumentpanelen.
data~~POS=TRUNC
Tänk nu på tabellvyn "Datatabell". Låt oss skapa en tabell med en lista över alla webbadresser som efterfrågades och antalet förfrågningar. Som i exemplet med vertikal stapel väljer vi först en datakälla.
Därefter kommer en tabell med en kolumn att visas på skärmen, som visar det totala antalet förfrågningar för det valda tidsintervallet.
Vi kommer bara att ändra blocket "Buckets". Klicka på knappen "Lägg till" och välj "Dela rader".
I fältet "Aggregation" väljer du "Villkor". Och i det visade fältet "Fält" välj "url.keyword".
Genom att ange "URL"-värdet i fältet "Anpassad etikett" och klicka på "Uppdatera" får vi den önskade tabellen med antalet förfrågningar för var och en av webbadresserna under den valda tidsperioden.
Högst upp på skärmen klickar du på "Spara"-knappen igen och anger namnet på tabellen, till exempel webbadresser. Låt oss gå tillbaka till instrumentpanelen och se båda vyerna skapade.
Arbeta med Dashboard
När vi skapar instrumentpanelen ställer vi bara in huvudvyns parametrar i visningsobjektinställningarna. Det är meningslöst att ange data för filter i objekt, till exempel "datumintervall", "filtrering av användaragent", "filtrering efter begäransland", etc. Det är mycket bekvämare att ange önskad tidsperiod eller ställa in den nödvändiga filtreringen i frågepanelen, som finns ovanför objekten.
Filtren som läggs till på den här panelen kommer att tillämpas på hela instrumentpanelen, och alla visningsobjekt kommer att byggas om i enlighet med de faktiska filtrerade data.
Slutsats
Kibana är ett kraftfullt verktyg som låter dig visualisera all data på ett bekvämt sätt. Jag försökte visa inställningen för de två huvudtyperna av display. Men andra typer är konfigurerade på liknande sätt. Och det överflöd av inställningar som jag lämnade "bakom kulisserna" kommer att tillåta dig att mycket flexibelt anpassa diagram för att passa dina behov.
Källa: will.com