Benachrichtigungen für Budgets

Um Benachrichtigungen zu erhalten, wenn Ihre Credit-Nutzung voraussichtlich Ihr Ausgabenlimit überschreitet, müssen Sie das Budget so einrichten, dass Benachrichtigungen an das von Ihnen gewählte Ziel gesendet werden können. Sie können Benachrichtigungen wie folgt erhalten:

  • E-Mail

  • Meldungen, die an eine von einem Cloud-Dienst (Amazon SNS, Azure Event Grid oder Google Cloud PubSub) bereitgestellte Warteschlange gesendet werden.

  • Ruft einen Webhook für Slack, Microsoft Teams oder PagerDuty auf.

Bemerkung

E-Mail-Benachrichtigungen werden über die Amazon Web Services (AWS) von Snowflake verarbeitet, die AWS Simple Email Service (SES) verwenden. Der Inhalt einer mit AWS gesendeten E-Mail-Nachricht kann von Snowflake bis zu dreißig Tage lang aufbewahrt werden, um die Zustellung der Nachricht zu verwalten. Nach Ablauf dieser Frist wird der Inhalt der Nachricht gelöscht.

Festlegen, wann Benachrichtigungen gesendet werden

Benachrichtigungen beginnen standardmäßig, wenn die voraussichtlichen Ausgaben mehr als 10 % über dem Ausgabenlimit des Budgets liegen.

Sie können diesen Standardwert überschreiben, indem Sie einen Schwellenwert für die Benachrichtigung festlegen, der ein Prozentsatz des Ausgabenlimits des Budgets ist. Benachrichtigungen werden gesendet, wenn Snowflake prognostiziert, dass die Ausgaben den Schwellenwert überschreiten werden.

Angenommen, Sie möchten Benachrichtigungen erhalten, wenn die voraussichtlichen Ausgaben 50 % des Ausgabenlimits des Budgets überschreiten. Um diesen Benachrichtigungsschwellenwert für das Kontobudget festzulegen, führen Sie den folgenden Befehl aus:

CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!SET_NOTIFICATION_THRESHOLD(50);
Copy

Sie können auch einen Benachrichtigungsschwellenwert für kundenspezifische Budgets festlegen.

Wenn Sie den Benachrichtigungsschwellenwert auf den Standard zurücksetzen möchten, rufen Sie die Methode <budget_name>!SET_NOTIFICATION_THRESHOLD mit 110 als Argument auf.

E-Mail-Benachrichtigung einrichten

