Log monitoring en analyse met Elastic Observability

Paul Techniek

In deze blog lichten we toe waarom log monitoring en analyse belangrijk is, en hoe het Elastic Observability platform hierbij kan helpen.

Waarom log monitoring en analyse?

Grote bedrijven werken steeds meer met autonome teams en proberen om efficiënter te worden door afhankelijkheden van andere teams te beperken. Dit zie je vaak terug bij microservice architecturen. Je ziet het zelfs bij organisaties die traditioneler werken en een groot landschap hebben aan applicaties.

Innovatie gaat steeds sneller en de release cyclus wordt daarmee steeds korter. Met name als releases dan ongecontroleerd worden uitgevoerd, wordt de kans op fouten steeds groter. Autonome teams gebruiken vaak ieder een eigen toolset, waardoor er een wildgroei aan licenties nodig is die voor de organisatie niet inzichtelijk zijn. Plus, steeds meer software gaat richting de cloud, waar soms nog beperkte kennis van is. Al met al zijn er veel redenen waarom fouten erbij insluipen.

Dit hoeft niet per se erg te zijn, als de fouten maar snel genoeg worden gedetecteerd! Het Elastic Observability platform helpt je om hierin inzichten te krijgen, door monitoring en analyse faciliteiten aan te bieden over je gehele landschap.

Elastic observability problemen

Hoe helpt Elastic Observability hierbij?

Het Elastic Observability platform is de plek om een holistische weergave te krijgen van je applicatielandschap.

Het idee is dat je op allerlei plekken in je architectuur “agents” installeert die logs verzamelen en naar Elastic sturen. Deze ruwe data wordt vervolgens geaggregeerd tot bruikbare metrieken en weergegeven in het Kibana dashboard. Maar je kunt ook proactief monitoren door alerts te definiëren en via een kanaal zoals Slack een melding te krijgen als een bepaalde drempelwaarde is overschreden. Aan de standaard dashboards kun je visualisaties voor je eigen metrieken toevoegen. Daarnaast kun je ook geheel eigen dashboards definiëren op basis van je eigen KPI’s.

Het platform bestaat grofweg uit de volgende onderdelen:

Elastic Observability architectuur
  • APM: Application Performance Monitoring. Biedt mogelijkheden aan om de performance van applicaties inzichtelijk te maken. Door bijvoorbeeld een trace te tonen van requests, zodat je inzichtelijk krijgt waar een probleem specifiek zit.
  • Infrastructure monitoring: Los van je applicaties worden allerlei metrieken gegenereerd van je infrastructuur. Op deze manier kun je bijvoorbeeld een zoektocht naar issues beginnen door te kijken naar alle pods in je Kubernetes cluster.
  • Logging: Logs bieden de basis om analyses op te doen. Logs van verschillende applicaties kunnen worden gecorreleerd om hiermee over het hele landschap te kunnen analyseren.
  • Synthetics: Controleert periodiek de status van diensten en applicaties, om daarmee te kunnen sturen op de beschikbaarheid van je endpoints.
  • RUM: Real User Monitoring combineert de ruwe data met user experience gegevens om daarmee de gebruikerservaring inzichtelijk te maken.

Bij dit alles ondersteunt Elastic je met behulp van machine learning, die bijvoorbeeld gaat zoeken naar “anomalies” in je logs. Dat zijn afwijkijkingen van het standaard gedrag, zoals bijvoorbeeld een JVM heap space error. Alle gegevens worden opgeslagen volgens OpenTelemetry. Dit is een standaard om telemetrische gegevens op te slaan, bestaande uit een set aan APIs, SDKs, tooling en integratie hiertussen.

Scenario

