Alerting einrichten
Das Dashboard wird um zwei fachliche Regeln ergänzt: Eine meldet eine anhaltende Überschreitung der freigegebenen Meldehöhe, die andere einen zu alten Messwert.
Das bestätigte Pegel-Dashboard visualisiert Schwellen, enthält aber noch keinen nachgewiesenen produktiven Benachrichtigungsversand. Die folgenden Regeln sind eine konkrete Erweiterung. Aktivieren Sie sie erst, nachdem Meldehöhe, zulässige Datenlücke, Empfängerkreis und Reaktionsweg fachlich freigegeben wurden.
Voraussetzungen der beiden Regeln
Abfrage geprüft
dateobserved, waterlevel und die stabile Entity-ID stimmen mit Dashboard und gespeicherter Zeitreihe überein.
Fachwert freigegeben
Für Kuhpfadspiepen dokumentiert die Referenz 45 cm als Meldehöhe; vor dem Versand wird dieser Wert bestätigt.
Kontaktpunkt vorhanden
E-Mail oder ein zusätzlich angebundener Versandweg wurde administrativ eingerichtet und separat getestet.
Zuständigkeit geklärt
Die Empfänger wissen, wie sie Messwert, Datenaktualität und Lage im Dashboard prüfen sollen.
Die Abfragen verwenden beispielhaft die Messstelle pegel_Kuhpfadspiepen mit der im Referenzstand geführten Entity-ID urn:ngsi-ld:FloodMonitoring:1927402. Prüfen Sie diese ID zuerst gegen Daten prüfen; der Entitätstyp im Datenbestand ist unabhängig vom historischen ID-Präfix WaterObserved.
Regel auswählen
- Meldehöhe überschritten
- Messwerte zu alt
Ziel: Eine einzelne Messspitze löst noch keine Nachricht aus. Erst wenn der Pegel fünf Minuten lang über der freigegebenen Meldehöhe von 45 cm liegt, wechselt die Regel in den Alarmzustand.
Verwenden Sie in der PostgreSQL-Datenquelle eine Abfrage A im Format Time series mit einem festen relativen Zeitraum von 15 Minuten:
SELECT
w.dateobserved AS "time",
w.waterlevel::double precision AS value,
'pegel_Kuhpfadspiepen' AS station
FROM mtds_environment.etwaterobserved AS w
WHERE $__timeFilter(w.dateobserved)
AND w.entity_id = 'urn:ngsi-ld:FloodMonitoring:1927402'
AND w.waterlevel IS NOT NULL
ORDER BY w.dateobserved;
Bauen Sie darauf zwei Grafana-Ausdrücke auf:
B · Reduce: Last von A
C · Threshold: B ist größer als 45
Konfigurieren Sie die Auswertung zunächst so:
- Auswertungsintervall:
1m - Pending period:
5m - Keep firing for:
5m, um häufiges Wechseln an der Schwelle zu reduzieren - Regelbezeichnung:
Pegel Kuhpfadspiepen über Meldehöhe - Labels:
fachthema=pegelstaende,station=pegel_Kuhpfadspiepen,severity=warning
Als Summary-Annotation kann der reduzierte Wert aus Ausdruck B verwendet werden:
Pegelstand {{ $labels.station }} liegt mit {{ $values.B.Value }} cm
länger als fünf Minuten über der Meldehöhe von 45 cm.
Verknüpfen Sie außerdem das Pegel-Dashboard und das betroffene Panel. Dadurch führt die Nachricht direkt zur zeitlichen Entwicklung der Messstelle.
die Vorschau den bekannten Wert aus der Zeitreihe zeigt, eine kurze Überschreitung im Zustand Pending bleibt, eine anhaltende Überschreitung den freigegebenen Kontaktpunkt erreicht und die Rückkehr unter die Schwelle als aufgelöst erkannt wird.
Ziel: Eine fehlende Datenlieferung wird nicht als normaler Pegelstand behandelt. Die eigene Regel meldet, wenn der jüngste Messwert älter als 15 Minuten ist. Das entspricht dem Dreifachen des vorgesehenen Abrufintervalls von fünf Minuten und muss vor dem Einsatz bestätigt werden.
Verwenden Sie eine getrennte Abfrage A im Format Time series:
SELECT
NOW() AS "time",
EXTRACT(EPOCH FROM (NOW() - MAX(w.dateobserved))) / 60.0 AS value,
'pegel_Kuhpfadspiepen' AS station
FROM mtds_environment.etwaterobserved AS w
WHERE w.entity_id = 'urn:ngsi-ld:FloodMonitoring:1927402'
AND w.dateobserved >= NOW() - INTERVAL '24 hours';
Die numerische Ausgabe ist das Alter des jüngsten Messwerts in Minuten. Die Regel verwendet:
B · Reduce: Last von A
C · Threshold: B ist größer als 15
Konfigurieren Sie ein Auswertungsintervall von 1m. Eine zusätzliche Pending period ist für dieses Beispiel nicht nötig, weil die Toleranz bereits in den 15 Minuten steckt. Legen Sie den Zustand No Data bewusst fest: Liefert die Abfrage gar keinen numerischen Wert, ist das ebenfalls kein Normalzustand und muss als eigener Fehler der Datengrundlage erkennbar bleiben.
Eine passende Summary lautet:
Der jüngste Pegelwert für {{ $labels.station }} ist
{{ $values.B.Value }} Minuten alt. Erwartet sind höchstens 15 Minuten.
ein aktueller Messwert den Zustand Normal ergibt, ein kontrolliert veralteter Lieferstand nach 15 Minuten alarmiert und die nächste gültige Messung den Zustand wieder auflöst. Abfragefehler und vollständig fehlende Daten müssen von einer fachlichen Grenzwertüberschreitung unterscheidbar bleiben.
Benachrichtigung zustellen
Für die erste produktive Regel ist E-Mail der naheliegende Weg, sofern SMTP in der Grafana-Instanz eingerichtet wurde. Ein SMS-Versand ist nur möglich, wenn die Administration zuvor einen freigegebenen SMS- oder Incident-Dienst angebunden hat.
Messstelle, Wert, Schwelle, Messzeit und Dashboard-Link an eine vereinbarte Funktionsadresse senden.
SMS
Nur über einen administrativ angebundenen Dienst und für einen ausdrücklich freigegebenen Rufnummernkreis verwenden.
Testen Sie zuerst den Kontaktpunkt mit seiner Testfunktion. Führen Sie danach in einem angekündigten Testfenster die vollständige Regel aus und prüfen Sie Firing- sowie Resolved-Nachricht. API-Schlüssel, SMTP-Zugangsdaten oder Rufnummernlisten gehören nicht in die Regelbeschreibung.
Diese Regeln bewerten Pegelwerte und ihre Aktualität. Alarme zu Grafana, PostgreSQL, Pods, Backups oder anderen Plattformdiensten gehören in das technische Monitoring und die Betriebsdokumentation.