how-to-install-and-manage Help

Prometheus

Prometheus est une solution de monitoring open source conçue pour collecter, stocker et interroger des métriques sous forme de séries temporelles.
Dans notre infrastructure, il constitue le socle de la supervision centralisée, notamment pour toutes les machines et services référencés dynamiquement dans Netbox.

Architecture

Prometheus est déployé dans le cluster Kubernetes via FluxCD et Helm (chart kube-prometheus-stack).
Toutes les configurations sont maintenues en GitOps pour assurer traçabilité, reproductibilité et auditabilité.
L'intégration native avec Grafana permet une visualisation efficace, tandis que l'intégration avec Alertmanager gère la distribution des alertes.

Points clés de l'architecture :

  • Déploiement dans le namespace supervision

  • Découverte automatique des cibles grâce au plugin NetBox Prometheus SD

  • Gestion des alertes centralisée

  • Configuration maintenue et versionné dans le dépôt Git

Déploiement

L'installation du chart Helm officiel est orchestrée par FluxCD.
Le chart utilisé est kube-prometheus-stack, qui fournit en plus de Prometheus : Alertmanager, des règles d’alerting, des dashboards et des opérateurs CRD.

apiVersion: helm.toolkit.fluxcd.io/v2 kind: HelmRelease metadata: name: prometheus-stack namespace: supervision spec: releaseName: prom interval: 10m chart: spec: chart: kube-prometheus-stack version: "75.12.0" sourceRef: kind: HelmRepository name: prometheus-community namespace: supervision values: nodeExporter: enabled: false # Node Exporter géré à part sur les VM prometheus: prometheusSpec: additionalScrapeConfigs: [] scrapeConfigSelector: matchLabels: release: prom scrapeConfigNamespaceSelector: matchNames: - supervision serviceMonitorSelectorNilUsesHelmValues: false

Intégration dynamique avec Netbox

La découverte automatique des hôtes et VMs s’appuie sur le plugin Prometheus SD installé dans Netbox, qui expose dynamiquement les VMs éligibles au monitoring.

  • Plugin utilisé : netbox-plugin-prometheus-sd

  • Endpoint d’API utilisé :


    http://45.88.180.139:8080/api/plugins/prometheus-sd/virtual-machines/?status=active&has_primary_ip=true

La configuration de la cible de scrape dans Kubernetes se fait avec un objet ScrapeConfig du Prometheus Operator :

apiVersion: monitoring.coreos.com/v1alpha1 kind: ScrapeConfig metadata: name: netbox-vm namespace: supervision labels: release: prom spec: httpSDConfigs: - url: "http://45.88.180.139:8080/api/plugins/prometheus-sd/virtual-machines/?status=active&has_primary_ip=true" refreshInterval: 60s authorization: type: Token credentials: name: netbox-token key: token relabelings: # Compose IP:9100 avec fallback implicite - sourceLabels: ["__meta_netbox_primary_ip"] targetLabel: __address__ replacement: "$1:9100" action: replace # Met le label instance = adresse IP:9100 - sourceLabels: ["__address__"] targetLabel: instance

Gestion des secrets

Pour sécuriser l'accès à l’API Netbox, le token est stocké dans un Secret Kubernetes :

apiVersion: v1 kind: Secret metadata: name: netbox-token namespace: supervision stringData: token: "<TOKEN_NETBOX_API>"

Sélection des configurations de scrape

Prometheus (via kube-prometheus-stack) est configuré pour découvrir automatiquement toutes les ScrapeConfig portant le label release: prom dans le namespace supervision.
Cela rend la supervision extensible simplement en ajoutant un fichier ScrapeConfig versionné dans Git : pas besoin de modifier le déploiement principal Prometheus.

Accès, persistance & sécurité

  • Accès :


    Prometheus n’est pas exposé publiquement, uniquement accessible depuis le cluster. Grafana y accède en interne.

  • Persistance :


    Les métriques sont stockées durablement dans des volumes persistants.

  • Sécurité :


    Les tokens sensibles ne sont jamais commités en clair dans Git.

Visualisation et alerting

  • Grafana se connecte directement à Prometheus pour les dashboards et visualisations.

  • Alertmanager est configuré pour traiter les alertes Prometheus et les router (mail, webhook, Discord…).

  • Intégration avec Blackbox Exporter et d'autres ScrapeConfig pour superviser des endpoints HTTP, ICMP, TCP, etc.

Bénéfices et automatisation

  • Découverte automatique des VM/switches/hosts Netbox dès qu’ils ont un IP principal et le statut “active”.

  • Gestion déclarative : toute nouvelle cible dans Netbox ou ScrapeConfig apparaît automatiquement dans Prometheus.

  • Scalabilité : ajouter ou retirer une cible = simplement modifier Netbox ou déposer un fichier dans Git.

  • Auditabilité : toute modification est historisée via Git.

Exemple de workflow complet

  1. Un nouvel hôte/VM est ajouté ou mis à jour dans Netbox.

  2. Netbox Plugin Prometheus SD expose l’IP dans l’API /virtual-machines/.

  3. Le ScrapeConfig dans Kubernetes interroge Netbox toutes les 60s et met à jour la liste des cibles à monitorer.

  4. Prometheus découvre automatiquement la cible via cette API et commence à scrapper ses métriques Node Exporter.

  5. Les métriques sont accessibles et corrélées dans Grafana.

Ce système permet une supervision dynamique, automatisée et extensible, parfaitement intégrée à la CMDB Netbox et à la stack Grafana.

Last modified: 22 July 2025