Funk-lab/k8s/infra/monitoring/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

237 lines
6.1 KiB
YAML

# kube-prometheus-stack — cluster Funk
# Ressources limitées pour compute-02/03 (8 GB RAM)
grafana:
initChownData:
enabled: false
grafana.ini:
database:
type: postgres
host: 192.168.10.1:5432
name: grafana
user: grafana
envFromSecrets:
- name: grafana-db-secret
ingress:
enabled: true
ingressClassName: traefik
hosts:
- grafana.lab.local
adminPassword: "funk-grafana"
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
memory: 1Gi
persistence:
enabled: true
storageClassName: nfs
size: 2Gi
prometheus:
ingress:
enabled: true
ingressClassName: traefik
hosts:
- prometheus.lab.local
paths:
- /
pathType: Prefix
prometheusSpec:
retention: 15d
retentionSize: "8GB"
resources:
requests:
cpu: 200m
memory: 512Mi
limits:
memory: 1Gi
storageSpec:
volumeClaimTemplate:
spec:
storageClassName: nfs
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 20Gi
# Scrape des nœuds hors cluster (storage-01, gpu-01)
additionalScrapeConfigs:
- job_name: storage-01
static_configs:
- targets: ['192.168.10.1:9100']
labels:
instance: storage-01
role: gateway
- job_name: gpu-01-node
static_configs:
- targets: ['192.168.10.20:9100']
labels:
instance: gpu-01
role: gpu
- job_name: llama-server-gpu
static_configs:
- targets: ['192.168.10.20:1234']
labels:
instance: gpu-01
model: qwen3-8b
type: gpu
# --- Sondes réseau actives (blackbox_exporter) ---
# Le relabeling envoie la cible réelle en ?target=… et fait pointer le
# scrape vers le service blackbox. Cf. admin/infra/reseau.md.
- job_name: blackbox-icmp
metrics_path: /probe
params:
module: [icmp]
static_configs:
- targets:
- 192.168.10.1 # storage-01 — passerelle / NAT / DNS
- 192.168.10.11 # compute-01 (control-plane)
- 192.168.10.12 # compute-02
- 192.168.10.13 # compute-03
- 192.168.10.20 # gpu-01
labels:
scope: lan
- targets:
- 1.1.1.1 # Cloudflare — joignabilité internet
- 9.9.9.9 # Quad9 — joignabilité internet
labels:
scope: internet
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: blackbox-exporter.monitoring.svc.cluster.local:9115
- job_name: blackbox-http
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets:
- http://grafana.lab.local
- http://prometheus.lab.local
- http://alertmanager.lab.local
- http://argocd.lab.local
- http://openwebui.lab.local
- http://n8n.lab.local
- http://ghostfolio.lab.local
- http://searxng.lab.local
- http://stt.lab.local
labels:
scope: ingress
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: blackbox-exporter.monitoring.svc.cluster.local:9115
# DNS : module choisi par cible (label module → __param_module), serveur
# interrogé = dnsmasq (192.168.10.1:53). dns_lab teste le wildcard
# *.lab.local, dns_external teste le forwarding vers l'upstream.
- job_name: blackbox-dns
metrics_path: /probe
static_configs:
- targets: ['192.168.10.1:53']
labels:
module: dns_lab
instance: 'dnsmasq:grafana.lab.local'
- targets: ['192.168.10.1:53']
labels:
module: dns_external
instance: 'dnsmasq:one.one.one.one'
relabel_configs:
- source_labels: [module]
target_label: __param_module
- source_labels: [__address__]
target_label: __param_target
- target_label: __address__
replacement: blackbox-exporter.monitoring.svc.cluster.local:9115
alertmanager:
ingress:
enabled: true
ingressClassName: traefik
hosts:
- alertmanager.lab.local
paths:
- /
pathType: Prefix
alertmanagerSpec:
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
memory: 128Mi
config:
global:
resolve_timeout: 5m
route:
group_by: ['alertname', 'instance']
group_wait: 30s
group_interval: 5m
repeat_interval: 4h
receiver: hermes-monitor
routes:
# Watchdog (heartbeat interne kube-prometheus-stack) — silencé
- matchers:
- alertname = "Watchdog"
receiver: "null"
repeat_interval: 24h
receivers:
- name: "null"
- name: hermes-monitor
webhook_configs:
- url: 'http://192.168.10.1:9093/webhook'
send_resolved: true
- url: 'http://n8n.lab.local/webhook/alerts'
send_resolved: true
prometheusOperator:
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
memory: 256Mi
kube-state-metrics:
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
memory: 128Mi
nodeExporter:
resources:
requests:
cpu: 50m
memory: 32Mi
limits:
memory: 64Mi
prometheus-node-exporter:
extraArgs:
- --collector.rapl
# Désactiver etcd/scheduler monitoring (Talos — non accessible)
kubeEtcd:
enabled: false
kubeScheduler:
enabled: false
kubeControllerManager:
enabled: false
kubeProxy:
enabled: false