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 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
Dimensionale data
Nauwkeurige signalering
Eenvoudige operatie
Efficiënte dataopslag
Krachtige queries
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?
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).