Grafana: Warnung: Tageszeitbeschränkungen

Erstellt am 16. Nov. 2016  ·  83Kommentare  ·  Quelle: grafana/grafana

Tageszeitbeschränkungen.

Sehen Sie sich zwei Möglichkeiten an, wie dies implementiert werden könnte.

1) Als Alarmbedingung
2) Als Filter für Benachrichtigungen

arealerting typfeature-request

Hilfreichster Kommentar

Als Workaround verwenden Sie prometheus als Backend:

  • Fügen Sie Ihrer Metrik die folgende Abfrage hinzu: hour() , die die Stunde des Tages (0-23) zurückgibt. Sie können es im Diagramm ausblenden.
  • Fügen Sie Ihrer Benachrichtigung eine zusätzliche AND -Bedingung hinzu, damit sie nur alarmiert, wenn die hour() -Abfrage innerhalb des gewünschten Bereichs liegt (zB: Bürozeiten).

Das gleiche kann mit day_of_week() gemacht werden.

Alle 83 Kommentare

Hat jemand einen Workaround für dieses Szenario gefunden? Ich bin schockiert, dass nur 4 Personen dieses Ticket positiv bewertet haben, da die gesamte Benachrichtigungsfunktion für mich im Wesentlichen nutzlos ist, es sei denn, meine Systeme sind rund um die Uhr verfügbar. Ich habe das Gefühl, dass mir eine andere Funktion oder Technik fehlt, die alle anderen anwenden, um dieses Problem zu umgehen ...

So wie es jetzt aussieht, muss ich entweder alle Warnmeldungen deaktivieren oder einfach die Tatsache akzeptieren, dass ich eine Reihe falscher Benachrichtigungen erhalte, wenn meine Prozesse EOD herunterfahren.

Ich versuche nicht wirklich kritisch zu klingen, bin nur verwirrt, wie alle anderen mit diesen Warnungen umgehen. Ich liebe Grafana seit Jahren und verfolge die Benachrichtigungsfunktion seit ihrer Einführung in v4. Aber es ist jedes Mal ein bisschen ein Kopfzerbrechen, wenn es ein Warnupdate gibt und diese Einschränkung nicht behoben wird.

@bblazei du hast recht! Es ist eine erstaunliche Funktion, die priorisiert werden muss und die sicherlich hilfreich sein wird!
@torkelo weißt du wann diese Funktion geplant ist?

Nein, Eta im Moment nicht, da es nicht auf unserer Roadmap für die nächsten beiden Releases (4.3 und 4.4) steht.

Hmm das ist schade. Wie würden Sie die Verwendung des Alerting-Frameworks auf Systemen empfehlen, die nicht rund um die Uhr verfügbar sind?

Das würden wir uns sehr wünschen, da wir je nach Tageszeit unterschiedliche Alarmstufen haben müssen

Auch darauf warten wir (nicht so) geduldig. Wir verwenden derzeit in regelmäßigen Abständen Curl-to-Slack-Diagramme.

@torkelo torkelo. Es ist schon eine Weile her, dass ich kein Update dazu sehe. Wir prüfen auch, ob wir die Grafana-Benachrichtigungen für eine bestimmte Zeit deaktivieren können. ist das möglich?

Hat jemand ein Update für diese Funktion?

Ich kann Warnungen auf der Seite Warnungsliste manuell anhalten, aber (zum Beispiel) während unseres täglichen DB-Server-Backups um 2:30a erhalten wir eine Warnung zu "Netzwerk-E/A-Wartezeiten werden ausgeführt". Es wäre sicherlich schön, Warnungen zu erstellen, die in bestimmten Zeiträumen nicht benachrichtigt werden.

Unterstützt grafana eine Modulo-Operation? Dann sollten Sie die Identitätsfunktion verwenden können, um die Unix-Zeit als zusätzliche Metrik in Ihrem Panel zu erhalten. Mit der Modulo-Funktion könnten Sie den Rest der Division der Unix-Zeit durch 86400 (die Anzahl der Sekunden eines Tages) erhalten. Anschließend können Sie Ihrer Benachrichtigung eine Bereichsbedingung für die Zeitmetrik hinzufügen. Richtig?

Wäre es schwierig, die Modulo-Operation für diesen Zweck hinzuzufügen?

Brauche diese Funktion wirklich!

Irgendwelche Updates dazu? Ist es ein WIP oder etwas, das gerade noch "in Betracht gezogen" wird?

Wir möchten wirklich unterschiedliche Zeitrahmen für bestimmte Warnungen verwenden, wie z. B. die Nutzung, von der wir erwarten, dass sie tagsüber über einem bestimmten Schwellenwert liegt, aber nicht nachts.

+1

+1

+1

Warum stimmen die Leute ( @bascarsija & @maizy) die Anfragen der Leute dafür ab?

