Files
homelab/k8s/infra/monitoring/blackbox-exporter-values.yaml
T

80 lines
2.3 KiB
YAML

# k8s/monitoring/blackbox-exporter-values.yaml
# Active black-box HTTP probing of every ingress-exposed service — gives an
# uptime/availability signal independent of real traffic. Homelab services
# like Vault/MinIO/Longhorn UI get almost no organic requests, so ingress RED
# metrics alone can't tell "idle" from "down"; this closes that gap.
config:
modules:
http_2xx:
prober: http
timeout: 5s
http:
valid_http_versions: ["HTTP/1.1", "HTTP/2.0"]
valid_status_codes: [] # any 2xx
follow_redirects: true
preferred_ip_protocol: "ip4"
tls_config:
insecure_skip_verify: true # homelab-ca is a private CA; skip verify for simplicity
resources:
requests:
cpu: 20m
memory: 32Mi
limits:
cpu: 100m
memory: 64Mi
tolerations:
- key: node-role.kubernetes.io/control-plane
operator: Exists
effect: NoSchedule
serviceMonitor:
enabled: true
selfMonitor:
enabled: true
defaults:
interval: 30s
scrapeTimeout: 10s
module: http_2xx
targets:
- name: grafana
url: https://grafana.riotpiao.com/
- name: loki
url: https://loki.riotpiao.com/ready
- name: authentik
url: https://authentik.riotpiao.com/-/health/ready/
- name: vault
url: https://vault.riotpiao.com/v1/sys/health
- name: minio-console
url: https://minio.riotpiao.com/
- name: minio-api
url: https://minio-api.riotpiao.com/minio/health/live
- name: prometheus
url: https://prometheus.riotpiao.com/-/healthy
- name: portainer
url: https://portainer.riotpiao.com/
- name: forgejo
url: https://forgejo.riotpiao.com/api/healthz
- name: argocd
url: https://argocd.riotpiao.com/healthz
- name: longhorn
url: https://longhorn.riotpiao.com/
- name: api-gateway
url: https://api.riotpiao.com/healthz
- name: api-gateway-models
url: https://api.riotpiao.com/v1/models
prometheusRule:
enabled: true
rules:
- alert: ServiceProbeDown
expr: probe_success == 0
for: 5m
labels:
severity: critical
annotations:
summary: "Probe failing for {{ $labels.instance }}"
description: "Blackbox probe for {{ $labels.instance }} has failed for more than 5 minutes."