SQL-Alarm-Webhook-Payload

Wenn ein Databricks-SQL-Alarm den Zustand ändert, erhält ein Webhook-Benachrichtigungsziel eine JSON-Nutzlast, die den Alarm und seine Auswertung beschreibt. Dieses Payload-Format gilt für die neueste Version der Databricks SQL-Alerts. Legacy-Warnungen verwenden eine andere Payload.

Important

Alarmkonfigurationen bestimmen, welche zusätzlichen Felder die Payload enthält. Felder ohne Werte werden weggelassen. Konfigurieren Sie Ihren Webhook-Empfänger so, dass er unbekannte Felder ignoriert und mit fehlenden optionalen Feldern umgeht.

Payload-Beispiel

Das folgende Beispiel zeigt die Payload einer Warnung, die zum Zustand TRIGGERED geändert wurde. Identifikatoren, Namen und Zeitstempel sind fiktive Beispiele.

{
  "event": "alert_state_change",
  "url_base": "https://<workspace-url>/sql?o=1234567890123456",
  "alert": {
    "title": "Alert \"Daily revenue\" changed status to TRIGGERED",
    "description": "Daily revenue exceeded the configured threshold.",
    "alert": {
      "id": "9876543210987654",
      "name": "Daily revenue",
      "owner": {
        "id": 2468013579246801,
        "name": "Alex Smith",
        "email": "alex.smith@example.com"
      },
      "created_at": 1767225600000,
      "parent": "folders/1357924680135792",
      "query_text": "SELECT SUM(revenue) AS total_revenue FROM main.sales.daily",
      "warehouse_id": "4b9b953939869799",
      "custom_summary": "Alert \"{{ALERT_NAME}}\" changed status to {{ALERT_STATUS}}",
      "custom_description": "Daily revenue exceeded the configured threshold.",
      "evaluations": [
        {
          "id": "9a1f0fc0-7d18-4f42-8ec0-9c1f8e72d3a4",
          "source": {
            "name": "total_revenue",
            "display": "total_revenue",
            "aggregation": "AGGREGATION_UNSPECIFIED"
          },
          "comparison_operator": "GREATER_THAN",
          "threshold": {
            "value": {
              "double_value": 100000.0
            }
          },
          "empty_result_state": "OK",
          "notification": {
            "seconds_to_retrigger": 3600,
            "notify_on_ok": true,
            "subscriptions": [
              {
                "destination_id": "6d1f7e62-a9d4-4b32-b79d-2b1f9f5a6c80"
              }
            ]
          },
          "state": "TRIGGERED",
          "last_evaluated_at": 1767229200000,
          "last_triggered_at": 1767229200000
        }
      ],
      "schedule": {
        "quartz_cron_schedule": "0 0 * * * ?",
        "timezone_id": "UTC",
        "paused": false
      },
      "custom_template_format": "HTML"
    }
  }
}

Nutzlastfelder

Die Nutzlast enthält folgende Envelope-Felder:

Feld Typ Description
event String Der Ereignistyp. Für Änderungen des Warnzustands ist der Wert alert_state_change.
url_base String Die Basis-URL für Databricks SQL im Arbeitsbereich.
alert Object Die Benachrichtigungs- und Warnungsdetails.
alert.title String Der gerenderte benutzerdefinierte Benachrichtigungsbetreff. Dieses Feld wird weggelassen, wenn der Alarm keinen benutzerdefinierten Betreff definiert.
alert.description String Der gerenderte benutzerdefinierte Benachrichtigungsinhalt. Dieses Feld wird weggelassen, wenn die Warnung keinen benutzerdefinierten Text definiert.
alert.alert Object Ein Schnappschuss der Warnung, als die Benachrichtigung gesendet wurde.

Das verschachtelte alert.alert Objekt kann folgende Felder enthalten:

Feld Typ Description
id String Die Alarm-Ressourcen-ID.
name String Der Name der Warnung.
owner Object Die ID, der Name und die E-Mail-Adresse des Benachrichtigungsbesitzers. Dieses Feld wird weggelassen, wenn Angaben zum Besitzer nicht verfügbar sind.
created_at Integer Die Alarmerstellungszeit, in Millisekunden seit der Unix-Epoche.
parent String Der Ressourcenname des Ordners, der die Warnung enthält.
query_text String Die SQL-Abfrage, die der Alarm auswertet.
warehouse_id String Die ID des SQL-Warehouses, das die Abfrage ausführt.
custom_summary String Die Vorlage für den individuellen Benachrichtigungsbetreff. Dieses Feld wird weggelassen, wenn ein benutzerdefinierter Betreff nicht konfiguriert ist.
custom_description String Die benutzerdefinierte Vorlage für den Benachrichtigungstext. Dieses Feld wird weggelassen, wenn kein benutzerdefinierter Body konfiguriert ist.
custom_template_format String Das Format der benutzerdefinierten Vorlagen, wie HTML oder MARKDOWN.
evaluations Array Die konfigurierten Bewertungsbedingungen und deren Zustand. Der Wert state spiegelt die Zustandsänderung wider, die die Benachrichtigung verursacht hat.
schedule Object Der Quartz Cron Zeitplan, Zeitzone und pausierter Zustand. Dieses Feld wird weggelassen, wenn der Alarm keinen Zeitplan hat.

Je nach Alarmkonfiguration kann das verschachtelte Objekt auch genie_analysis_enabled, genie_analysis_custom_prompt, genie_analysis_references und parameters enthalten.

Jedes Objekt im Array evaluations kann folgende Felder enthalten:

Feld Typ Description
id String Die ID der Auswertungsbedingung.
source Object Die Spalte mit den Abfrageergebnissen und die Aggregation,die die Bedingung auswertet.
comparison_operator String Der Vergleichsoperator, wie GREATER_THAN, EQUAL, oder IS_NULL.
threshold Object Die Wert- oder Abfrageergebnisspalte, mit der die Quelle verglichen wird.
empty_result_state String Der Zustand, der verwendet werden soll, wenn die Abfrage keine Zeilen zurückgibt. Dieses Feld wird weggelassen, wenn der Alarm keinen leeren Ergebniszustand definiert.
notification Object Das Intervall für das erneute Auslösen, die Benachrichtigen-bei-OK-Einstellung und die Benachrichtigungsziel-IDs.
state String Der Auswertungsstatus, der die Benachrichtigung verursacht hat: TRIGGERED, OK oder ERROR.
last_evaluated_at Integer Die Auswertungszeit in Millisekunden seit der Unix-Epoche.
last_triggered_at Integer Der Zeitpunkt der letzten Auslösung, in Millisekunden seit der Unix-Epoche. Dieses Feld wird weggelassen, wenn die Warnung nicht ausgelöst wurde.

Sichere die Webhook-Nutzlast

Die Nutzlast kann sensible Metadaten aus dem Arbeitsbereich enthalten, darunter die SQL-Abfrage, die Identität des Benachrichtigungsbesitzers und benutzerdefinierte Benachrichtigungsinhalte. Schützen Sie den empfangenden Endpunkt und beschränken Sie den Zugriff auf gespeicherte Payloads. Informationen zu Netzwerkkonfigurationen für Webhooks und Authentifizierungsoptionen finden Sie unter Benachrichtigungsziele verwalten.