how-to-install-and-manage Help

Blackbox Exporter

Blackbox Exporter est un exporter Prometheus permettant de superviser l’accessibilité et la performance de services (HTTP(s), TCP, ICMP, etc.) par des sondes externes (probes). Il permet de simuler le point de vue d’un utilisateur ou d’un service externe, afin de vérifier que les endpoints sont accessibles et répondent correctement.

Architecture

Dans notre infrastructure, Blackbox Exporter est utilisé pour :

  • Superviser l’accessibilité des services HTTP internes et externes

  • Surveiller la connectivité réseau (ping ICMP, TCP port check)

  • Déclencher des alertes Prometheus en cas d’indisponibilité

Le déploiement se fait dans le namespace supervision via FluxCD et Helm. Les probes sont gérées via des objets Probe du CRD Prometheus Operator.

Déploiement de Blackbox Exporter dans Kubernetes

Le déploiement s’effectue avec un HelmRelease FluxCD :

apiVersion: helm.toolkit.fluxcd.io/v2 kind: HelmRelease metadata: name: blackbox-exporter namespace: supervision spec: releaseName: blackbox interval: 10m chart: spec: chart: prometheus-blackbox-exporter version: "11.1.1" sourceRef: kind: HelmRepository name: prometheus-community namespace: supervision values: podSecurityContext: runAsNonRoot: true runAsUser: 1000 runAsGroup: 3000 capabilities: add: - NET_RAW podSecurityPolicy: enabled: false config: modules: http_2xx: prober: http timeout: 5s http: valid_http_versions: ["HTTP/1.1", "HTTP/2.0"] follow_redirects: true preferred_ip_protocol: "ip4" tcp_connect: prober: tcp timeout: 5s icmp_ping: prober: icmp timeout: 5s
  • Sécurité : le container tourne en mode non-root, avec la capacité NET_RAW nécessaire au ping ICMP.

  • Modules configurés : HTTP, TCP, ICMP, chacun avec leur propre timeout.

Un service interne expose l’exporter sur le port 9115 :

apiVersion: v1 kind: Service metadata: name: prometheus-blackbox-exporter namespace: supervision spec: selector: app.kubernetes.io/name: prometheus-blackbox-exporter ports: - protocol: TCP port: 9115 targetPort: 9115

Déclaration des probes (Sondes)

Les probes sont définies via des objets CRD Probe (Prometheus Operator), permettant de piloter dynamiquement quelles cibles superviser et comment.

Exemple de probes :

1. Probe HTTP (vérification 2xx)

apiVersion: monitoring.coreos.com/v1 kind: Probe metadata: name: blackbox-http namespace: supervision labels: release: prom spec: jobName: blackbox-http module: http_2xx interval: 30s prober: url: prometheus-blackbox-exporter.supervision.svc.cluster.local:9115 targets: staticConfig: static: - https://google.fr - https://myges.fr - https://gitlab.innovalia.cc - https://grafana.innovalia.cc - https://ia.innovalia.cc

2. Probe ICMP (Ping)

apiVersion: monitoring.coreos.com/v1 kind: Probe metadata: name: blackbox-ping namespace: supervision labels: release: prom spec: jobName: blackbox-ping module: icmp_ping interval: 30s prober: url: prometheus-blackbox-exporter.supervision.svc.cluster.local:9115 targets: staticConfig: static: - 1.1.1.1 - 8.8.8.8

3. Probe TCP (Connexion sur un port)

apiVersion: monitoring.coreos.com/v1 kind: Probe metadata: name: blackbox-tcp namespace: supervision labels: release: prom spec: jobName: blackbox-tcp module: tcp_connect interval: 30s prober: url: prometheus-blackbox-exporter.supervision.svc.cluster.local:9115 targets: staticConfig: static: - 45.88.180.139:8080

Alerting

Les échecs de probes déclenchent des alertes Prometheus personnalisées.

Exemple de règle d’alerte :

apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: name: blackbox-endpoint-alerts namespace: supervision spec: groups: - name: blackbox.rules rules: - alert: BlackboxProbeFailed expr: probe_success == 0 for: 2m labels: severity: critical annotations: summary: "Probe failed for {{ $labels.instance }}" description: "Le probe {{ $labels.job }} vers {{ $labels.instance }} a échoué."
  • L’alerte se déclenche si la probe échoue (probe_success == 0) pendant plus de 2 minutes.

  • Le message indique le job et la cible concernée.

Visualisation & Exploitation

Tous les résultats des probes sont disponibles dans Grafana, via la datasource Prometheus. Il est possible de visualiser :

  • Le statut des endpoints supervisés (up/down)

  • Les temps de réponse HTTP/TCP/ICMP

  • Les logs d’exécution des probes pour analyse fine

  • L’historique des indisponibilités

Dashboard Blackbox dans grafana

Synthèse

Blackbox Exporter permet une supervision active, indépendante de la stack applicative, en simulant le point de vue externe :

  • Déploiement simple via HelmRelease (namespace supervision)

  • Configuration centralisée des probes (HTTP, TCP, ICMP)

  • Intégration native avec Prometheus Operator pour la déclaration et le suivi des sondes

  • Alerting et dashboards prêts à l’emploi pour la supervision réseau et applicative

Last modified: 22 July 2025