Protokollierung und Ereignisfreigabe für eine Anwendung einrichten

Unter diesem Thema wird beschrieben, wie Sie die Protokollierung und die Ereignisfreigabe zur Fehlersuche in einer installierten Anwendung einrichten.

Die unter diesem Thema bereitgestellten Informationen zeigen das Einrichten von Protokollierung und Ereignisfreigabe für Anbieter. Informationen zu den Anforderungen an Verbraucher beim Konfigurieren dieses Features finden Sie unter Aktivieren von Protokollierung und Ereignisfreigabe für eine Anwendung.

Mithilfe der Protokollierung und von Ablaufverfolgungsereignissen können Sie Informationen über eine Anwendung sammeln, um Fehler und Probleme zu beheben. Durch die Verwendung der Protokollierung und von Ablaufverfolgungsereignissen können Sie sich auch ein besseres Bild davon machen, wie Ihre Anwendung ausgeführt wird, und sie dann optimieren.

Workflow zum Einrichten von Protokollierung und Ereignisfreigabe als Anbieter

Als Anbieter können Sie die Protokollierung und Ereignisfreigabe für eine Anwendung einrichten, indem Sie Folgendes tun:

  1. Überprüfen der Hinweise zur Verwendung von Protokollierung und Ereignisfreigabe

  2. Konfigurieren der Protokollierung und von Ablaufverfolgungsereignissen für Funktionen und gespeicherte Prozeduren.

  3. Legen Sie die Ablaufverfolgungsebene und den Protokolliergrad in der Manifest-Datei fest.

  4. Konfigurieren Sie ein Konto zum Speichern der freigegebenen Ereignisse.

Nachdem der Verbraucher eine Anwendung installiert und die Protokollierung und Ereignisfreigabe aktiviert hat, können Sie die von der installierten Anwendung freigegebenen Protokoll- und Ereignisinformationen anzeigen:

Hinweise zur Verwendung von Protokollierung und Ereignisfreigabe

Bevor Sie die Protokollierung und Ereignisfreigabe bei einer Anwendung verwenden, müssen Sie Folgendes beachten:

  • Sie sind für alle Kosten verantwortlich, die auf Seiten des Anbieters mit der Ereignisfreigabe verbunden sind, einschließlich Datenerfassung und Datenspeicherung.

  • Sie müssen über ein Konto zum Speichern der freigegebenen Ereignisse in jeder Region verfügen, in der Sie die Ereignisfreigabe unterstützen möchten.

  • Sie müssen für eine Anwendung Standardwerte für Protokolliergrad und Ablaufverfolgungsebene in der Manifest-Datei festlegen.

Protokollierung und Ablaufverfolgungsereignisse in Funktionen und Prozeduren konfigurieren

Das Native Apps Framework benötigt eine Ereignistabelle zum Speichern der Protokollmeldungen und Ablaufverfolgungsereignisse, die von Funktionen und gespeicherten Prozeduren in einer Anwendung generiert werden.

Bemerkung

Wenn der Verbraucher Ihrer Anwendung keine Ereignistabelle einrichtet und diese Tabelle nicht zur aktiven Tabelle macht, bevor die Anwendung installiert wird, werden Ereignis- und Protokolldaten verworfen.

Ein Konto kann mehrere Ereignistabellen haben, aber es kann immer nur eine davon als aktive Ereignistabelle für ein Snowflake-Konto festgelegt sein. Ohne eine aktive Ereignistabelle werden die von der Anwendung generierten Protokollmeldungen und Ablaufverfolgungsereignisse nicht erfasst. Dies gilt auch dann, wenn die Funktionen und Prozeduren in einer Anwendung die APIs für Protokollierung und Ablaufverfolgungsereignisse aufrufen.

Zum Erstellen einer Ereignistabelle verwenden Sie den Befehl CREATE EVENT TABLE. Weitere Informationen dazu finden Sie unter Einrichten einer Ereignistabelle.

Nachdem durch den Code Protokollmeldungen und Ablaufverfolgungsereignisse erfasst wurden, können Sie die erfassten Daten abfragen.

Weitere Informationen zum Erfassen und Abfragen von Protokoll- und Ablaufverfolgungsdaten finden Sie unter:

Ablaufverfolgungsebene und Protokolliergrad in der Manifest-Datei festlegen