So richten Sie eine E-Mail-Benachrichtigung ein:

  1. (Optional) Wenn Sie Ihre eigene Benachrichtigungsintegration verwenden möchten, erstellen Sie eine Benachrichtigungsintegration oder wählen Sie eine vorhandene Benachrichtigungsintegration, die Sie verwenden möchten. Eine Benachrichtigungsintegration ermöglicht es Snowflake, Benachrichtigungen an ein Drittsystem zu senden.

    1. Erstellen Sie eine Benachrichtigungsintegration mit TYPE = EMAIL und ALLOWED_RECIPIENTS, die auf die Liste der verifizierten E-Mail-Adressen der Empfänger eingestellt ist. Informationen finden Sie unter Integration für E-Mail-Benachrichtigungen erstellen und Schränken Sie die Liste der E-Mail-Adressen ein, die Benachrichtigungen erhalten können.

      Bemerkung

      Jede für Budgetbenachrichtigungen hinzugefügte E-Mail-Adresse muss verifiziert sein. Das Einrichten der Benachrichtigungs-E-Mail schlägt fehl, wenn eine E-Mail-Adresse in der Liste nicht verifiziert ist.

      Beispiel:

      CREATE NOTIFICATION INTEGRATION budgets_notification_integration
        TYPE = EMAIL
        ENABLED = TRUE
        ALLOWED_RECIPIENTS = ('costadmin@example.com','budgetadmin@example.com');
      
      Copy
    2. Überprüfen Sie, ob die Benachrichtigungsintegration wie erwartet funktioniert, indem Sie die gespeicherte Prozedur SYSTEM$SEND_SNOWFLAKE_NOTIFICATION aufrufen, um eine Testnachricht zu senden.

      Sie können zum Beispiel eine Testnachricht im Format JSON senden:

      CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
        SNOWFLAKE.NOTIFICATION.APPLICATION_JSON('{"name": "value"}'),
        SNOWFLAKE.NOTIFICATION.INTEGRATION('budgets_notification_integration')
      );
      
      Copy
    3. SNOWFLAKE-Anwendung die USAGE-Berechtigung für die Benachrichtigungsintegration erteilen Die Berechtigung USAGE ermöglicht es dem Budget, die Benachrichtigungsintegration zu nutzen, um die Benachrichtigung zu versenden. Beispiel:

      GRANT USAGE ON INTEGRATION budgets_notification_integration
        TO APPLICATION snowflake;
      
      Copy
  2. Geben Sie die E-Mail-Adressen an, die die Benachrichtigung erhalten sollen. Wenn Sie eine Benachrichtigungsintegration erstellt oder ausgewählt haben, verknüpfen Sie die Benachrichtigungsintegration mit dem Budget.

    Rufen Sie dazu die Methode <budget_name>!SET_EMAIL_NOTIFICATIONS auf, und geben Sie Folgendes an:

    • Wenn Sie keine Benachrichtigungsintegration haben, die Sie verwenden möchten, geben Sie eine durch Komma getrennte Liste mit verifizierten E-Mail-Adressen ein. Zum Beispiel, wenn Sie Benachrichtigungen für das Konto Budget konfigurieren:

      CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!SET_EMAIL_NOTIFICATIONS(
        'costadmin@example.com, budgetadmin@example.com'
      );
      
      Copy

      Wenn Sie Benachrichtigungen für ein benutzerdefiniertes Budget konfigurieren, rufen Sie die Methode für das Objekt für das benutzerdefinierte Budget auf. Wenn Sie zum Beispiel ein benutzerdefiniertes Budget mit dem Namen my_budget erstellt haben:

      CALL my_budget!SET_EMAIL_NOTIFICATIONS(
        'costadmin@example.com, budgetadmin@example.com'
      );
      
      Copy
    • Wenn Sie eine Benachrichtigungsintegration verwenden möchten, geben Sie den Namen dieser Integration und eine durch Kommata getrennte Liste verifizierter E-Mail-Adressen ein. Zum Beispiel, wenn Sie Benachrichtigungen für das Konto Budget konfigurieren:

      CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!SET_EMAIL_NOTIFICATIONS(
        'budgets_notification_integration',
        'costadmin@example.com, budgetadmin@example.com'
      );
      
      Copy

      Wenn Sie Benachrichtigungen für ein benutzerdefiniertes Budget konfigurieren, rufen Sie die Methode für das Objekt für das benutzerdefinierte Budget auf. Wenn Sie zum Beispiel ein benutzerdefiniertes Budget mit dem Namen my_budget erstellt haben:

      CALL my_budget!SET_EMAIL_NOTIFICATIONS(
        'budgets_notification_integration',
        'costadmin@example.com, budgetadmin@example.com'
      );
      
      Copy
  3. Wenn Sie eine Benachrichtigungsintegration mit dem Budget verknüpft haben, können Sie überprüfen, ob das Budget mit Ihrer Benachrichtigungsintegration verknüpft ist, indem Sie die Methode <budget_name>!GET_NOTIFICATION_INTEGRATION_NAME aufrufen. Diese Methode gibt den Namen der E-Mail-Benachrichtigungsintegration zurück, die mit dem Budget verbunden ist.

    Zum Beispiel, wenn Sie Benachrichtigungen für das Konto Budget konfigurieren:

    CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!GET_NOTIFICATION_INTEGRATION_NAME();
    
    Copy

    Wenn Sie Benachrichtigungen für ein benutzerdefiniertes Budget konfigurieren, rufen Sie die Methode für das Objekt für das benutzerdefinierte Budget auf. Wenn Sie zum Beispiel ein benutzerdefiniertes Budget mit dem Namen my_budget erstellt haben:

    CALL my_budget!GET_NOTIFICATION_INTEGRATION_NAME();
    
    Copy

Benachrichtigung in der Warteschlange einrichten