Leute stimmen diese "+1"-Nachrichten ab, die dazu führen, dass E-Mail-Benachrichtigungen an alle gesendet werden, die diesen Thread abonniert haben. Der kumulative Effekt, dass viele Leute diese "+1"-Nachrichten zu den Threads hinzufügen, verringert den Wert der Thread-Abonnementfunktion erheblich, indem sie das Signal-Rausch-Verhältnis drastisch reduziert.

Sie können Ihr Interesse an oder Ihre Zustimmung zu bestimmten Vorschlägen oder Kommentaren anderer zeigen, ohne eine solche E-Mail-Benachrichtigung auszulösen, indem Sie einfach über die Reaktionen "Up-Voting" oder "Down-Voting" machen. Das auffälligste Zeichen von Solidarität/Gesamtinteresse an einem Thema ist in der Regel die Reaktion, die auf die anfängliche/primäre Beschreibung des Themas gezählt wird – bitte erwägen Sie, Ihre Reaktionen dort hinzuzufügen.

ehrlich gesagt ist dies ein systemisches Problem bei Github -- es gilt gleichermaßen für alle Issue-Threads in allen Projekten. Sie werden in den verschiedenen Threads viele Bitten finden, die eine solche Verwendung verlangen, da die Github-Benutzeroberfläche Benutzer nicht über diese Konsequenz informiert oder sie in offensichtlicher Weise davon abhält, und Benutzer, die sich des Problems bewusst sind (und/oder davon negativ betroffen sind) wahrscheinlich zögern, ein solches Feedback durch Hinzufügen einer weiteren Nachricht zum Thread bereitzustellen (wodurch das Signal-Rausch-Verhältnis weiter verringert wird).

Danke für die Erklärung. Ich vermute, die Leute, die diese +1 s posten, hätten es nicht getan, wenn sie gewusst hätten, dass es nur ein Ärgernis war. Das Posten einer kurzen Erklärung dazu hätte einige davon möglicherweise gestoppt ... sowie meine Frage. Daumen runter kann eine Reihe von Dingen bedeuten.

Irgendwelche Aktualisierungen zu Zeitplanwarnungen zu bestimmten Tages-, Wochen-, Monats- und Jahreszeiten?

Als Workaround verwenden Sie prometheus als Backend:

  • Fügen Sie Ihrer Metrik die folgende Abfrage hinzu: hour() , die die Stunde des Tages (0-23) zurückgibt. Sie können es im Diagramm ausblenden.
  • Fügen Sie Ihrer Benachrichtigung eine zusätzliche AND -Bedingung hinzu, damit sie nur alarmiert, wenn die hour() -Abfrage innerhalb des gewünschten Bereichs liegt (zB: Bürozeiten).

Das gleiche kann mit day_of_week() gemacht werden.

Wir brauchen diese Funktion auch, wenn wir einen 24H-Service basierend auf verschiedenen Teams in der Welt anbieten wollen... gibt es dafür Pläne?

In der Zwischenzeit wird diese Funktion fertig, ich versuche, einen Workaround zu verwenden.

Beispiel:

```
Metrik A: production.application_a.actual_metric = 123 (Dies ist meine tatsächliche Metrik)
Metrik B : helper.time_helper.hour = 1 bis 24 (Gefälschte Zeitmetriken, die jede Minute zu einer Stunde des Tages an Graphit gesendet werden)

   alert requirement :

(Metrik A liegt unter 100 UND Stunde liegt im Bereich von 10 und 20)
ODER
(Metrik A liegt unter 50 UND Stunde liegt außerhalb des Bereichs 10 und 20)
```

mit anderen Worten:

metric A threshold is 100 between 10AM to 8PM and it is 50 for rest of the time

Meine Frage :

Kann ich für das obige Szenario mit einem einzigen Grafikpanel erreichen oder muss ich wirklich zwei verschiedene Grafikpanels, jeweils eines für den Innenbereich und den Außenbereich, erreichen? Oder gibt es in grafana eine andere Möglichkeit, dies zu erreichen? (Hinweis: Ich verwende Graphit 0.9.)

image

Warten Sie auch auf diese Funktion, ein interessanter Ansatz, um einige falsche Metriken an Grafana zu senden ... Sie fragen sich nur, was eine schöne, einfache Möglichkeit wäre, die Metriken zu generieren?

+1 können wir einfach eine beliebige Abfrage haben, mit der wir Ausdrücke verwenden können, um die Warnbedingung einzuschränken?

Stunde zwischen 1 und 2 UND

+1 wäre sehr dankbar!

Nur ein Kommentar zu einem groben Workaround
Ich benutze Collectd / Influxdb
Ich habe einen Cron-Prozess, der den Stundenwert in eine flache ext-Datei schreibt
Das Collect Table Plugin liest dies als Table_Value - Instanz "Stunde"
In jeder Warnung, bei der ich nur einen Bereich verwenden muss, füge ich die metrische Stunde (max.) als versteckte Metrik zum Dashboard hinzu und verwende dann in der Warnung einen UND-Bereichswert - nur auslösen, wenn die Stunde zwischen X und Y liegt
Das Gleiche funktioniert auch an Wochentagen

