Prometheus

Wat is Prometheus?

Prometheus is een open source, op metrics gebaseerd monitoringsysteem. Het heeft een eenvoudig maar krachtig datamodel en een querytaal waarmee de prestaties van applicaties en infrastructuur geanalyseerd kan worden.

prometheus_logo

Prometheus is voornamelijk geschreven in Go en gelicenseerd onder de Apache 2.0 licentie. Voor het uitvoeren van eigen code zijn er client libraries in alle populaire talen, waaronder Go, Java, C#, Python, Node.js, .Net, Ruby en Rust. Voor software zoals Kubernetes en Docker zijn reeds diverse Prometheus client libraries beschikbaar.

Er zijn honderden integraties beschikbaar voor software van derden, die de metrics van Prometheus (nog) niet ondersteunen. Deze worden aangeduid als ‘exporters’, en omvatten o.a: MySQL, PostgreSQL, K8s, AWS Cloudwatch, en Kafka.

Kenmerken van Prometheus

Geweldige visualisatie

Prometheus beschikt over diverse manieren om data te visualiseren: een ingebouwde expressiebrowser, Grafana integratie en een console-template taal.
Prometheus beschikt over diverse manieren om data te visualiseren: een ingebouwde expressiebrowser, Grafana integratie en een console-template taal.

Dimensionale data

Prometheus hanteert een dimensionaal datamodel. Tijdseries worden geïdentificeerd door een metric en een set van key-value pairs.
Prometheus hanteert een dimensionaal datamodel. Tijdseries worden geïdentificeerd door een metric en een set van key-value pairs.

Nauwkeurige signalering

Alerts worden gedefinieerd op basis van Prometheus' flexibele PromQL, welke zijn dimensionale informatie behoudt.
Alerts worden gedefinieerd op basis van Prometheus’ flexibele PromQL, welke zijn dimensionale informatie behoudt.

Eenvoudige operatie

Voor de betrouwbaarheid is iedere server onafhankelijk en vertrouwt uitsluitend op de lokale storage. Alle binaire bestanden zijn geschreven in Go en zijn statisch gekoppeld en eenvoudig in te zetten.
Voor de betrouwbaarheid is iedere server onafhankelijk en vertrouwt uitsluitend op de lokale storage. Alle binaire bestanden zijn geschreven in Go en zijn statisch gekoppeld en eenvoudig in te zetten.

Efficiënte dataopslag

Prometheus slaat tijdseries op met een efficiënt aangepast format op de lokale schijf. Scaling wordt gerealiseerd door database sharding en federation.
Prometheus slaat tijdseries op met een efficiënt aangepast format op de lokale schijf. Scaling wordt gerealiseerd door database sharding en federation.

Krachtige queries

PromQL biedt de mogelijkheid om verzamelde tijdseries te splitsen om ad-hoc grafieken, tabellen en alerts te genereren.
PromQL biedt de mogelijkheid om verzamelde tijdseries te splitsen om ad-hoc grafieken, tabellen en alerts te genereren.

Kubernetes monitoring met Prometheus

Het begrijpen van alle k8’s componenten is niet zomaar iets, het kost tijd om volledige controle te krijgen over zo’n geavanceerd en krachtig platform. Het is tevens belangrijk te beseffen dat nodes, applicaties of netwerken op een bepaald ogenblik kunnen uitvallen. Daarom zijn alerts, logbestanden, metrics en monitoring dashboards van cruciaal belang om storingen en andere issues te voorkomen.

Kubernetes operator

Een Operator is een specifieke controller die de Kubernetes-API uitbreidt om complexe applicaties voor een Kubernetes gebruiker te creëren, te configureren en te beheren.

Promotheus operator

De missie van de Prometheus Operator is om de werking van Prometheus bovenop Kubernetes zo eenvoudig mogelijk te maken. De Prometheus Operator biedt eenvoudige monitoring voor allerlei k8s clusters en deployments.

Hoe werkt het?

Prometheus Operator Architectuur
Prometheus Operator Architectuur

Wanneer een nieuwe versie van een applicatie wordt uitgerold, maakt k8s een nieuwe pod (container) aan en nadat de pod klaar is, vernietigt k8s de oude. Prometheus is constant actief op het checken van de k8s API. Wanneer het een verandering detecteert, creëert het een nieuwe Prometheus-configuratie, gebaseerd op de wijzigingen in de services (pods).