mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-13 18:04:43 +02:00
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
This commit is contained in:
parent
ebb2eec184
commit
649c6fde8e
11 changed files with 527 additions and 5 deletions
108
k8s/infra/blackbox-exporter/values.yaml
Normal file
108
k8s/infra/blackbox-exporter/values.yaml
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
# 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue