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 :
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:
-
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
-
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 ;)
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.
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...).
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.
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.