So richten Sie die Warteschlangen-Benachrichtigung ein:

  1. Erstellen Sie eine Benachrichtigungsintegration, oder wählen Sie eine bestehende Benachrichtigungsintegration, die Sie verwenden möchten. Eine Benachrichtigungsintegration ermöglicht es Snowflake, Benachrichtigungen an ein Drittsystem zu senden.

    Erstellen Sie eine Benachrichtigungsintegration mit TYPE=QUEUE, DIRECTION=OUTBOUND und den für den Cloudanbieter erforderlichen zusätzlichen Eigenschaften. Weitere Informationen dazu finden Sie unter:

    Bemerkung

    Ihr Konto muss sich auf derselben Cloud-Plattform befinden wie die Warteschlange des Cloudanbieters.

    Beispiel:

    CREATE OR REPLACE NOTIFICATION INTEGRATION budgets_notification_integration
      ENABLED = TRUE
      TYPE = QUEUE
      DIRECTION = OUTBOUND
      NOTIFICATION_PROVIDER = AWS_SNS
      AWS_SNS_TOPIC_ARN = '<ARN_for_my_SNS_topic>'
      AWS_SNS_ROLE_ARN = '<ARN_for_my_IAM_role>';
    
    Copy

    Bemerkung

    Für Warteschlangen- und Webhook-Benachrichtigungen können Sie bis zu 10 Benachrichtigungsintegrationen mit einem Budget verknüpfen.

  2. Überprüfen Sie, ob die Benachrichtigungsintegration wie erwartet funktioniert, indem Sie die gespeicherte Prozedur SYSTEM$SEND_SNOWFLAKE_NOTIFICATION aufrufen, um eine Testnachricht zu senden.

    Sie können zum Beispiel eine Testnachricht im Format JSON senden:

    CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
      SNOWFLAKE.NOTIFICATION.APPLICATION_JSON('{"name": "value"}'),
      SNOWFLAKE.NOTIFICATION.INTEGRATION('budgets_notification_integration')
    );
    
    Copy
  3. SNOWFLAKE-Anwendung die USAGE-Berechtigung für die Benachrichtigungsintegration erteilen Die Berechtigung USAGE ermöglicht es dem Budget, die Benachrichtigungsintegration zu nutzen, um die Benachrichtigung zu versenden. Beispiel:

    GRANT USAGE ON INTEGRATION budgets_notification_integration
      TO APPLICATION snowflake;
    
    Copy
  4. Verknüpfen Sie die Integration der Benachrichtigung mit dem Budget. Rufen Sie die Methode <budget_name>!ADD_NOTIFICATION_INTEGRATION auf, und übergeben Sie dabei den Namen der Integration.

    Zum Beispiel, wenn Sie Benachrichtigungen für das Konto Budget konfigurieren:

    CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!ADD_NOTIFICATION_INTEGRATION(
      'budgets_notification_integration',
    );
    
    Copy

    Wenn Sie Benachrichtigungen für ein benutzerdefiniertes Budget konfigurieren, rufen Sie die Methode für das Objekt für das benutzerdefinierte Budget auf. Wenn Sie zum Beispiel ein benutzerdefiniertes Budget mit dem Namen my_budget erstellt haben:

    CALL my_budget!ADD_NOTIFICATION_INTEGRATION(
      'budgets_notification_integration',
    );
    
    Copy
  5. Überprüfen Sie, ob die Benachrichtigungsintegration mit dem Budget verbunden ist.

    Rufen Sie die Methode <budget_name>!GET_NOTIFICATION_INTEGRATIONS auf, um die Liste der mit dem Budget verbundenen Benachrichtigungsintegrationen auszudrucken.

    Zum Beispiel, wenn Sie Benachrichtigungen für das Konto Budget konfigurieren:

    CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!GET_NOTIFICATION_INTEGRATIONS();
    
    Copy

    Wenn Sie Benachrichtigungen für ein benutzerdefiniertes Budget konfigurieren, rufen Sie die Methode für das Objekt für das benutzerdefinierte Budget auf. Wenn Sie zum Beispiel ein benutzerdefiniertes Budget mit dem Namen my_budget erstellt haben:

    CALL my_budget!GET_NOTIFICATION_INTEGRATIONS();
    
    Copy

    Die Methode gibt eine Tabelle aus, in der die Namen der Integrationen, die Zeiten, zu denen sie zuletzt zum Senden von Benachrichtigungen verwendet wurden, und das Datum, wann sie hinzugefügt wurden, aufgeführt sind.

    +----------------------------------+------------------------+------------+
    |  INTEGRATION_NAME                | LAST_NOTIFICATION_TIME | ADDED_DATE |
    +----------------------------------+------------------------+------------+
    | budgets_notification_integration | -1                     | 2024-09-23 |
    +----------------------------------+------------------------+------------+
    

Webhook-Benachrichtigung einrichten

