Monitoring¶
Diese Seite erklärt, was wir auf unseren Hosts messen, womit und warum die Ports der Exporter auf werner offen sein dürfen. Was Managed Services von außen überwachen und wer bei Störungen benachrichtigt wird, steht in Uptime-Monitoring und Cronjob-Monitoring.
Überblick¶
Wir überwachen auf drei Wegen; Uptime-Monitoring und Cronjob-Monitoring haben eigene Seiten:
| Womit | Was | Wo es läuft | Verwaltet über |
|---|---|---|---|
| Prometheus und Grafana | Messwerte von werner: Auslastung des Hosts, Container, Caddy, Datenbanken | containerhost | Repo (Container), externes Repo (Dashboards) |
| Uptime Kuma | ob unsere Dienste von außen erreichbar sind | server.camp, Managed Service | Web-Oberfläche |
| healthchecks.io | ob das nächtliche Backup gelaufen ist | healthchecks.io, Managed Service | Web-Oberfläche |
flowchart LR
subgraph werner ["werner"]
exp["Exporter<br>Host, Podman, Postgres"]
caddy["Caddy<br>Metriken"]
backup["system-backup"]
apps["Apps"]
end
subgraph ch ["containerhost"]
prom["Prometheus"]
grafana["Grafana"]
end
kuma["Uptime Kuma<br>(server.camp)"]
hc["healthchecks.io"]
mail(["E-Mail an<br>it-admin@garage-lab.de"])
prom -->|WireGuard-Tunnel| exp
prom -->|WireGuard-Tunnel| caddy
grafana --> prom
backup -->|meldet jeden Lauf| hc
kuma -->|prüft öffentliche Adressen| apps
kuma --> mail
hc --> mail
Prometheus und Grafana¶
Prometheus läuft auf containerhost und holt alle 30 Sekunden Messwerte von werner ab.
Welche Ziele es abfragt, steht in prometheus.yml in syslet/containerhost/stack-prom.cue.
Warum das Monitoring nicht auf werner selbst läuft, steht in containerhost.
Die Messwerte stellen auf werner Exporter bereit, jeder in einem eigenen Container:
- node-exporter für den Host selbst: Prozessor, Arbeitsspeicher, Platten, Netz (
syslet/werner/stack-nodeexporter.cue) - Podman-Exporter für die Container, in derselben Datei; er gibt die Container-Labels aus
#Labelsmit, sodass sich die Container nach App und Rolle gruppieren lassen (siehe syslet in diesem Repo) - postgres-exporter für jede Postgres-Datenbank, als eigener Container im Stack der App, zum Beispiel
hedgedoc-postgres-exporterinsyslet/werner/stack-hedgedoc.cue - Caddy liefert Messwerte je Hostname selbst; welcher Hostname zu welchem Container gehört, schreibt der node-exporter zusätzlich als eigene Messgröße aus den Ingress-Einträgen
Grafana läuft ebenfalls auf containerhost, unter grafana.garage-lab.net im Netz vor Ort, und zeigt die Messwerte aus Prometheus als Dashboards.
Der Container steht im Repo in derselben Datei; die Dashboards pflegen wir in einem eigenen Repo.
Für Prometheus und Grafana ist im Repo keine Alarmierung eingerichtet; sie dienen zum Nachsehen, etwa wenn eine App langsam ist oder der Speicher knapp wird.
Die offenen Ports der Exporter¶
Die Exporter und Caddy veröffentlichen ihre Ports auf werner auf allen Netzwerkschnittstellen (PublishPort in den Stack-Dateien, der node-exporter über Network: "host").
Prometheus erreicht sie über den WireGuard-Tunnel unter der Adresse, die werner im Tunnel hat.
Aus dem Internet sind sie nicht erreichbar, weil die Netcup-Firewall sie nicht durchlässt (siehe Firewalls bei werner).
Weiterlesen¶
- Uptime-Monitoring und Cronjob-Monitoring: Monitoring über Managed Services
- Netzwerk: Tunnel und Firewalls
- Prometheus-Doku, Grafana-Doku