Om een indruk te geven hoe je te werk zou gaan met het Observability platform beschrijven we een scenario, gebaseerd op de introductie van Elastic.

  1. Binnenkomende Slack notificatie. Op basis van een metriek is een alert gedefinieerd die als actie een bericht post in een Slack kanaal.
  1. Analyse met service map. Vervolgens wordt gekeken in welke service het probleem precies is opgetreden. Met de service map worden alle logische services van de architectuur getoond en wordt op basis van anomaly detection met een rode (ongezond), oranje (verminderde gezondheid) of groene (gezond) status de gezondheid van een service aangegeven. Dit wordt bepaald aan de hand van anomoly detection. Er wordt rechts geklikt op een rode service en vervolgens worden de service details getoond.
Elastic observability service map
  1. De trace wordt weergegeven. Hieruit wordt duidelijk in welke stappen het request wordt afgehandeld en waar het probleem in zit. In onderstaande screenshot kun je duidelijk zien hoe een request wordt afgehandeld en waar relatief de tijd in gaat zitten (Overigens is deze om een indruk te geven, want de performance is prima en deze is niet gerelateerd aan bovenstaande service map).
APM trace
  1. Op basis van de stacktrace wordt de bottleneck gevonden, middels anomaly detection.
  2. Dan wordt uitgezoomd naar de volledige log files van de (Kubernetes) pod.
  3. Daar wordt een Java Heap Space error getoond. Elastic zoomt automatisch voor je in op deze anomaly.
  4. Tot slot worden de JVM metrieken weergegeven en zien we dat het heap gebruik maximaal is.

Andere perspectieven

Om ook nog een indruk te geven van de veelzijdigheid van het platform kun je de zoektocht ook vanuit heel andere perspectieven starten.

Infrastructuur

Onder Infrastructure > inventory kun je alle hosts zien die voorkomen in jouw landschap. In onderstaand screenshot wordt het CPU-gebruik weergegeven van de Kubernetes pods. Hoe donkerder een host gekleurd is, des te meer CPU deze gebruikt. Maar, je kunt hier ook metrieken zien voor Load, Memory, Network, Log Rate en POD CPU.

Je kunt vervolgens inzoomen op een specifieke host.

Elastic observability inventory

Custom dashboards

Daarnaast heb je de volledige kracht van Kibana tot je beschikking:

Elastic observability wereldkaart

In bovenstaande screenshot zie je bijvoorbeeld een custom dashboard met daarin een wereldkaart en allerlei visualisaties voor custom KPIs. Op basis van de rode gebieden kun je inzoomen op een specifiek probleem.

Subscriptions

In het volgende overzicht worden de benodigde subscriptions getoond. Alhoewel dit niet direct bleek uit deze pagina, wist een Elastic partner ons te vertellen dat we een Gold licentie nodig hebben om gebruik te kunnen maken van Observability in de cloud. Omdat observability een aparte module is bovenop Elastic heb je daarom al vrij gauw een stevige licentie nodig. Daarom is het vooral interessant als het al in je subscription zit, maar voor apart gebruik is de prijs wat te hoog.

Samenvatting

Elastic Observability is een mooi platform om holistisch te kunnen monitoren en analyses uit te voeren over je gehele landschap heen. Afhankelijk van je performance probleem kun je een zoektocht beginnen vanuit verschillende perspectieven, waaronder een service map, request trace of inventory. Je wordt hierbij ondersteund in je zoektocht door machine learning dat afwijkingen in het standaard gedrag detecteert en deze uitlicht.

Met name het holistische stuk is waardevol. Dat je over services en dus over teams heen kunt monitoren is erg krachtig. Belangrijke voorwaarde hiervoor is wel dat je agents installeert op de nodige plekken, om überhaupt te kunnen monitoren.

Qua prijzen is het best een hoogdrempelig platform, want Observability komt als module bovenop Elastic zelf. Daarom is het vooral interessant als het al bij je bestaande subscription zit, maar te kostbaar om standalone te draaien.

Bronnen

Als bronnen is met name gebruik gemaakt van de Elastic website zelf:

Wil je ons meer vragen over monitoring, logging, of in het algemeen over maatwerksoftware? Dan weet je ons te vinden!

Meer blogs over logging en monitoring...

Een afspraak maken bij ons op kantoor of wil je even iemand spreken? Stuur ons een mail of bel met Jolanda.