Grob aber effektiv

@torkelo irgendein Gast, wann dies implementiert werden könnte?

Nein, tut mir leid, es steht nicht auf der Roadmap des Kernteams

jede Problemumgehung, um zu verhindern, dass Warnungen gesendet werden, wenn eine Cloud-VM-Instanz geplant ist, weil sie ausgeschaltet werden soll. die meisten Systeme haben dies seit vielen Jahren.
Bitte fügen Sie dies hinzu ;) Einstellung für Alarmmüdigkeit.

Ich habe einen Cron-Prozess, der den Stundenwert in eine flache ext-Datei schreibt
In jeder Warnung, bei der ich nur einen Bereich verwenden muss, füge ich die metrische Stunde (max.) als versteckte Metrik zum Dashboard hinzu und verwende dann in der Warnung einen UND-Bereichswert - nur auslösen, wenn die Stunde zwischen X und Y liegt

Dies ist eine ziemlich effektive Problemumgehung mit einem subtilen, aber nützlichen Vorteil gegenüber dem bloßen Ignorieren von Warnungen zwischen X - Y: Wenn die Situation nicht vor Y behoben wird, erhalte ich meine erste Warnung bei Y. Wenn ich nur Warnungen zwischen X - Y ignoriere, kann ich würde auch nach Y nicht benachrichtigt werden (obwohl man die Funktion "Erinnerungen senden" verwenden könnte, denke ich).

Es stellte sich heraus, dass ein Cron-Job nicht erforderlich war, wenn Graphit als Datenquelle verwendet wurde:

Ich habe eine Metrik C von timeSlice(isNonNull(identity(1)), '02:30 -9h', '06:00 -9h') und die Warnungsbedingung AND max() OF query(C, 1m, now) HAS NO VALUE hinzugefügt, um Warnungen zwischen 2:30 und 6:00 auszuschließen. (Das -9h liegt daran, dass mein Zeitzonen-Offset +9:00 ist und timeSlice() in UTC zu sein scheint.)

BEARBEITEN: Nachdem ich das ein paar Tage ausprobiert habe, scheint dieser timeSlice() -Trick nicht zu funktionieren ... Es scheint an der Zeit zu hängen, in der ich das Dashboard gespeichert habe, und wechselt nicht zu jedem Tag.

Dies ist eine große fehlende Funktion. Warum steht das nicht auf der Roadmap? Scheint trivial zu implementieren

Vielen Dank an @albertvaka für seinen Workaround mit der hour()-Funktion von Prometheus.

Leider scheint es keine Möglichkeit zu geben, die Zeitzone automatisch zu berücksichtigen, wenn die Funktion hour() verwendet wird (und es ist ein Problem, wenn DST vorhanden ist). Wir konnten die Zeitzone nur manuell anhand von Monat und Tag berechnen, aber das ist keine gute Lösung.

Mehr Infos zu prometheus/prometheus#4160

Es wäre schön, wenn Sie verschiedene Schwellenwerte für verschiedene Datumszeiträume festlegen könnten
zB ist es in Ordnung, wenn es nachts fast keine Benutzeraktivitäten gibt, aber nicht in Ordnung während des Tages

Gibt es Fortschritte bei dieser Anfrage?

Ich bin mir nicht sicher, aber ich konnte in Grafana 6.1.3 nichts Neues dazu finden

Würde gerne diese Funktion implementiert sehen. Wir verwenden Grafana für geschäftskritische Warnungen. Es wäre großartig, die Mitarbeiter im Unternehmen nicht zu benachrichtigen, wenn dies beispielsweise in ihrer Freizeit nicht erforderlich ist.

+1, würde mich über eine Umsetzung freuen.

+1 Gott bewahre, ich vergesse, die Überwachung zu pausieren, bevor ich für das Wochenende nach Hause gehe. Ich komme am Montag zu Tausenden von E-Mails für erwartetes Verhalten zurück

+1 bitte implementieren Sie dies so schnell wie möglich - ich muss alles auf Thingsboard portieren, wenn dies nicht bald implementiert wird https://thingsboard.io/

@torkelo könnten Sie uns ein paar Informationen zu diesem Problem geben? Gibt es irgendeinen Fortschritt?

Hallo, hat jemand genug Kenntnisse, um es umzusetzen und einen Pull-Request zu machen?

Ich kann Ihnen sagen, was ich getan habe, um diese Funktion zu "erhalten". Ich kann den Code nicht teilen, da er proprietär ist, aber ich kann eine Idee teilen, die keinem proprietären Bullen * * unterliegt.