Um für die Version einer Anwendung die Standardwerte für Protokolliergrad und Ablaufverfolgungsereignis-Ebene festzulegen, legen Sie die Parameter log_level und trace_level in der Manifest-Datei wie im folgenden Beispiel fest:

artifacts:
  setup_script: setup.sql
configuration:
  trace_level: OFF
  log_level: DEBUG
Copy

Wenn ein Anbieter die Ablaufverfolgung aktiviert, erfasst eine Snowflake Native App automatisch die Start- und Endzeiten für alle Abfragen und Aufrufe gespeicherter Prozeduren.

Bemerkung

Das Veröffentlichen einer Snowflake Native App mit der Eigenschaft trace_level, die auf einen anderen Wert als OFF eingestellt ist, könnte jedem Benutzer im Verbraucherkonto, der die Ereignistabelle einsehen kann, Aufrufe zu verborgenen gespeicherten Prozeduren offenlegen.

Siehe Einstellen des Protokolliergrads (Ablaufverfolgungsebene) und Einstellen des Protokolliergrads für weitere Informationen zu den unterstützten Werten für trace_level und log_level.

Bei der Erstinstallation der Snowflake Native App werden die in der Manifest-Datei definierten Protokolliergrade verwendet. Wenn der Protokolliergrad bei einem späteren Upgrade geändert wird, tritt der neue Protokolliergrad in Kraft, sobald der Upgrade-Prozess abgeschlossen ist.

Protokolliergrad und Ablaufverfolgungsebene können nur in der Manifest-Datei festgelegt werden. Der Verbraucher ist nicht berechtigt, den Protokolliergrad mit den Befehlen ALTER APPLICATION oder ALTER DATABASE zu ändern.

Ebenso werden alle Einstellungen auf Sitzungsebene für den Protokolliergrad von der Anwendung ignoriert.

Konto zum Speichern freigegebener Ereignisse konfigurieren

Um Protokolleinträge und freigegebene Ereignisse zu speichern, müssen Sie ein Konto auswählen, das eine Ereignistabelle enthält. Dies kann jedes Konto sein, auf das der Anbieter Zugriff hat. Wenn Ihre Organisation jedoch mehrere Anbieter hat, die Anwendungspakete veröffentlichen, sollten Sie die Verwendung eines Snowflake-Kontos in Betracht ziehen, das speziell zum Speichern freigegebener Ereignisse der Verbraucher bestimmt ist.

Bei einem Konto für freigegebene Ereignisse gelten die folgenden Einschränkungen:

  • Sie müssen die Rolle ORGADMIN verwenden, um ein Konto als Ereigniskonto festzulegen.

  • Das Konto muss über eine aktive Ereignistabelle verfügen.

  • Das angegebene Konto darf keine der folgenden Merkmal aufweisen:

    • Konto ist gesperrt oder ausgesetzt.

    • Konto ist ein Leserkonto.

    • Konto ist ein Testkonto.

    • Konto ist ein von Snowflake verwaltetes Konto.

Bemerkung

Sie können Protokolleinträge und freigegebene Ereignisse nur für die Region sammeln, in der der Verbraucher die Anwendung installiert hat. Daher müssen Sie in jeder Region, in der Verbraucher die Ereignisfreigabe für eine Anwendung konfigurieren, ein Konto zum Speichern freigegebener Ereignisse einrichten.

Konto als Ereigniskonto festlegen

Um ein Konto als Ereigniskonto einer Region festzulegen, rufen Sie die Systemfunktion SYSTEM$SET_EVENT_SHARING_ACCOUNT_FOR_REGION auf:

CALL SYSTEM$SET_EVENT_SHARING_ACCOUNT_FOR_REGION('<snowflake_region>', '<region_group>', '<account_name>')
Copy

Wobei:

snowflake_region

Gibt den Namen der Region an, in der sich das Konto befindet, z. B. AWS_US_WEST_2, AWS_US_EAST_1

region_group

Gibt die Regionsgruppe an, z. B. PUBLIC. Weitere Informationen dazu finden Sie unter Regionsgruppen.

account_name

Gibt den Kontonamen an. Wenn in der angegebenen Region bereits ein anderes Konto als Ereigniskonto eingerichtet ist, wird bei Ausführung dieses Befehls das hier angegebene Konto zum neuen Ereigniskonto.

Einstellung von Konto als Ereigniskonto entfernen

Um ein Konto als Ereigniskonto einer Region zu deaktivieren, rufen Sie die Systemfunktion SYSTEM$UNSET_EVENT_SHARING_ACCOUNT_FOR_REGION auf:

