Alarme per E-Mail und Webhook senden
E-Mail- und Webhook-Kanäle zu einem Projekt hinzufügen, E-Mail-Adressen bestätigen, Webhook-Signaturen prüfen und Kanäle testen oder ihr Geheimnis erneuern.
Ein Benachrichtigungskanal ist eine E-Mail-Adresse oder eine Webhook-URL, an die Alarmregeln ihre Benachrichtigungen senden. Kanäle gehören zu einem Projekt, und jede Regel des Projekts kann sie verwenden.
Voraussetzungen
- Um Kanäle hinzuzufügen, zu testen, ihr Geheimnis zu erneuern oder sie zu löschen, benötigen Sie im Projekt oder in dessen Abonnement die Rolle Besitzer oder Mitwirkender oder eine benutzerdefinierte Rolle mit der Zugriffsebene Verwalten für Observability. Mit der Zugriffsebene Lesen, wie bei der Rolle Leser, können Sie die Kanäle anzeigen, und Webhook-URLs werden auf Schema und Host gekürzt.
- Wählen Sie in der Konsole das Projekt aus, dessen Alarme Sie senden möchten. Die Kanalseite zeigt die Kanäle dieses Projekts.
Kanalseite öffnen
Wechseln Sie in der Konsole zu EinstellungenBenachrichtigungen.
Wählen Sie Zustellkanäle aus.
Die Seite Benachrichtigungskanäle listet jeden Kanal mit seinem Ziel und seinem Status auf.
E-Mail-Kanal hinzufügen
Wählen Sie auf der Kanalseite Kanal hinzufügen aus.
Wählen Sie E-Mail aus.
Füllen Sie die Felder Name und E-Mail-Adresse aus.
Wählen Sie Kanal hinzufügen aus.
E-Mail-Adresse bestätigen
Eine Adresse, die einem aktiven Benutzer Ihrer Organisation gehört, gilt beim Hinzufügen als bestätigt. Jede andere Adresse erhält eine Bestätigungs-E-Mail, und der Kanal erhält keine Alarme, bis der Empfänger die Adresse bestätigt.
Der Empfänger öffnet den Link in der Bestätigungs-E-Mail. Eine Anmeldung ist nicht erforderlich.
Auf der Seite Warnungsbenachrichtigungen bestätigen wählt der Empfänger Adresse bestätigen aus.
Der Status des Kanals zeigt den aktuellen Stand:
| Status | Bedeutung |
|---|---|
| Bestätigt | Der Kanal erhält Benachrichtigungen. |
| Bestätigung ausstehend | Der Bestätigungslink wurde gesendet und noch nicht verwendet. Der Link ist 7 Tage gültig und kann nur einmal verwendet werden. |
| Link abgelaufen | Der Link wurde nicht innerhalb von 7 Tagen verwendet. |
Um einen neuen Link zu senden, öffnen Sie das Menü Zeilenaktionen (⋯) des Kanals, und wählen Sie Bestätigung erneut senden aus. Ein neuer Link ersetzt den vorherigen.
Benachrichtigungen für eine unbestätigte Adresse werden übersprungen, nicht zurückgehalten: Die Adresse erhält sie auch nach der Bestätigung nicht.
Webhook-Kanal hinzufügen
Wählen Sie auf der Kanalseite Kanal hinzufügen aus.
Wählen Sie Webhook aus.
Füllen Sie die Felder Name und Webhook-URL aus.
Wählen Sie Kanal hinzufügen aus.
Kopieren Sie das Signaturgeheimnis mit Kopieren, und hinterlegen Sie es bei Ihrem Empfänger.
Das Geheimnis wird nur einmal angezeigt
Die Konsole zeigt das Signaturgeheimnis eines Webhooks nur nach dem Hinzufügen des Kanals oder nach dem Erneuern seines Geheimnisses an. Wenn Sie es verlieren, erneuern Sie das Geheimnis. Siehe Signaturgeheimnis erneuern.
Ein Webhook-Kanal gilt beim Hinzufügen als bestätigt. Seine URL muss diese Regeln erfüllen:
- Sie verwendet
https://und hat höchstens 2.048 Zeichen. - Sie enthält keinen Benutzernamen und kein Passwort.
- Ihr Host wird nur in öffentliche IP-Adressen aufgelöst. Private, Loopback-, Link-Local- und andere nicht öffentliche Adressbereiche werden abgelehnt. Die Plattform prüft den Host bei jedem Senden und lehnt beim Hinzufügen des Kanals eine nicht öffentliche IP-Adresse ab, die in der URL steht.
Die Plattform folgt keinen Weiterleitungen.
Webhook-Anfragen prüfen
Die Plattform sendet jede Benachrichtigung als HTTPS-Anfrage mit der Methode POST, einem JSON-Body und diesen Headern:
| Header | Wert |
|---|---|
Content-Type | application/json |
User-Agent | publiccloud-alerting/1 |
X-Publiccloud-Event | alerting.state_changed oder bei einem Test alerting.test |
X-Publiccloud-Delivery | Die eventId der Benachrichtigung. Ein Test hat diesen Header nicht. |
X-Publiccloud-Signature | t=<timestamp>,v1=<signature> |
Im Signatur-Header ist <timestamp> die Sendezeit in Unix-Sekunden, und <signature> ist der hexadezimal codierte HMAC-SHA256 von <timestamp>.<body>, berechnet mit dem Signaturgeheimnis des Kanals als Schlüssel. Um eine Anfrage zu prüfen, berechnen Sie denselben HMAC über den unveränderten Anfrage-Body, so wie er empfangen wurde, und vergleichen Sie ihn mit v1. Um wiederholt eingespielte Anfragen abzuwehren, lehnen Sie außerdem Anfragen ab, deren Zeitstempel älter als eine von Ihnen gewählte Toleranz ist.
import hashlib
import hmac
import time
def verify(secret: str, header: str, body: bytes, tolerance: int = 300) -> bool:
fields = dict(item.split("=", 1) for item in header.split(","))
timestamp = int(fields["t"])
expected = hmac.new(
secret.encode(), f"{timestamp}.".encode() + body, hashlib.sha256
).hexdigest()
fresh = abs(time.time() - timestamp) <= tolerance
return fresh and hmac.compare_digest(expected, fields["v1"])secret ist das vollständige Signaturgeheimnis einschließlich seines Präfixes whsec_. header ist der Wert von X-Publiccloud-Signature, und body ist der unveränderte Anfrage-Body.
Der Body hat diese Felder:
| Feld | Bedeutung |
|---|---|
type | alerting.state_changed oder bei einem Test alerting.test. |
eventId | Die ID der Statusänderung. Eine Wiederholung trägt dieselbe ID, verwenden Sie sie also, um Duplikate zu verwerfen. |
projectId | Das Projekt der Regel. |
subscriptionId | Wird anstelle von projectId für die Alarme eines Budgets für ein ganzes Abonnement gesetzt. |
ruleId, ruleName | Die Regel, deren Status sich geändert hat. |
instanceId, instanceName | Die Instanz, um die es in der Benachrichtigung geht. null bei einem Budget-Alarm. |
fromState | Der Status vor der Änderung: OK, FIRING oder INSUFFICIENT_DATA. |
toState | FIRING, wenn ein Alarm ausgelöst wird, und OK für jede Benachrichtigung, die einen Alarm behebt. |
ruleState | Der Status, in den die Instanz gewechselt ist. Er unterscheidet sich von toState nur, wenn ein Alarm ohne Messwert geschlossen wird, z. B. INSUFFICIENT_DATA, nachdem die Überwachung ausgeschaltet wurde. |
resolved | true, wenn die Benachrichtigung einen Alarm behebt. |
value | Der gemessene Wert in der Einheit der Metrik. Bei einer Regel für den Status ERROR 1 im Status ERROR und sonst 0. null ohne Messwert. |
occurredAt | Der Zeitpunkt der Änderung in UTC im Format ISO 8601. |
reason | Warum ein Alarm anders als durch einen Messwert geschlossen wurde: rule_disabled, rule_deleted, target_deleted, monitoring_disabled oder period_reset, wenn der neue Zeitraum eines Budgets beginnt. Sonst null. |
Zustellung von Benachrichtigungen
Antworten Sie innerhalb von 10 Sekunden mit einem Statuscode 2xx. Die Plattform gibt eine Anfrage nach insgesamt 15 Sekunden auf.
| Ergebnis | Was passiert |
|---|---|
Antwort 2xx | Zugestellt. |
Antwort 5xx, 408 oder 429, eine Zeitüberschreitung, ein Verbindungsfehler oder ein Host, der nicht aufgelöst wird | Erneuter Versuch nach 1 Minute, 5 Minuten, 15 Minuten und 1 Stunde. Nach dem fünften fehlgeschlagenen Versuch wird die Benachrichtigung verworfen. |
Jede andere Antwort, z. B. eine Weiterleitung oder ein Status 4xx, oder eine URL, die die obigen Regeln ablehnen | Kein erneuter Versuch. |
Während eine Benachrichtigung auf einen erneuten Versuch wartet, warten spätere Benachrichtigungen derselben Regel an denselben Kanal dahinter, sodass sie in der richtigen Reihenfolge ankommen. E-Mails folgen denselben Wiederholungen, wenn das Mail-Relay fehlschlägt.
E-Mail-Benachrichtigungen. Standardmäßig besteht der Betreff aus dem neuen Status in eckigen Klammern, [FIRING] oder [RESOLVED], gefolgt vom Regelnamen und der Instanz. Ein Test hat [TEST]. Diese Kennzeichnungen werden nicht übersetzt, sodass Sie Ihren Posteingang danach filtern können. Der Text nennt die Änderung, den Wert, die Instanz, das Projekt und die Uhrzeit. Die Sprache der E-Mail wird beim Hinzufügen des Kanals festgelegt, und zwar anhand der Spracheinstellung des Browsers, mit dem er hinzugefügt wurde, ersatzweise auf Englisch.
Testbenachrichtigung senden
Öffnen Sie auf der Kanalseite das Menü Zeilenaktionen (⋯) des Kanals.
Wählen Sie Test senden aus.
Die Plattform sendet den Test sofort, ohne Wiederholungen:
- Testbenachrichtigung zugestellt. Das Ziel hat sie angenommen.
- Nicht gesendet: Die Adresse ist noch nicht bestätigt. Bestätigen Sie zuerst die Adresse.
- Bei einem Fehler nennt die Meldung den Grund. Siehe Problembehandlung.
Sie können pro Kanal alle 60 Sekunden einen Test senden.
Signaturgeheimnis erneuern
Öffnen Sie auf der Kanalseite das Menü Zeilenaktionen (⋯) des Webhook-Kanals, und wählen Sie Signaturgeheimnis erneuern aus.
Wählen Sie in der Bestätigung Signaturgeheimnis erneuern aus.
Kopieren Sie das neue Geheimnis, und aktualisieren Sie Ihren Empfänger.
Das alte Geheimnis signiert sofort nicht mehr, sodass Anfragen die Prüfung Ihres Empfängers nicht bestehen, bis er das neue Geheimnis hat. Um den Signaturschlüssel eines Webhook-Kanals zu erhalten, den ein Budget erstellt hat, erneuern Sie ihn im Dialog Bearbeiten des Budgets. Siehe Budget bearbeiten oder löschen.
Kanal löschen
Öffnen Sie auf der Kanalseite das Menü Zeilenaktionen (⋯) des Kanals, und wählen Sie Löschen aus.
Bestätigen Sie mit Löschen.
Jede Regel, die den Kanal aufgeführt hat, benachrichtigt ihn nicht mehr, und die Adresse oder URL des Kanals wird gelöscht. Einen gelöschten Kanal können Sie nicht wiederherstellen.
Ein Kanal mit der Kennzeichnung Von einem Budget verwaltet folgt dem Alarmempfänger eines Budgets, und Sie können ihn hier nicht löschen. Ändern Sie stattdessen das Budget. Siehe Budgets und Schwellenwertalarme erstellen.
Ergebnis
Der Kanal erscheint in der Liste. Sobald sein Status Bestätigt ist, erhält er die Benachrichtigungen jeder Regel, die ihn aufführt. Wie Sie einer Regel einen Kanal hinzufügen, erfahren Sie unter Alarmregeln erstellen.
Limits
| Ressource | Limit | Anpassbar? | Hinweise |
|---|---|---|---|
| Kanäle pro Projekt | Vom Plattformbetreiber festgelegt | Ja, durch den Betreiber | Kanäle, die von Budgets verwaltet werden, zählen nicht. |
| Webhook-Kanäle pro Projekt | Vom Plattformbetreiber festgelegt | Ja, durch den Betreiber | Werden innerhalb der Kanäle pro Projekt gezählt. |
| Kanalname | 1–255 Zeichen | Nein | Im Projekt eindeutig. |
| E-Mail-Adresse | Bis zu 254 Zeichen | Nein | |
| Webhook-URL | Bis zu 2.048 Zeichen | Nein | Nur HTTPS. |
| Kanäle pro Regel | 10 | Nein | |
| Testbenachrichtigungen | 1 pro Kanal alle 60 Sekunden | Nein | |
| Bestätigungs-E-Mails | 1 pro Kanal alle 60 Sekunden | Nein | |
| Bestätigungslink | 7 Tage gültig, einmal verwendbar | Nein |
Problembehandlung
| Meldung | Ursache | Lösung |
|---|---|---|
| Der Kanal wurde hinzugefügt, aber die Bestätigungs-E-Mail konnte nicht gesendet werden. Später erneut senden. | Die Bestätigungs-E-Mail konnte nicht gesendet werden. | Wählen Sie später Bestätigung erneut senden aus. |
| Dieser Link ist ungültig, bereits verwendet oder abgelaufen. Bitten Sie den Projektinhaber, ihn erneut zu senden. | Der Link ist falsch, wurde bereits verwendet oder ist älter als 7 Tage. | Bitten Sie einen Besitzer oder Mitwirkenden des Projekts, die Bestätigung erneut zu senden. |
| Der Kanal konnte nicht hinzugefügt werden. oder eine Meldung der Plattform | Der Name wird im Projekt bereits verwendet, die Adresse oder URL wird abgelehnt, oder das Projekt hat sein Kanallimit erreicht. | Verwenden Sie einen anderen Namen oder ein anderes Ziel, löschen Sie einen Kanal, oder bitten Sie den Plattformbetreiber, das Limit zu erhöhen. |
Wenn ein Test fehlschlägt, nennt die Meldung einen dieser Gründe:
| Grund | Ursache |
|---|---|
webhook_http_<status> | Der Empfänger hat mit diesem HTTP-Statuscode geantwortet. |
webhook_timeout | Der Empfänger hat nicht rechtzeitig geantwortet. |
webhook_connection_error | Die Verbindung oder der TLS-Handshake ist fehlgeschlagen. |
webhook_host_unresolvable | Der Host der URL wird nicht aufgelöst. |
webhook_target_blocked | Der Host wird in eine nicht öffentliche IP-Adresse aufgelöst. |
webhook_scheme_not_allowed | Die URL ist keine gültige HTTPS-URL. |
smtp_not_configured | Die Plattform hat kein Mail-Relay. Wenden Sie sich an den Plattformbetreiber. |
smtp_delivery_error | Das Mail-Relay hat die Nachricht abgelehnt oder konnte sie nicht zustellen. |
Zugehöriger Inhalt
- Alarmregeln erstellen
- Was ist Monitoring & Alerts?
- Budgets und Schwellenwertalarme erstellen
- Informationen zum Verwalten von Kanälen über die REST-API finden Sie unter POST
/scopes/{scopeId}/observability/notification-channels.