Ich habe einige cron-geplante [SomeCloudProviderOfYourChoice]Lambda-Funktionen implementiert, die die Grafana-REST-API verwendet haben, um ganze Dashboards aus exportierten JSON-Nutzlasten mit ihren Warnungen und Schwellenwerten zu aktualisieren, die von den Aktiv- / Leerlaufzeiten des Systems abhängig sind (unser System ist täglich 8-10 Stunden aktiv). außerhalb der Wochenenden). Es funktioniert ganz gut.

Aber.

Wenn Sie mit Dashboards in der Grafana Web-GUI arbeiten, müssen Sie bedenken, dass das Ausgeben von JSON-Dashboards und deren Übergabe an das Repository " Grafana Scheduler" obligatorisch ist, wenn Sie Änderungen an etwas vornehmen. Wenn Sie vergessen, Ihre Nutzlast (South Park S11E09) zu löschen, gehen Ihre Änderungen verloren, wenn der Scheduler einsetzt (wiederherstellbar, aber schmerzhaft). Und Sie müssen Ihre Änderung auf beide aktive/untätige JSON-Dumps übertragen, was im Grunde den doppelten Aufwand bedeutet (plus noch mehr, wenn Unterschiede nicht entsprechend dokumentiert sind). Effektiv bedeutet diese "Lösung", dass Sie einen gut dokumentierten, gepflegten, sichtbaren und strikt befolgten _Prozess_ benötigen, um damit fertig zu werden, was auf lange Sicht sogar noch schlimmer sein kann, als diese Funktion überhaupt nicht zu haben. Wir ändern unsere Alarmschwellen so selten, dass es für uns kein Problem zu sein scheint, mit dem _Prozess_-Overhead umzugehen.

Wie auch immer...

Ich arbeite gerade mit Aiven Grafana, das auf SQLite läuft (vom Anbieter erzwungen). Teilaktualisierungen über die Grafana-Web-GUI, um den gesamten Prozess reibungsloser zu gestalten.

Bleiben Sie dran, viel Glück!

Bitte fügen Sie dies hinzu, um dies zu erledigen, dies wird definitiv für Migrationen von anderen Plattformen benötigt.

Der einfache Weg mit T-SQL-Abfragen besteht darin, GRAFANA zu betrügen (Workaround):

SELECT timestamp AS time,
        CASE 
            WHEN DATEPART(HOUR, SYSDATETIME()) NOT IN (0,1,2,3,4,5,6) 
            THEN COUNT(document_number)
            ELSE 0 
        END AS Receipts
FROM GRAFANA.dbo.ReceiptsErrorsHistory
WHERE timestamp >= DATEADD(DAY, -7, GETDATE())
AND document_type = 'receipt'
GROUP BY timestamp

Wie ist der Stand dieser Implementierung? Wir verwenden derzeit seyren und cabot für Benachrichtigungen und möchten zu Grafana-Benachrichtigungen migrieren. Ohne die zeitliche Beschränkung kommen wir nicht weiter.

Im Fall von Elastic Search habe ich einen einfachen Weg gefunden, dieses Problem zu lösen.
Datumsmathematik verwenden: https://www.elastic.co/guide/en/elasticsearch/client/net-api/7.x/date-math-expressions.htm.

Wenn Sie beispielsweise Daten mit einem Bereich (AM 00:00 ~ PM:12:00) wünschen, dann kann @timestamp :[now/d TO now/d+12h] das gewünschte Ergebnis zurückgeben

@sukjoonhong Ich kann es nicht zum Laufen bringen. Hast du bitte einen Screenshot?

Ich habe eine Problemumgehung dafür, die Cron verwendet, um Warnungen ein- und auszuschalten. Dies würde nur funktionieren, wenn Sie ALLE Warnungen über Nacht ausschalten möchten (oder wenn Sie sich die Mühe machen, einzelne Warnungen zu skripten).

In crontab auf der Grafana-Box habe ich Folgendes hinzugefügt:

1 * * * * root /root/do-alert-thing.sh

Und in /root/do-alert-thing.sh:

#!/bin/bash

#Enable at 6am local
TZ='Somewhere/Sometime' date +%H | grep '06' && (
  curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":false}' -u [email protected]:letmein -H 'Content-Type: application/json'
)

#Disable at 9pm local
TZ='Somewhere/Sometime' date +%H | grep '21' && (
  curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":true}' -u [email protected]:letmein -H 'Content-Type: application/json'
)

Ersetzen Sie einfach Somewhere/Sometime durch Ihre Zeitzone (Tipp: Führen Sie timedatectl list-timezones für eine Liste aus) und fügen Sie Ihre Anmeldeinformationen anstelle von [email protected] hinzu. Dieser Admin-Endpunkt funktioniert gemäß der Dokumentation nur im Basic-Authentifizierungsmodus.

Hoffe das hilft jemandem da draußen.

@Atem18
2019-10-14-094215_3840x1080_scrot

In meinem Fall hat diese Abfrage funktioniert.

