# prometheus-blackbox-exporter — cluster Funk # Sondes réseau actives (ICMP / HTTP / DNS) scrappées par Prometheus. # Les cibles ne sont PAS définies ici : elles vivent dans # k8s/infra/monitoring/values.yaml (prometheusSpec.additionalScrapeConfigs, # jobs blackbox-*), comme les autres scrapes hors-cluster (storage-01, gpu-01). # Nom de service prévisible → blackbox-exporter.monitoring.svc.cluster.local:9115 fullnameOverride: blackbox-exporter replicas: 1 # Petite empreinte (compute-02/03 = 8 GB, OOM-killer actif). resources: requests: cpu: 25m memory: 32Mi limits: memory: 64Mi # ICMP nécessite la capability NET_RAW (raw sockets). La ns monitoring est en # PodSecurity « privileged » → autorisé. On garde le reste verrouillé. securityContext: runAsUser: 1000 runAsGroup: 1000 runAsNonRoot: true readOnlyRootFilesystem: true allowPrivilegeEscalation: false capabilities: drop: ["ALL"] add: ["NET_RAW"] # Résolution DNS du pod : on tape d'abord dnsmasq (192.168.10.1) pour que les # sondes HTTP des services *.lab.local empruntent le VRAI chemin (DNS lab → # Traefik). Repli sur 1.1.1.1 pour qu'une panne dnsmasq n'aveugle pas les # sondes internet. dnsPolicy=None car blackbox n'a pas besoin du DNS cluster. dnsPolicy: "None" dnsConfig: nameservers: - "192.168.10.1" # dnsmasq (storage-01) — résout *.lab.local - "1.1.1.1" # repli internet searches: - "lab.local" # On scrape via additionalScrapeConfigs (cf. monitoring/values.yaml), donc pas # besoin du ServiceMonitor ni des règles packagées par le chart. serviceMonitor: enabled: false prometheusRule: enabled: false # Modules de sonde. Chaque job Prometheus référence un module par son nom. config: modules: # --- HTTP : service vivant et code 2xx (suit les redirections) --- http_2xx: prober: http timeout: 5s http: valid_http_versions: ["HTTP/1.1", "HTTP/2.0"] follow_redirects: true preferred_ip_protocol: "ip4" ip_protocol_fallback: false # --- HTTP en HTTPS auto-signé (lab) : ne vérifie pas le certificat --- http_2xx_insecure: prober: http timeout: 5s http: valid_http_versions: ["HTTP/1.1", "HTTP/2.0"] follow_redirects: true preferred_ip_protocol: "ip4" fail_if_not_ssl: false tls_config: insecure_skip_verify: true # --- ICMP : joignabilité + latence L3 (hôtes, passerelle, internet) --- icmp: prober: icmp timeout: 5s icmp: preferred_ip_protocol: "ip4" ip_protocol_fallback: false # --- DNS : dnsmasq résout-il un nom du lab ? (wildcard *.lab.local) --- dns_lab: prober: dns timeout: 5s dns: query_name: "grafana.lab.local" query_type: "A" preferred_ip_protocol: "ip4" validate_answer_rrs: fail_if_not_matches_regexp: - ".*" # --- DNS : forwarding externe (dnsmasq → upstream) fonctionne-t-il ? --- dns_external: prober: dns timeout: 5s dns: query_name: "one.one.one.one" query_type: "A" preferred_ip_protocol: "ip4" # --- TCP : poignée de main sur un port (réserve, ex. débogage) --- tcp_connect: prober: tcp timeout: 5s