Funk-lab/k8s/infra/blackbox-exporter/values.yaml
Claude 649c6fde8e
feat(monitoring): surveillance réseau active via blackbox_exporter
Sondes actives ICMP/HTTP/DNS qui complètent le monitoring passif
(node_exporter + up{}) : joignabilité hôtes/passerelle, accès internet,
santé DNS *.lab.local + forwarding, latence LAN, services de bout en
bout via Traefik.

- blackbox_exporter (chart 11.13.0, ArgoCD, ns monitoring) — ICMP via
  NET_RAW, DNS du pod = dnsmasq (chemin réel lab → Traefik)
- 3 jobs blackbox-icmp/-http/-dns (additionalScrapeConfigs)
- alerts-network.yaml : internet, DNS, passerelle, hôtes, services,
  latence, exporter (→ pipeline AlertManager existant)
- Asa : outil network_status + contexte présélectionnable reseau
- doc admin/infra/reseau.md + CLAUDE.md + progress

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rc3dLKfqEPHexvFCCx5ZEF
2026-06-25 12:43:13 +00:00

108 lines
3.3 KiB
YAML

# 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