@sukjoonhong Danke, ich werde es versuchen!

Ich habe eine Problemumgehung dafür, die Cron verwendet, um Warnungen ein- und auszuschalten. Dies würde nur funktionieren, wenn Sie ALLE Warnungen über Nacht ausschalten möchten (oder wenn Sie sich die Mühe machen, einzelne Warnungen zu skripten).

In crontab auf der Grafana-Box habe ich Folgendes hinzugefügt:

1 * * * * root /root/do-alert-thing.sh

Und in /root/do-alert-thing.sh:

#!/bin/bash

#Enable at 6am local
TZ='Somewhere/Sometime' date +%H | grep '06' && (
  curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":false}' -u [email protected]:letmein -H 'Content-Type: application/json'
)

#Disable at 9pm local
TZ='Somewhere/Sometime' date +%H | grep '21' && (
  curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":true}' -u [email protected]:letmein -H 'Content-Type: application/json'
)

Ersetzen Sie einfach Somewhere/Sometime durch Ihre Zeitzone (Tipp: Führen Sie timedatectl list-timezones für eine Liste aus) und fügen Sie Ihre Anmeldeinformationen anstelle von [email protected] hinzu. Dieser Admin-Endpunkt funktioniert gemäß der Dokumentation nur im Basic-Authentifizierungsmodus.

Hoffe das hilft jemandem da draußen.

Ich habe dies versucht und funktioniert, aber in grafana ui heißt es, dass es nur eine Stunde lang pausiert. Also müsste ich eine crontab machen die sich stündlich wiederholt bis ....?

Ich habe dies aus einem anderen Blickwinkel angegangen, bei dem Sie eine Prometheus-On/Off-Metrik basierend auf der Ausgabe eines Skripts generieren, zum Beispiel ein ps-Befehl, der überprüft, ob das Backup-Skript ausgeführt wird. Dann habe ich in meinem Dashboard ein "Backup aktiv", um den Backup-Status anzuzeigen, und in meinem primären Panel mit allen meinen Abfragen und Warnungen füge ich die Bedingungsprüfung hinzu, die nicht alarmiert, wenn die Backup-Metrik = 1 ist. Dieser Ansatz würde Sie können auch eine separate Warnung hinzufügen, die ausgelöst wird, wenn die Sicherung länger dauert, als es sollte, wenn Sie die historischen Metrikdaten berücksichtigen.

Ich habe eine Problemumgehung dafür, die Cron verwendet, um Warnungen ein- und auszuschalten. Dies würde nur funktionieren, wenn Sie ALLE Warnungen über Nacht ausschalten möchten (oder wenn Sie sich die Mühe machen, einzelne Warnungen zu skripten).
In crontab auf der Grafana-Box habe ich Folgendes hinzugefügt:
1 * * * * root /root/do-alert-thing.sh
Und in /root/do-alert-thing.sh:

#!/bin/bash

#Enable at 6am local
TZ='Somewhere/Sometime' date +%H | grep '06' && (
  curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":false}' -u [email protected]:letmein -H 'Content-Type: application/json'
)

#Disable at 9pm local
TZ='Somewhere/Sometime' date +%H | grep '21' && (
  curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":true}' -u [email protected]:letmein -H 'Content-Type: application/json'
)

Ersetzen Sie einfach Somewhere/Sometime durch Ihre Zeitzone (Tipp: Führen Sie timedatectl list-timezones für eine Liste aus) und fügen Sie Ihre Anmeldeinformationen anstelle von [email protected] hinzu. Dieser Admin-Endpunkt funktioniert gemäß der Dokumentation nur im Basic-Authentifizierungsmodus.
Hoffe das hilft jemandem da draußen.

Ich habe dies versucht und funktioniert, aber in grafana ui heißt es, dass es nur eine Stunde lang pausiert. Also müsste ich eine crontab machen die sich stündlich wiederholt bis ....?

Nicht sicher, warum Sie dieses Verhalten sehen; für mich pausiert es und bleibt für 9 Stunden pausiert, bis ich es mit der morgendlichen Cron-Zeile wieder aufhebe.

Ich habe eine Problemumgehung dafür, die Cron verwendet, um Warnungen ein- und auszuschalten. Dies würde nur funktionieren, wenn Sie ALLE Warnungen über Nacht ausschalten möchten (oder wenn Sie sich die Mühe machen, einzelne Warnungen zu skripten).
In crontab auf der Grafana-Box habe ich Folgendes hinzugefügt:
1 * * * * root /root/do-alert-thing.sh
Und in /root/do-alert-thing.sh:

#!/bin/bash

#Enable at 6am local
TZ='Somewhere/Sometime' date +%H | grep '06' && (
  curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":false}' -u [email protected]:letmein -H 'Content-Type: application/json'
)