CALL SYSTEM$UNSET_EVENT_SHARING_ACCOUNT_FOR_REGION('<snowflake_region>', '<region_group>', '<account_name>')
Copy

Wobei:

snowflake_region

Gibt den Namen der Region an, in der sich das Konto befindet, z. B. AWS_US_WEST_2, AWS_US_EAST_1

region_group

Gibt die Regionsgruppe an, z. B. PUBLIC.

account_name

Gibt den Kontonamen an.

Ereigniskonten in der Organisation des Anbieters anzeigen

Um die Ereigniskonten in der Organisation eines Anbieters anzuzeigen, rufen Sie die Systemfunktion SYSTEM$SHOW_EVENT_SHARING_ACCOUNTS auf:

CALL SYSTEM$SHOW_EVENT_SHARING_ACCOUNTS()
Copy

Bemerkung

Zum Aufrufen dieser Funktion müssen Sie die Rolle ORGADMIN verwenden.

Diese Systemfunktion gibt eine Zeichenfolge im JSON-Format zurück, die eine Liste der in der Organisation vorhandenen Ereigniskonten enthält. Da die Metadaten eine gewisse Zeit benötigen, ehe sie in allen Regionen bereitgestellt wurden, kann es bei dieser Funktion zu einer Verzögerung kommen, wenn das neueste Ereigniskonto angezeigt wird, nachdem der Benutzer ein Ereigniskonto für die Organisation eingerichtet oder gelöscht hat.

In einem Anwendungspaket definierte Werte für Protokolliergrad und Ablaufverfolgungsereignis-Ebene anzeigen

Verwenden Sie den Befehl DESCRIBE APPLICATION, um den Protokolliergrad einer installierten Anwendung anzuzeigen, wie im folgenden Befehl gezeigt:

DESC APPLICATION HelloSnowflake;
Copy

Verwenden Sie den Befehl SHOW VERSIONS, um den Protokolliergrad der in einem Anwendungspaket definierten Anwendungsversionen anzuzeigen, wie im folgenden Beispiel gezeigt:

SHOW VERSIONS
  IN APPLICATION PACKAGE HelloSnowflake;
Copy

In Ereignistabelle gespeicherte Protokolleinträge und Ereignisse anzeigen

Um die in der Ereignistabelle gespeicherten Protokolleinträge und Ereignisse anzuzeigen, verwenden Sie den Befehl SELECT wie im folgenden Beispiel gezeigt:

SELECT * FROM EVENT_DB.EVENT_SCHEMA.MY_EVENT_TABLE
Copy

Für den Anbieter verfügbare Informationen zu freigegebenen Ereignissen

In den folgenden Abschnitten werden die Informationen beschrieben, die das Native Apps Framework für Anbieter freigibt.

Anwendungsereigniskontext, der für Anbieter freigegeben wird

Damit Anbieter die Quellen von freigegebenen Ereignissen leichter identifizieren können, werden in die Spalte RESOURCE_ATTRIBUTES der Ereignistabelle die folgenden Felder befüllt, wenn sie für den Anbieter freigegeben werden:

  • snow.application.package.name

  • snow.application.consumer.organization

  • snow.application.consumer.name

  • snow.listing.name

  • snow.listing.global_name

Felder, die nicht für Anbieter freigegeben werden

Zum Schutz der Verbraucherdaten werden die folgenden Felder der Spalte RESOURCE_ATTRIBUTES nicht für den Anbieter freigegeben:

  • snow.database.id

  • snow.database.name

  • snow.schema.id

  • snow.executable.id

  • snow.owner.name

  • snow.owner.id

  • snow.warehouse.name

  • snow.warehouse.id

  • snow.query.id

  • snow.session.id

  • snow.session.role.primary.name

  • snow.session.role.primary.id

  • snow.user.name

  • snow.user.id

  • db.user

Anstatt die Felder snow.database.name und snow.query.id direkt für den Anbieter freizugeben, gibt Snowflake die Hash-Werte (SHA-1) dieser beiden Felder über folgende Felder frei:

  • snow.database.hash

  • snow.query.hash

Snowflake stellt die Funktion SHA-1 bereit, mit der Sie diese Attribute maskieren können. Verbraucher können die Hash-Werte für den Datenbanknamen und die Abfrage-ID berechnen und sie beim Kontaktieren des Anbieters als Referenzwerte verwenden.