So richten Sie eine Webhook-Benachrichtigung ein:

  1. Erstellen Sie eine Benachrichtigungsintegration, oder wählen Sie eine bestehende Benachrichtigungsintegration, die Sie verwenden möchten. Eine Benachrichtigungsintegration ermöglicht es Snowflake, Benachrichtigungen an ein Drittsystem zu senden.

    Erstellen Sie eine Benachrichtigungsintegration mit TYPE=WEBHOOK und den zusätzlichen Eigenschaften, die für den Webhook erforderlich sind. Weitere Informationen dazu finden Sie unter Versenden von Webhook-Benachrichtigungen.

    Die Benachrichtigungsmeldung liegt im JSON-Format vor, sodass Sie die Benachrichtigungsintegration so konfigurieren sollten, dass sie dies verarbeiten kann. Die folgenden Anweisungen erstellen zum Beispiel ein Geheimnis und eine Benachrichtigungsintegration für einen Slack-Webhook:

    CREATE OR REPLACE SECRET my_database.my_schema.slack_secret
      TYPE = GENERIC_STRING
      SECRET_STRING = '... secret in my Slack webhook URL ...';
    
    CREATE OR REPLACE NOTIFICATION INTEGRATION budgets_notification_integration
      ENABLED = TRUE
      TYPE = WEBHOOK
      WEBHOOK_URL = 'https://hooks.slack.com/services/SNOWFLAKE_WEBHOOK_SECRET'
      WEBHOOK_BODY_TEMPLATE='{"text": "SNOWFLAKE_WEBHOOK_MESSAGE"}'
      WEBHOOK_HEADERS=('Content-Type'='application/json')
      WEBHOOK_SECRET = slack_secret;
    
    Copy

    Bemerkung

    Für Warteschlangen- und Webhook-Benachrichtigungen können Sie bis zu 10 Benachrichtigungsintegrationen mit einem Budget verknüpfen.

  2. Überprüfen Sie, ob die Benachrichtigungsintegration wie erwartet funktioniert, indem Sie die gespeicherte Prozedur SYSTEM$SEND_SNOWFLAKE_NOTIFICATION aufrufen, um eine Testnachricht zu senden.

    Sie können zum Beispiel eine Testnachricht im JSON-Format senden. Achten Sie darauf, in der JSON-Zeichenfolge die doppelten Anführungszeichen und die Backslashes zu vermeiden:

    CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
      SNOWFLAKE.NOTIFICATION.APPLICATION_JSON('{\\\"name\\\": \\\"value\\\"}'),
      SNOWFLAKE.NOTIFICATION.INTEGRATION('budgets_notification_integration')
    );
    
    Copy
  3. SNOWFLAKE-Anwendung die USAGE-Berechtigung für die Benachrichtigungsintegration erteilen Die Berechtigung USAGE ermöglicht es dem Budget, die Benachrichtigungsintegration zu nutzen, um die Benachrichtigung zu versenden. Beispiel:

    GRANT USAGE ON INTEGRATION budgets_notification_integration
      TO APPLICATION snowflake;
    
    Copy
  4. Wenn Sie eine Webhook-Benachrichtigungsintegration verwenden, die sich auf ein Geheimnis stützt, gewähren Sie der SNOWFLAKE-Anwendung die folgenden Berechtigungen.

    • READ-Berechtigung für dieses Geheimnis.

    • USAGE-Berechtigung für das Schema, das dieses Geheimnis enthält.

    • USAGE-Berechtigung für die Datenbank, die dieses Schema enthält.

    Beispiel:

    GRANT READ ON SECRET slack_secret TO APPLICATION snowflake;
    GRANT USAGE ON SCHEMA my_schema TO APPLICATION snowflake;
    GRANT USAGE ON DATABASE my_database TO APPLICATION snowflake;
    
    Copy
  5. Verknüpfen Sie die Integration der Benachrichtigung mit dem Budget.

    Rufen Sie die Methode <budget_name>!ADD_NOTIFICATION_INTEGRATION auf, und geben Sie den Namen der Integration an.

    Zum Beispiel, wenn Sie Benachrichtigungen für das Konto Budget konfigurieren:

    CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!ADD_NOTIFICATION_INTEGRATION(
      'budgets_notification_integration',
    );
    
    Copy

    Wenn Sie Benachrichtigungen für ein benutzerdefiniertes Budget konfigurieren, rufen Sie die Methode für das Objekt für das benutzerdefinierte Budget auf. Wenn Sie zum Beispiel ein benutzerdefiniertes Budget mit dem Namen my_budget erstellt haben:

    CALL my_budget!ADD_NOTIFICATION_INTEGRATION(
      'budgets_notification_integration',
    );
    
    Copy
  6. Überprüfen Sie, ob die Benachrichtigungsintegration mit dem Budget verbunden ist.

    Rufen Sie die Methode <budget_name>!GET_NOTIFICATION_INTEGRATIONS auf, die die Liste der mit dem Budget verbundenen Benachrichtigungsintegrationen ausgibt.

    Zum Beispiel, wenn Sie Benachrichtigungen für das Konto Budget konfigurieren:

    CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!GET_NOTIFICATION_INTEGRATIONS();
    
    Copy

    Wenn Sie Benachrichtigungen für ein benutzerdefiniertes Budget konfigurieren, rufen Sie die Methode für das Objekt für das benutzerdefinierte Budget auf. Wenn Sie zum Beispiel ein benutzerdefiniertes Budget mit dem Namen my_budget erstellt haben:

    CALL my_budget!GET_NOTIFICATION_INTEGRATIONS();
    
    Copy

    Die Methode gibt eine Tabelle aus, in der die Namen der Integrationen, die Zeiten, zu denen sie zuletzt zum Senden von Benachrichtigungen verwendet wurden, und das Datum, wann sie hinzugefügt wurden, aufgeführt sind.

    +----------------------------------+------------------------+------------+
    |  INTEGRATION_NAME                | LAST_NOTIFICATION_TIME | ADDED_DATE |
    +----------------------------------+------------------------+------------+
    | budgets_notification_integration | -1                     | 2024-09-23 |
    +----------------------------------+------------------------+------------+
    