#Disable at 9pm local
TZ='Somewhere/Sometime' date +%H | grep '21' && (
  curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":true}' -u [email protected]:letmein -H 'Content-Type: application/json'
)

Ersetzen Sie einfach Somewhere/Sometime durch Ihre Zeitzone (Tipp: Führen Sie timedatectl list-timezones für eine Liste aus) und fügen Sie Ihre Anmeldeinformationen anstelle von [email protected] hinzu. Dieser Admin-Endpunkt funktioniert gemäß der Dokumentation nur im Basic-Authentifizierungsmodus.
Hoffe das hilft jemandem da draußen.

Ich habe dies versucht und funktioniert, aber in grafana ui heißt es, dass es nur eine Stunde lang pausiert. Also müsste ich eine crontab machen die sich stündlich wiederholt bis ....?

Nicht sicher, warum Sie dieses Verhalten sehen; für mich pausiert es und bleibt für 9 Stunden pausiert, bis ich es mit der morgendlichen Cron-Zeile wieder aufhebe.

Ich sage nicht, dass ich dieses Verhalten sehe, aber es sagt es buchstäblich in der Grafana-Benutzeroberfläche. 1 Stunde pausiert. Also ging ich davon aus, dass der Pausen-Trick nur 1 Stunde lang funktioniert.

Aber wenn dies falsch ist, werde ich korrigiert.

Ich sage nicht, dass ich dieses Verhalten sehe, aber es sagt es buchstäblich in der Grafana-Benutzeroberfläche. 1 Stunde pausiert. Also ging ich davon aus, dass der Pausen-Trick nur 1 Stunde lang funktioniert.

Aber wenn dies falsch ist, werde ich korrigiert.

Dies kann nur der Alarmstatus sein; Wenn die Warnung beispielsweise in Ordnung war, würde sie Folgendes anzeigen:

image

Ich vermute, wenn es für eine Stunde pausiert wurde, würde es "1 Stunde PAUSED" sagen?

Blöd mich, ich glaube ich habe mich wohl falsch interpretiert

Danke für die Klarstellung!

Gibt es einen Plan, dieses Feature in 6.6.x > Versionen nach vier Jahren zu implementieren?

Wir freuen uns immer noch , dass dies auch umgesetzt wird. Dies ist ein sehr ineffektives Warnsystem, wenn Benutzer, die frei sind, im Urlaub sind oder anderweitig nicht verfügbar sind, mit Warnungen zugespammt werden, wenn sie nicht darauf reagieren müssen.

Wir würden sehr gerne die Option hinzufügen, verschiedene Stunden (für unseren Fall Geschäftszeiten) für die Benachrichtigung festzulegen.

Das gleiche hier, wäre sehr schön, dies zu haben.

Es gibt Problemumgehungen für einige Backends (ich verwende eine für MySQL, bei der Ereignisse außerhalb bestimmter Zeitbereiche über die Abfrage gefiltert werden), aber dies als "richtige Funktion" wäre definitiv ein Pluspunkt.

Wir würden uns auch freuen, diese Funktion in einer zukünftigen Version zu sehen. Es wäre hilfreich, Warnungen während unserer Zeitfenster außerhalb der Geschäftszeiten herausfiltern/unterdrücken zu können. Zum Beispiel, wenn wir Warnungen herausfiltern lassen könnten, die nach 20:00 Uhr und vor 8:00 Uhr am nächsten Tag auftreten.

Es wäre toll, diese Funktion zu bekommen, bitte. So wie es jetzt aussieht, ist es wie der Wolf, der nachts schreit. Ich habe gerade mein Handy in die Schublade gelegt. Die Warnung ist nutzlos. Danke schön.

Wir benötigen dringend die Bestätigungsfunktion von Grafana. Ohne die Funktion „Warnmeldung bestätigen“ kann die Grafana -Warnungsfunktion nicht in einer kritischen Produktionsdienstumgebung verwendet werden.

