--- title: Monitoring description: Alloy → Prometheus/Loki published: true date: 2026-08-13T18:04:42.896Z tags: editor: markdown dateCreated: 2026-08-13T18:04:42.895Z --- **Status**: ✅ live · **Stand**: 2026-08-02 **Remote Storage**: `10.0.0.3:9090` (Prometheus), `10.0.0.3:3100` (Loki) — **privates Netz**, nicht die öffentliche IP ## Überblick Alloy (Grafana Agent) sammelt Metriken & Logs vom K3S-Cluster und schickt sie per Remote-Write zu Prometheus/Loki auf CFGMON (Grafana: `selendis.axion1337.de`). Der Monitoring-Stack auf CFGMON selbst liegt im Repo [`threadnet-operating`](https://git.lab/axion1337.chat/threadnet-operating) unter `monitoring/` — dort leben auch Alertmanager, die Alarmregeln und die CVE-Pipeline. ## Komponenten | Komponente | Ort | Rolle | |-----------|-----|-------| | **Alloy** | Cluster | Metrics & Logs Collector, Remote-Write | | **kube-state-metrics** | Cluster | Kubernetes Object Status | | **node-exporter (systemd)** | Host `10.0.0.2` | Host-Metriken — **kein DaemonSet**, siehe unten | | **Prometheus** | CFGMON | Metrics Ingestion + Alarmauswertung | | **Loki** | CFGMON | Logs Ingestion | | **Alertmanager + matrix-alerts** | CFGMON | Alarmzustellung nach Matrix | > ⚠️ **Der node-exporter als DaemonSet wurde am 2026-08-01 entfernt** (gitops#45, > Commit `93ee6a3`). Er lief mit `hostNetwork` und kollidierte auf Port 9100 mit dem > etablierten **systemd-Dienst** `prometheus-node-exporter` — Ergebnis war ein > CrashLoopBackOff mit über 4.800 Neustarts, der monatelang unbemerkt blieb. > Host-Metriken kommen unverändert vom systemd-Exporter, den CFGMON direkt über > `10.0.0.2:9100` scrapt. Frühere Fassungen dieser Seite führten den DaemonSet als > Komponente — das ist überholt. ## Dateien (in `apps/monitoring/`) - `namespace.yaml` - `helm-repos.yaml` (prometheus-community, grafana) - `kube-state-metrics.yaml` - `alloy-config.yaml` (River config: Scrape-Targets + Remote-Write) - `alloy.yaml` (HelmRelease) ## Scrape Targets Alloy scrapt: - **Flux Controllers** (flux-system ns, Port 8080) - **kube-state-metrics** (monitoring:8080) - **Synapse** (`matrix.axion1337.chat:9001`) — ⚠️ **Port 9001, nicht 9000**: der falsche Port lief 98 Tage ins Leere und fiel erst mit dem Alerting auf (Fix `b73d887`) Host-Metriken laufen **nicht** über Alloy, sondern werden von CFGMON direkt geholt (`10.0.0.2:9100`, Job `k3s_host_node`). Alles Weitere per Remote-Write nach `10.0.0.3:9090` bzw. `:3100`. ## Alerting (seit 2026-08-01, gitops#32) Alertmanager auf CFGMON wertet die Regeln aus `monitoring/prometheus/alerts.yml` aus und stellt über einen kleinen Webhook-Empfänger (`matrix-alerts.py`) in Matrix zu: | Raum | Zweck | Bot | |---|---|---| | `!qavWkXbhLPfGvqtifj` | Betriebsalarme (TargetDown, OOM, Disk, Restarts) | `@alerts` | | `!YRJvcEbVXtRlUIkNld` | Security: CVE-Meldungen, Upstream-Releases | derselbe Bot | Ein Alarm = **eine** Nachricht; bei `resolved` wird dieselbe Nachricht per `m.replace` durchgestrichen und mit ✅ markiert, statt eine zweite zu senden. Routing über das Label `room` in der Alarmregel. ## CVE-Pipeline (gitops#47/#51) Auf CFGMON läuft ein 24-Stunden-Scanloop mit **Trivy** über die deployten Images (`monitoring/cve/images.txt`), ein Exporter stellt die Funde als Metriken bereit (`trivy_vuln_info{cve,severity,target,host,fixed_version}`, `trivy_vuln_first_seen_timestamp`). Die Alarme sind bewusst **pro Ziel aggregiert** (`count by (target, target_type, host)`), nicht pro CVE — die erste Fassung erzeugte 126 Einzelnachrichten und musste stummgeschaltet werden (ADR-0003). Details stehen im Grafana-Dashboard, die Matrix-Nachricht verlinkt nur dorthin. ## Troubleshooting ```bash # Alloy-Logs im Cluster kubectl logs -n monitoring -l app.kubernetes.io/name=alloy # Remote-Write angekommen? curl 'http://10.0.0.3:9090/api/v1/query?query=up' # Loki-Test curl -s 'http://10.0.0.3:3100/loki/api/v1/query_range?query=%7B%7D' | jq . # Auf CFGMON: Alarme und Silences docker compose exec alertmanager amtool alert --alertmanager.url=http://localhost:9093 docker compose exec alertmanager amtool silence --alertmanager.url=http://localhost:9093 ``` --- **Verwandt**: [Host-Wartungsbenachrichtigungen](/betrieb/host-maintenance-notifications) · Backlog und Betriebsentscheidungen im [management-Repo](https://git.lab/axion1337.chat/management)