Interpretation der JSON-Benachrichtigungsmeldung

Wenn Sie ein Budget so konfigurieren, dass es eine Benachrichtigung an eine Warteschlange eines Cloudanbieters oder einen Webhook sendet, enthält die Benachrichtigungsmeldung ein JSON-Objekt ähnlich dem folgenden:

{
  "account_name": "MY_ACCOUNT",
  "budget_name": "MY_BUDGET_NAME",
  "type": "BUDGET_LIMIT_WARNING",
  "limit": "100",
  "spending": "67.42",
  "spending_percent": "67.42",
  "spending_trend_percent": "130.63",
  "time_percent":"51.61"
}
Copy

Das JSON-Objekt enthält die folgenden Schlüssel-Wert-Paare:

Schlüssel

Beschreibung

account_name

Name Ihres Kontos.

budget_name

Name Ihres Budgets. Für das Konto-Budget lautet der Name ACCOUNT_ROOT_BUDGET.

type

Die Art der Benachrichtigung (zum Beispiel BUDGET_LIMIT_WARNING).

limit

Das Ausgabenlimit, das Sie für das Budget festgelegt haben.

spending

Der Betrag der Credit-Nutzung für diesen Monat.

spending_percent

Der Prozentsatz des Ausgabenlimits, der bereits ausgegeben wurde (spending / limit).

spending_trend_percent

Erwarteter Prozentsatz des Ausgabenlimits, der bis zum Ende des Monats ausgegeben werden soll (spending_percent / time_percent * 100).

time_percent

Prozentualer Anteil der Zeit, die für den Monat verstrichen ist (zum Beispiel 50.00, wenn der Monat zur Hälfte vorbei ist).

Überprüfen des Verlaufs von Benachrichtigungen für ein Budget

Um den Verlauf der Benachrichtigungen für ein Budget anzuzeigen, rufen Sie die Funktion NOTIFICATION_HISTORY auf und filtern nach dem Namen der Integration. Beispiel:

SELECT * FROM TABLE(
  INFORMATION_SCHEMA.NOTIFICATION_HISTORY(
    INTEGRATION_NAME=>'budgets_notification_integration'
  )
);
Copy

Die Spalte message_source enthält BUDGET für Zeilen, die Budgetbenachrichtigungen darstellen.

Deaktivieren von Benachrichtigungen für ein Budget

Um Benachrichtigungen für ein Budget zu deaktivieren, rufen Sie die Methode SET_NOTIFICATION_MUTE_FLAG auf und geben TRUE als Argument an. Beispiel:

CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!SET_NOTIFICATION_MUTE_FLAG(TRUE);
Copy

Benachrichtigungsintegration aus einem Budget entfernen

Um eine Benachrichtigungsintegration aus einem Budget zu entfernen, rufen Sie die Methode <budget_name>!REMOVE_NOTIFICATION_INTEGRATION auf und geben dabei den Namen der Integration an. Beispiel:

CALL my_budget!REMOVE_NOTIFICATION_INTEGRATION(
  'budgets_notification_integration',
);
Copy