Es wäre toll, diese Funktion in Grafana zu sehen. Für uns sind nur Alerts zu bestimmten Zeiten relevant, Arbeitszeit +-2h, nachts kommt es zu einem (geplanten) Anstieg der überwachten Werte, was aktuell zu Alerts führt :-(

+1 auf Funktionsanfrage

Dies ist eine großartige Funktion, wenn wir Alarme für bestimmte Zeitregionen hinzufügen können. Alarmregeln sollten nur für eine bestimmte Zeitregion funktionieren.

Es könnte großartig sein, eine Möglichkeit zu haben, verschiedene Benachrichtigungskanäle bezüglich Zeiträumen zu konfigurieren, wie zum Beispiel:

  • ein normaler Montag -> über Slack benachrichtigen
  • 1. Januar Montag -> per SMS benachrichtigen

Zeiträume können benutzerdefiniert und mit einem Benachrichtigungskanal verknüpft werden.

Ich habe die meisten Kommentare überflogen, also entschuldige mich, wenn jemand den folgenden Anwendungsfall formuliert hat, aber ich habe es nicht bemerkt.

Ein Grund für die Unterstützung von Tageszeitbeschränkungen für Warnungen sind Datenreihen mit geringer Dichte. Stellen Sie sich ein Setup vor, bei dem ein Batch-Job einmal täglich zwischen Mitternacht und 2 Uhr morgens ausgeführt wird, um Daten für ein tägliches Briefing um 8 Uhr vorzubereiten. Der einzelne Datenpunkt "Job abgeschlossen" wird nach Abschluss ausgegeben.

Es gibt keine gute Möglichkeit, dies ohne zeitliche Begrenzung zu alarmieren.

"Alert if no data point within the last X hours" funktioniert nicht für X Stunden. Wenn ich zum Beispiel bei "Kein Datenpunkt innerhalb der letzten 24 Stunden" warne, funktioniert das, solange alle Jobs jeden Tag korrekt ausgeführt werden. Wenn ich jedoch einen Fehler erhalte, und den Job um 11 Uhr erneut ausführen, um aufzuholen. Dann ist mein Alarm für den nächsten Tag unterbrochen (da er erst nach 11 Uhr ausgelöst wird). Dies ist mein primärer Anwendungsfall für die Zeitbeschränkung. Die einzig praktikable Warnung besteht darin, die Warnungsauswertungslogik von 2:00 bis 8:00 Uhr eingeschaltet zu haben und zu alarmieren, wenn "kein Datenpunkt innerhalb der letzten 8 Stunden" vorliegt.

In diesem Anwendungsfall geht es nicht darum, Warnungen während der Arbeitszeit zu unterdrücken oder Geräusche zu einer bestimmten Tageszeit zu reduzieren. Selbst bei einer Rufbereitschaft rund um die Uhr kann die obige Warnung ohne Tageszeitbeschränkungen nicht genau ausgedrückt werden.

+1 für diese Funktion.
In unserem Fall ist es notwendig, einmal pro Tag/Stunde/Woche eine Warnung mit Informationen für die letzten N Tage zu senden. Kompliziert wird das Ganze dadurch, dass der Newsletter zu einem streng festgelegten Zeitpunkt (8:00, 13:00 usw.) erfolgen muss.

Als Workaround planen wir, Warnungen über HTTP-Api zu verwalten, würden diese Funktionalität jedoch gerne im Client-Teil der Grafana sehen.

Brauchen Sie diese Funktion. Beispiel: PROD-Netzwerk mit Wartungsstunden - Sie möchten nun einige Benachrichtigungen während dieses Wartungsfensters stoppen. zB jeden Sonntagabend zwischen einem bestimmten Zeitrahmen. Im Moment nicht möglich.

Ich werde diese Funktion wirklich mögen, wenn sie verfügbar ist. Ich möchte die Benachrichtigung für einen bestimmten Zeitraum im 24-Stunden-Bereich beenden.

+100.000

+1
Ich denke, es ist eine wesentliche Funktion, Grafana als echte Alarmierungs-Engine zu verwenden.

Obwohl der tatsächliche Dienst einen fehlerfreien Zustand beibehält, kann sich die Metrik gemäß dem angegebenen Zeitplan ändern.
Wir brauchen eine allgemeine Möglichkeit, unsere Warnungen während dieses Zeitplans zu steuern.

+1

Dies wäre eine nette Funktion auf der Clientseite. Im Moment müssen wir Felder wie hourOfDay, dayOfWeek in Logstash ableiten, damit sie in ES vorhanden sind, um eine zusätzliche Metrik zum Metriksatz hinzuzufügen und sie in die Benachrichtigungsregeln aufzunehmen.

Benachrichtigen Sie mich, wenn der durchschnittliche Messwert A, der die CPU-Auslastung darstellt, für 1 m . über 90 % liegt
UND
wenn Metrik B, die max hourOfDay derselben Dokumente ist, zwischen RANGE liegt.

Es funktioniert, aber es fühlt sich unangenehm an, so zu arbeiten, als Problemumgehung.
Vor allem, da sich Grafana seit 2016 in anderen Bereichen enorm weiterentwickelt hat, aber das ist seit 2016 irgendwie in Vergessenheit geraten.

Ich habe eine Problemumgehung dafür, die Cron verwendet, um Warnungen ein- und auszuschalten. Dies würde nur funktionieren, wenn Sie ALLE Warnungen über Nacht ausschalten möchten (oder wenn Sie sich die Mühe machen, einzelne Warnungen zu skripten).

In crontab auf der Grafana-Box habe ich Folgendes hinzugefügt:

1 * * * * root /root/do-alert-thing.sh

Und in /root/do-alert-thing.sh:

#!/bin/bash

#Enable at 6am local
TZ='Somewhere/Sometime' date +%H | grep '06' && (
  curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":false}' -u [email protected]:letmein -H 'Content-Type: application/json'
)

#Disable at 9pm local
TZ='Somewhere/Sometime' date +%H | grep '21' && (
  curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":true}' -u [email protected]:letmein -H 'Content-Type: application/json'
)

Ersetzen Sie einfach Somewhere/Sometime durch Ihre Zeitzone (Tipp: Führen Sie timedatectl list-timezones für eine Liste aus) und fügen Sie Ihre Anmeldeinformationen anstelle von [email protected] hinzu. Dieser Admin-Endpunkt funktioniert gemäß der Dokumentation nur im Basic-Authentifizierungsmodus.

Hoffe das hilft jemandem da draußen.

Hallo
Können Sie mir sagen, wie ich einzelne Benachrichtigungs-URLs erhalte?

Hallo
Können Sie mir sagen, wie ich einzelne Benachrichtigungs-URLs erhalte?

Schade, dass dieses offensichtlich geforderte Feature nach 4 Jahren nicht umgesetzt wurde. Mein Anwendungsfall ist eine einfache Heimautomatisierung, bei der der Router von Zeit zu Zeit neu gestartet werden muss (es ist der des ISPs und kann nicht länger als eine Woche Betriebszeit überleben). Ich habe einen einfachen Steckdosenadapter mit einer Wählscheibe, die den Router jede Nacht zurücksetzt. Also bekomme ich jede Nacht viele Warnungen darüber, dass meine Sensoren in Telegram ausgefallen sind. Eine einfache Funktion zum Deaktivieren der Benachrichtigung während eines bestimmten Zeitintervalls wäre praktisch.

Es muss nicht sofort eine super ausgeklügelte Planung sein. In der ersten Version dieser Funktion könnte es nur die Tageszeit sein. Mit komplexeren Zeitplänen, die in späteren Phasen hinzugefügt werden

Haben wir eine Möglichkeit, Benachrichtigungen zu einem bestimmten Zeitpunkt zu planen?

+1 für diese Funktion.

Unterstützt grafana eine Modulo-Operation? Dann sollten Sie die Identitätsfunktion verwenden können, um die Unix-Zeit als zusätzliche Metrik in Ihrem Panel zu erhalten. Mit der Modulo-Funktion könnten Sie den Rest der Division der Unix-Zeit durch 86400 (die Anzahl der Sekunden eines Tages) erhalten. Anschließend können Sie Ihrer Benachrichtigung eine Bereichsbedingung für die Zeitmetrik hinzufügen. Richtig?

Wäre es schwierig, die Modulo-Operation für diesen Zweck hinzuzufügen?

Es klingt verrückt, aber es funktioniert und für meinen Anwendungsfall war es ausreichend. 😅.

time() % 86400

Trotzdem ist es schade, dass es keine bequemere Lösung gibt, die kein offensichtlicher Hack ist. 🤦.

Es klingt verrückt, aber es funktioniert und für meinen Anwendungsfall war es ausreichend. 😅.

time() % 86400

Trotzdem ist es schade, dass es keine bequemere Lösung gibt, die kein offensichtlicher Hack ist. 🤦.

@ochrstn Welche Version von Grafana haben Sie, als ich dies auf v6.6.1 ausprobiert habe und die Modulo-Operation in der Abfrage im Wesentlichen ignoriert wurde?

Es klingt verrückt, aber es funktioniert und für meinen Anwendungsfall war es ausreichend. 😅.

time() % 86400

Trotzdem ist es schade, dass es keine bequemere Lösung gibt, die kein offensichtlicher Hack ist. 🤦.

@ochrstn Welche Version von Grafana haben Sie, als ich dies auf v6.6.1 ausprobiert habe und die Modulo-Operation in der Abfrage im Wesentlichen ignoriert wurde?

v6.6.2

Unterstützt grafana eine Modulo-Operation? Dann sollten Sie die Identitätsfunktion verwenden können, um die Unix-Zeit als zusätzliche Metrik in Ihrem Panel zu erhalten. Mit der Modulo-Funktion könnten Sie den Rest der Division der Unix-Zeit durch 86400 (die Anzahl der Sekunden eines Tages) erhalten. Anschließend können Sie Ihrer Benachrichtigung eine Bereichsbedingung für die Zeitmetrik hinzufügen. Richtig?
Wäre es schwierig, die Modulo-Operation für diesen Zweck hinzuzufügen?

Es klingt verrückt, aber es funktioniert und für meinen Anwendungsfall war es ausreichend.

time() % 86400

Trotzdem ist es schade, dass es keine bequemere Lösung gibt, die kein offensichtlicher Hack ist.

Hey @ochrstn :)

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

SATHVIKRAJU picture SATHVIKRAJU  ·  3Kommentare

jackmeagher picture jackmeagher  ·  3Kommentare

Minims picture Minims  ·  3Kommentare

ericuldall picture ericuldall  ·  3Kommentare

deepujain picture deepujain  ·  3Kommentare