Datadog is een moderne monitoringtool voor applicaties en infrastructuur. De tool verzamelt allerlei statistieken van services die vervolgens via een SaaS (Software as a Service) data-analyseplatform te analyseren zijn. Voor het verzamelen maakt Datadog gebruik van een agent. Deze agent is beschikbaar voor zo goed als ieder platformen. De agent is verantwoordelijk voor het verzamelen en versturen van de statistieken naar Datadog.
Infrastructure
Na het plaatsen van de agent op je platform, verzamelt deze allerlei data over de infrastructuur, waaronder CPU- en memory gebruik. Daarnaast wordt, afhankelijk van het platform, extra data toegevoegd die relevant is voor dat platform.
Log Management
Bij het monitoren van een applicatie hoort ook het bestuderen van de logging hiervan. Ook hiervoor biedt Datadog een oplossing. Het is namelijk mogelijk om de Datadog agent zo te configureren dat de logging, die je applicatie naar stdout of stderr schrijft, wordt doorgezet naar Datadog. De grafische interface om de logging te analyseren komt sterk overeen met die van Elasticsearch/Kibana en Splunk.
APM & Continous Profiler
Misschien wel mijn favoriete feature in Datadog is de APM & Continous Profiler. Door het activeren en inrichten van deze feature in je landschap, krijg je een goed en duidelijk inzicht in mogelijke knelpunten en fouten die optreden in je applicatie.
Om APM & Continous Profiler te activeren dien je voor je applicatie de dd-trace-api library toe te voegen. Deze library is beschikbaar voor de meest gebruikte programmeertalen. Deze library maakt vervolgens, bij het uitvoeren van de code, traces aan waarin relevante informatie zoals de looptijd en eventuele fouten wordt opgeslagen. Wanneer de applicatie een andere aanroept, wordt de trace doorgezet naar de andere applicatie. Deze kan vervolgens de trace verder aanvullen met relevante informatie.
Uiteindelijk belanden de traces in Datadog en geven ze je inzicht in de totale looptijd, resource gebruik, mogelijke fouten die zijn opgetreden en een tijdsverdeling van de individuele delen code die zijn uitgevoerd.
De dd-trace-api library heeft ook de mogelijkheid om automatisch de logging te verrijken met een trace ID, zodat je eenvoudig de logging aan een trace kunt koppelen en vice versa. Dit werkt niet alleen bij het gebruik van de Log Management van Datadog zelf, maar ook bij alternatieven zoals Splunk en Elasticsearch.
Hierboven zie je een voorbeeld van een trace waarbij een exceptie is opgetreden. Informatie van de stack trace, het CPU-gebruik, het netwerk en de logging maken het eenvoudig om te herleiden wat de oorzaak van de exceptie is.
Watchdog
Zoals ik in het begin aangaf, heeft Datadog ook een feature genaamd Watchdog. Zoals de naam van deze feature doet vermoeden, is de Watchdog een soort waakhond over je applicatie of infrastructuur. De Watchdog observeert trends en patronen in de data en probeert aan de hand hiervan onregelmatigheden in kaart te brengen. Een stijgend geheugengebruik van een applicatie kan bijvoorbeeld het gevolg zijn van een memory leak.
Bovenstaande features zijn maar een fractie van de functionaliteit die Datadog bevat. Ik hoop dat ik jullie hiermee nieuwsgierig heb gemaakt naar Datadog. Ik ben in ieder geval erg enthousiast! Met name de APM & Continuous Profiler functionaliteit geeft je inzicht in de totale looptijd, resource gebruik, mogelijke fouten die zijn opgetreden en een tijdsverdeling van de individuele delen code. Daar wordt dan ook nog eens automatisch het CPU- en geheugen gebruik aan gekoppeld. En om het af te maken kan Datadog je logging voorzien van een trace ID om eenvoudig de bijbehorende logging erbij te toveren. Al met al kan Datadog, of een soortgelijk product, niet missen bij dagelijkse DevOps werkzaamheden.