monitoring: Wetter-Tagesberichte in Grafana auffindbar machen

- weather-report-history.json (ha-weather-report-history): Finder-Tabelle,
  eine Zeile pro Tag (Datum, Kurzbewertung, T min/max/Mittel, Regen, UV, Boee)
  mit Drilldown-Data-Link aufs Tagesbericht-Dashboard
- weather-day-report.json: Zeitzone Europe/Berlin, Info-Panel zur Tagesauswahl,
  Nav-Dropdown zu den Wetter-Dashboards
- monitoring/README: Abschnitt Wetter-Tagesberichte (finden, Datum waehlen,
  Quelle InfluxDB-SQL statt Markdown-Index, Deploy, Explore-Test)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-20 09:27:26 +02:00
parent dee9b102bd
commit 536a6fd0cd
3 changed files with 121 additions and 3 deletions
+50
View File
@@ -74,6 +74,56 @@ INFLUXDB_BIND_IP=192.168.178.58
- Uptime Kuma ist entfernt; `Homelab / Availability`, Blackbox Exporter und Prometheus-Alerts sind der Zielzustand fuer HTTP-Verfuegbarkeit.
- Dashboard-Zielbestand: `Homelab / Availability`, `Homelab / Containers + Logs`, `Homelab / Host Overview`, `Homelab / Family Status`, `Traefik Official Standalone Dashboard`.
## Wetter-Tagesberichte
Die Ecowitt-/HA-Wetterdaten (DB `homeassistant`, Datasource `ha-weather-influx`)
werden in drei Grafana-Dashboards sichtbar (Ordner `Homelab`, Tag `weather`):
- `Wetterarchiv KalliHome` (`ha-weather-archive`): Verlaeufe und Gauges ueber einen Zeitbereich.
- `Wetterbericht KalliHome` (`ha-weather-day-report`): ausfuehrlicher Tagesbericht (Markdown-Tabelle) fuer **einen** Tag.
- `Wetter-Tagesberichte KalliHome` (`ha-weather-report-history`): Index/Finder, **eine Zeile pro Tag** mit Kurzbewertung, T min/max/Mittel, Regen, UV und Boee.
### Alte Tagesberichte finden und ein Datum waehlen
1. Dashboard **`Wetter-Tagesberichte`** oeffnen (Standard: letzte 30 Tage, Europe/Berlin).
In der Tabelle **auf das Datum klicken** -> der ausfuehrliche Tagesbericht oeffnet
sich fuer genau diesen Tag. Weiter zurueck: Zeitbereich oben rechts vergroessern.
2. Alternativ im Dashboard **`Wetterbericht KalliHome`** direkt einen Tag waehlen:
Zeitbereich oben rechts -> *Absolute time range* -> z. B. From `2026-06-15 00:00:00`,
To `2026-06-16 00:00:00` -> **Apply**. Beide Dashboards haben Zeitzone
`Europe/Berlin`, die Eingaben gelten also in Berliner Lokalzeit; Standard ist
`gestern` (`now-1d/d` bis `now/d`).
Grafana hat **keine echte Datepicker-Variable**: eine Textbox-Variable kann den
Zeitbereich nicht setzen, und ein `report_date`-Ansatz braeuchte zeitzonen-genaues
Tages-Bounding in InfluxDB-3-SQL. Deshalb ist der **Timepicker bei Dashboard-Zeitzone
`Europe/Berlin`** der exakte Weg fuer einen vollstaendigen Lokaltag, und die
Index-Tabelle der bequeme Klick-Selektor fuer alte Tage. Die Tabellen-Buckets liegen
auf UTC-Mitternacht (~01:00/02:00 Berlin); der verlinkte Tagesbericht zeigt das
gewaehlte Fenster vollstaendig.
### Quelle: InfluxDB statt Markdown-Index
Die Dashboards rendern direkt per SQL aus InfluxDB 3 Core - gleiche Quelle wie der
Markdown-Generator `services/posture-check/weather-day-report.py`. Damit ist jeder
zurueckliegende Tag reproduzierbar, solange die Rohdaten vorgehalten werden; ein
separater Markdown-Index ist bewusst nicht noetig. Die erzeugten Tagesberichte als
Datei (E-Mail/Offline-Archiv) liegen weiterhin unter
`/mnt/user/services/posture-check/daily-reports/homelab-day-YYYY-MM-DD.md`.
### Deploy und Test
Dashboards werden aus `monitoring/grafana/dashboards/` provisioniert (Verzeichnis-
Mount, Reload alle 5 Minuten, Ordner `Homelab`). Nach Push nach Gitea deployt Komodo
den `monitoring`-Stack; Grafana laedt die JSON-Dateien automatisch nach. Kein
Bootstrap-Importer noetig (der gilt nur fuer grafana.com-Dashboard-ID 17346).
SQL der Index-Tabelle vor dem Verlassen einmal pruefen: Grafana -> *Explore* ->
Datasource `ha-weather-influx` -> die `rawSql` aus `weather-report-history.json`
einfuegen und einen Zeitbereich (z. B. letzte 7 Tage) waehlen. Erwartet: eine Zeile
pro Tag mit gefuellten Spalten. Falls `extract(epoch FROM ...)` auf dem InfluxDB-3-
Build nicht unterstuetzt wird, stattdessen `to_unixtime(...)` verwenden.
## Alerting
Prometheus wertet `monitoring/prometheus/alerts.yml` aus und sendet an `monitoring-alertmanager`.