Quelques Exporters Prometheus pratiques

Sommaire

Suite à un mini thread Twitter, je mets par écrit ici quelques lignes sur les exporters Prometheus qui peuvent s'avérer pratiques pour administrer un cluster Kubernetes.

X509 Certificate Exporter

Proposé par la société Enix, l'exporter x509-certificate-exporter permet de suivre les certificats x509 de vos applications, et être notifié sur l'expiration de ceux-ci.

J'utilise en général cert-manager et Let's Encrypt, qui permet d'automatiser la création et renouvellement de certificats, surtout au niveau ingress et HTTPS, mais cela n'empêche pas d'avoir des alertes sur le renouvellement des certificats :

  • Le challenge Let's Encrypt qui échoue pour diverses raisons (principalement des erreurs réseaux).
  • Un secret Kubernetes qui contient un ancien certificat qui n'est pas nettoyé.

Un dashboard est même fourni avec, que vous pourrez modifier selon vos envies :

x509 dashboard

Helm Exporter

J'utilise beaucoup de charts Helm pour déployer les applications sur Kubernetes, surtout les briques d'infrastructure (prometheus, nginx, cert-manager, velero, etc.). G Je souhaitais alors pouvoir suivre les versions de charts Helm sur l'ensemble des clusters administrés, et je suis tombé sur 2 outils:

  1. Nova de la société Fairwinds, un outil en CLI qui permet de lister les charts dépréciés. L'outil est pratique, mais difficile d'avoir une visualisation globale, ainsi qu'un tableau de bord

  2. L'exporter helm-exporter qui va générer des métriques Prometheus pour les charts installés au sein du cluster, avec les versions également dépréciées.

Je me suis arrêté sur ce deuxième choix, car il est ainsi facile d'avoir un dashboard dans Grafana.

La configuration est un tout petit peu "pénible", dans le sens où il faut définir la source de chaque chart (le tout est expliqué sur le dépôt GitHub).

 1config:
 2  helmRegistries:
 3    override:
 4      - registry:
 5          url: "https://charts.jetstack.io"
 6        charts:
 7          - "cert-manager"
 8        allowAllReleases: true
 9      - registry:
10          url: "https://charts.gitlab.io"
11        charts:
12          - "gitlab-runner"
13        allowAllReleases: true
14      - registry:
15          url: "https://shanestarcher.com/helm-charts"
16        charts:
17          - "helm-exporter"
18        allowAllReleases: true
19      - registry:
20          url: "https://kubernetes.github.io/ingress-nginx"
21        charts:
22          - "ingress-nginx"
23        allowAllReleases: true
24[...]

Ainsi, on peut voir que mes clusters ont bien le chart précédemment installé à jour ;)

helm exporter

Blackbox Exporter

On revient aux fondamentaux, le blackbox_exporter reste un exporter très utile lorsqu'on doit monitorer des sites ou équipements distants, ne répondant qu'en HTTP(S), DNS, TCP.

Je l'utilise surtout pour avoir les temps de réponse des sites déployés, depuis un site tiers.

website metrics

Harbor Exporter

Un petit dernier, quand on est en environnement conteneurs et qu'on gère une registry (Harbor notamment), on peut suivre son état avec celui-ci. Il existe l'exporter harbor_exporter.

Je l'utilise assez peu, mais cela me permet de voir quels projets consomment le plus de place quand il faut y faire du ménage (il est si facile de créer des images Docker...).

harbor exporter

Prometheus MS Teams

Ce n'est pas un exporter, mais je note quand même l'outil prometheus-msteams, qui est un serveur web léger en Go qui permet de récupérer des alertes générées via webhook pour les transmettre à un canal MS Teams.

promteams

Testé chez moi avec succès !

Cabourotte & Appclacks

Si cela nous vous suffit pas, allez voir aussi ce que fait @mcorbin, avec Appclacks et sa sonde health-check cabourotte. Projet prometteur !

Les probes se pilotent via API au travers d'une CLI, et il existe même un provider Terraform. On peut soit utiliser les sondes fournies, soit ses propres sondes avec cabourotte, qui ira récupérer sa config auprès du serveur central.

D'autres ressources

Dernier petit lien, si vous devez administrer un serveur Mastodon (rien à voir avec Kubernetes, certes), allez voir ici.