Hallo, mijn naam is Eugene, ik ben een B2B-teamleider bij Citymobil. Een van de taken van ons team is het ondersteunen van integraties voor het bestellen van een taxi bij partners, en om een stabiele service te garanderen, moeten we altijd begrijpen wat er gebeurt in onze microservices. En hiervoor moet u de logboeken constant controleren.
In Citymobil gebruiken we de ELK-stack (ElasticSearch, Logstash, Kibana) om met logs te werken, en de hoeveelheid data die daar aankomt is enorm. Het is vrij moeilijk om problemen te vinden in deze massa verzoeken die kunnen verschijnen na de implementatie van nieuwe code. En voor hun visuele identificatie heeft Kibana een Dashboard-sectie.
Er zijn nogal wat artikelen over Habré met voorbeelden van het instellen van een ELK-stack om gegevens te ontvangen en op te slaan, maar er zijn geen relevante materialen over het maken van een dashboard. Daarom wil ik laten zien hoe je een visuele weergave van gegevens kunt maken op basis van inkomende logs in Kibana.
afstelling
Om het duidelijker te maken, heb ik een Docker-image gemaakt met ELK en Filebeat. En geplaatst in een container een kleine
Kloon de configuratierepository docker-compose
en ELK-instellingen en start het met de opdracht docker-compose up
. Opzettelijk geen sleutel toevoegen -d
om de voortgang van de ELK-stack te zien.
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker-compose up
Als alles correct is geconfigureerd, zien we een vermelding in de logboeken (misschien niet meteen, het proces van het starten van een container met de volledige stapel kan enkele minuten duren):
{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],"pid":6,"message":"http server running at http://0:5601"}
adres localhost:5061
Kibana zou moeten openen.
Het enige dat we hoeven te configureren, is een indexpatroon voor Kibana maken met informatie over welke gegevens moeten worden weergegeven. Om dit te doen, voeren we een curl-verzoek uit of voeren we een reeks acties uit in de grafische interface.
$ 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"}}'
Een indexpatroon maken via de GUI
Om te configureren, selecteert u de sectie Ontdekken in het linkermenu en gaat u naar de pagina Indexpatroon maken.
Door op de knop "Indexpatroon maken" te klikken, komen we op de pagina voor het maken van een index. Voer in het veld "Indexpatroonnaam" "logstash-*" in. Als alles correct is geconfigureerd, zal Kibana hieronder de indexen tonen die onder de regel vallen.
Selecteer op de volgende pagina het sleutelveld met een tijdstempel, in ons geval is dat zo @timestamp
.
Hierdoor wordt de pagina met indexinstellingen weergegeven, maar op dit moment is er geen verdere actie van ons vereist.
Nu kunnen we weer naar het gedeelte Ontdekken gaan, waar we de logboekvermeldingen zullen zien.
Overzicht
Klik in het linkermenu op het gedeelte Dashboard maken en ga naar de overeenkomstige pagina.
Klik op "Nieuw dashboard maken" en ga naar de pagina voor het toevoegen van objecten aan het dashboard.
Klik op de knop "Nieuwe maken" en het systeem zal u vragen om het type gegevensweergave te selecteren. Kibana heeft er een groot aantal, maar we zullen kijken naar het maken van een grafische weergave van de "Verticale balk" en een tabelvormige "Datatabel". Andere soorten presentaties zijn op een vergelijkbare manier geconfigureerd.
Sommige beschikbare objecten hebben het label B en E, wat betekent dat het formaat experimenteel of in bètatest is. Na verloop van tijd kan het formaat veranderen of volledig verdwijnen uit Kibana.
Verticale balk
Laten we voor het voorbeeld "Verticale balk" een histogram maken van de verhouding tussen succesvolle en niet-succesvolle responsstatussen van onze service. Aan het einde van de instellingen krijgen we de volgende grafiek:
We classificeren alle verzoeken met een responsstatus < 400 als succesvol en >= 400 als problematisch.
Om een "Vertical Bar"-diagram te maken, moeten we een gegevensbron selecteren. Selecteer het indexpatroon dat we eerder hebben gemaakt.
Standaard verschijnt er één solide grafiek na het selecteren van een gegevensbron. Laten we het instellen.
Druk in het blok "Buckets" op de knop "Toevoegen", selecteer "X-asis" en stel de X-as in. Laten we de tijdstempels opzij zetten voor de ontvangst van invoer in het logboek. Selecteer in het veld "Aggregatie" "Datumhistogram" en selecteer in het "Veld" "@timestamp", waarmee het tijdveld wordt aangegeven. Laten we "Minimuminterval" in de "Auto" -status laten staan, en het zal zich automatisch aanpassen aan ons display.
Door op de knop "Bijwerken" te klikken, zien we elke 30 seconden een grafiek met het aantal verzoeken.
Laten we nu de kolommen langs de Y-as opstellen.Nu tonen we het totale aantal verzoeken in het geselecteerde tijdsinterval.
Laten we de waarde "Aggregatie" wijzigen in "Sum Bucket", waarmee we gegevens voor geslaagde en niet-succesvolle verzoeken kunnen combineren. Selecteer in het blok Bucket -> Aggregation de aggregatie op "Filters" en stel de filtering in op "statusCode >= 400". En in het veld "Aangepast label" geven we onze naam van de indicator aan voor een meer begrijpelijke weergave in de legenda op de grafiek en in de algemene lijst.
Door op de knop "Bijwerken" onder het instellingenblok te klikken, krijgen we een grafiek met probleemverzoeken.
Als u op de cirkel naast de legenda klikt, verschijnt er een venster waarin u de kleur van de kolommen kunt wijzigen.
Laten we nu gegevens over succesvolle verzoeken aan het diagram toevoegen. Klik in het gedeelte "Metriek" op de knop "Toevoegen" en selecteer "Y-as".
In de gemaakte metriek maken we dezelfde instellingen als voor foutieve verzoeken. Alleen in het filter specificeren we "statusCode < 400".
Door de kleur van de nieuwe kolom te wijzigen, krijgen we een weergave van de verhouding tussen problematische en succesvolle verzoeken.
Door bovenaan het scherm op de knop "Opslaan" te klikken en de naam op te geven, zien we de eerste grafiek op het dashboard.
data Table
Beschouw nu de tabelweergave "Gegevenstabel". Laten we een tabel maken met een lijst van alle URL's die zijn opgevraagd en het aantal van die verzoeken. Net als bij het voorbeeld met de verticale balk selecteren we eerst een gegevensbron.
Daarna wordt een tabel met één kolom op het scherm weergegeven, die het totale aantal verzoeken voor het geselecteerde tijdsinterval weergeeft.
We zullen alleen het blok "Buckets" wijzigen. Klik op de knop "Toevoegen" en selecteer "Rijen splitsen".
Selecteer "Voorwaarden" in het veld "Aggregatie". En selecteer in het verschenen veld "Veld" "url.keyword".
Door de waarde "Url" op te geven in het veld "Aangepast label" en op "Bijwerken" te klikken, krijgen we de gewenste tabel met het aantal verzoeken voor elk van de URL's voor de geselecteerde periode.
Klik bovenaan het scherm opnieuw op de knop "Opslaan" en geef de naam van de tabel op, bijvoorbeeld Urls. Laten we teruggaan naar het dashboard en beide gemaakte weergaven bekijken.
Werken met dashboards
Bij het maken van het dashboard hebben we alleen de belangrijkste weergaveparameters ingesteld in de weergaveobjectinstellingen. Het heeft geen zin om gegevens voor filters in objecten op te geven, bijvoorbeeld "datumbereik", "filteren op useragent", "filteren op aanvraagland", enz. Het is veel handiger om de gewenste tijdsperiode op te geven of de nodige filtering in te stellen in het queryvenster, dat zich boven de objecten bevindt.
De filters die aan dit paneel zijn toegevoegd, worden toegepast op het gehele dashboard en alle weergaveobjecten worden opnieuw opgebouwd in overeenstemming met de werkelijk gefilterde gegevens.
Conclusie
Kibana is een krachtige tool waarmee u alle gegevens op een handige manier kunt visualiseren. Ik heb geprobeerd de instelling van de twee belangrijkste weergavetypen weer te geven. Maar andere typen zijn op een vergelijkbare manier geconfigureerd. En dankzij de overvloed aan instellingen die ik "achter de schermen" heb achtergelaten, kunt u zeer flexibel grafieken aanpassen aan uw behoeften.
Bron: www.habr.com