BLOG

Softwarebeheer

Observability: weet wat er gebeurt in je applicaties

25 juni 2020

Een veelvoorkomend probleem bij veel organisaties is dat men er niet altijd goed bewust van is wat er in hun applicaties gebeurt en hoe gebruikers hiermee omgaan. Uiteraard kennen we allemaal Google Analytics om te zien wie welke pagina bezoekt. Fouten worden vaak pas opgespoord zodra deze gemeld worden door een eindgebruiker. Maar hoe krijg je nu echt beter inzicht in je applicaties?    

Elastic Stack

Bij Senet hebben wij met onze producten dezelfde “problemen” gehad waarbij er enorm veel werd gelogd, maar deze log files waren zeer slecht inzichtelijk. Het “greppen” op logfiles is niet iets wat plezierig werkt en het verder aggregeren van deze logs is vrijwel onmogelijk. Om dit op te lossen zijn wij overgestapt op de Elastic Stack (in het verleden ook wel “ELK” genoemd). Deze stack, bestaande uit verschillende componenten, maakt het eenvoudig om logs te doorzoeken en te rapporteren op gebeurtenissen binnen je applicatie. 

De Elastic Stack maakt gebruik van Elasticsearch dat een op Apache Lucene gebaseerde data storage is. Door het verzamelen van alle gegevens en deze te indexeren in Elasticsearch is fulltext-search mogelijk en dit maakt het uiterst geschikt voor het doorzoeken van de logbestanden. Door middel van Kibana, de grafische analyze applicatie in de Elastic stack, kunnen eenvoudig dashboards worden gemaakt en handmatige zoekcommando’s worden uitgevoerd.

Logs doorsturen met Beats

Er zijn verschillende manieren om alle log-gegevens naar Elasticsearch te sturen. Zo is er een mogelijkheid om de data direct van de applicatie naar Elasticsearch te versturen of eventueel via een queue zoals Apache Kafka. Het nadeel van data direct doorsturen naar Elasticsearch is dat je applicatie niet meer onafhankelijk kan draaien wat problemen kan geven bij grote drukte. Een oplossing die wij bij Senet hiervoor gebruiken is Beats. Dit is een zeer lichtgewicht  log shipper geschreven door Elastic zelf. Deze log shippers kunnen eenvoudig het lokale filesysteem scannen en de logs vervolgens doorsturen naar het gewenste endpoint. Om dit mogelijk te maken zijn er verschillende “beats” beschikbaar:

  • Filebeat 
  • Metricbeat 
  • Heartbeat
  • Packetbeat
  • Winlogbeat (Windows events)
  • Auditbeat
  • Functionbeat (Serverless)

Kibana

Om alle gegevens in te zien is er een webapplicatie beschikbaar genaamd Kibana. Met Kibana is het mogelijk om alle geïndexeerde gegevens in te zien en hierop te rapporteren. 

Dashboards

Met alle data die verzameld is kunnen door simpel drag-en-drop eenvoudig dashboards worden gemaakt. Een dashboard kan natuurlijk ideaal zijn voor  het samenvatten van alle gegevens en het patronen te herkennen in wat er gebeurt.

Canvas

Het grafisch tonen van je data is mogelijk door gebruik te maken van “canvas”. Met deze feature kun je zelf je eigen infographic maken en deze bijvoorbeeld grafisch tonen op een scherm. Via canvas heeft men toegang tot alle gegevens en zijn de mogelijkheden bijna eindeloos.Het canvas zal realtime worden geupdate zodra er wijzigingen binnen komen.

Discover

Via discover heb je de mogelijkheid om te zoeken in en naar documenten. Elke log regel zal geregistreerd worden als document en is via een eigen taal (Kibana Query Language oftewel KQL) eenvoudig te doorzoeken. Met slimme datum en tijd filters kan er via relatieve of absolute tijden gezocht worden naar exact de documenten  met een bepaalde tijdsindicatie. Ook kan er eenvoudig worden ingezoomd op bepaalde tijdvakken waardoor het vinden van de juiste gegevens voor iedereen toegankelijk is.

Machine learning

Ben je geïnteresseerd in “vreemd” gedrag binnen je applicatie? Weet dan dat dit enorm lastig is om vast te stellen. Zo kan het natuurlijk zijn dat er overdag zo’n 1000 berichten per minuut binnen komen, maar in de avond zijn dit er misschien maar 10. Nu is dit een enorm verschil maar lastig vast te stellen of dit nu goed of fout is. Om dit op te lossen is er een geïntegreerde machine learning mogelijkheid  waarbij de Elastic Stack patronen gaat herkennen. Door het analyseren van deze patronen kunnen scores worden uitgedeeld waar uiteraard op gerapporteerd kan worden,  op zowel een dashboard of op een canvas.  Op deze manier krijg je dus volledige controle en kun je eventueel “abnormaal” gedrag herkennen en actie ondernemen nog voordat een gebruiker er last van heeft.

Performance en schaalbaarheid

De performance van de Elastic Stack zal voornamelijk afhankelijk zijn van het Elasticsearch cluster dat op de achtergrond draait. Door het doorsturen van logs vanuit Beats (dan wel of niet via Logstash) zal de applicatie zich automatisch aanpassen aan de doorvoersnelheid van Elasticsearch. Mocht  het indexeren van de logbestanden niet snel genoeg gaan zal Beats automatisch vertragen zodat alles stabiel blijft draaien.

 

Uiteraard heeft ook Elasticsearch een maximale doorvoersnelheid. Een benchmark laat echter zien dat de gegevens ongeveer lineair geschaald kunnen worden waarbij er meer dan 1 miljoen berichten per seconden door het cluster geïndexeerd kunnen worden.

 

Elastic common schema (ECS)

Aangezien elke applicatie zijn eigen manier heeft voor het opstellen van logs zijn deze gegevens vaak vrij lastig te aggregeren. Waar applicatie A het bericht logt onder “message” zal applicatie B dit wellicht doen onder “msg”. Om dit probleem op te lossen heeft Elastic een open specificatie gemaakt genaamd ECS. Deze definitie zorgt ervoor dat geaggregeerde data op dezelfde plek te vinden is en dat het niet uitmaakt waar deze data vandaan komt.

Nog veel meer features

Uiteraard heeft de Elastic Stack nog veel meer te bieden dan wat er in dit artikel beschreven staat. Zo biedt de oplossing nog opties voor:

  • Het dynamisch plotten van gegevens op een kaart
  • Het registreren en rapporteren van metrieken zoals CPU/geheugen gebruik
  • Het monitoring van uptime van je applicaties
  • SIEM (geavanceerde security monitoring) dat nieuw is binnen de stack sinds de overname van Endgame.

Meer inzicht in uw applicaties

Wilt u ook meer inzicht in wat er gebeurt in uw applicaties? Of heeft u interesse in de mogelijkheden van de Elastic Stack voor uw organisatie? Neem dan vooral contact met ons op voor een vrijblijvende afspraak.

Voor meer informatie over hoe Elasticsearch kan worden ingezet binnen uw organisatie, lees dan ook onze eerdere blogpost: Vier manieren waarop Elasticsearch het verschil kan maken binnen úw organisatie.


Bronnen:

Interesse in een gesprek?

neem contact op met Pim Jansen

Laat uw gegevens achter

We nemen contact met u op!

Zie onze privacyverklaring.