Serverlose Logs an Unity Catalog-Volumes liefern

Serverlose Protokollübermittlung schreibt Anwendungsprotokolle von serverlosen Jobs in ein Unity-Catalog-Volume. Workspace-Administratoren konfigurieren ein Ziel für den Workspace, damit Teams Logs speichern und mit ihren Observability-Tools verarbeiten können. Logs werden nach Abschluss des Auftrags asynchron geliefert. Die Bereitstellung kann mehrere Minuten dauern und variiert je nach Bearbeitungs- und Hochladezeit.

Important

Dieses Feature befindet sich in der Betaversion. Um es zu verwenden, muss ein Arbeitsbereichsadministrator die serverlose Log-Lieferung an Unity Catalog volumes über die Vorschauenseite aktivieren. Siehe Manage Azure Databricks Previews.

Anforderungen

  • Ein Arbeitsbereich mit serverlosem Compute und aktiviertem Unity-Katalog.
  • Serverless-Umgebungsversion 5 oder neuer.
  • Die Workspace-Admin-Rolle dient zur Konfiguration der Log-Delivery. Siehe Weisen Sie einem Benutzer die Workspace-Admin-Rolle zu.
  • Die Vorschau für Serverless Log Delivery to Unity Catalog Volumes ist für den Arbeitsbereich aktiviert. Es könnte bereits aktiviert sein. Wenn es deaktiviert ist, kann ein Workspace-Administrator es auf der Previews-Seite aktivieren. Das Aktivieren der Vorschau macht die Konfiguration verfügbar; dadurch wird die Auslieferung nicht gestartet.
  • Ein Zielvolumen. Der Administrator, der die Bereitstellung konfiguriert, benötigt USE CATALOG für seinen Katalog, USE SCHEMA für sein Schema sowie READ VOLUME und WRITE VOLUME für das Volume. Siehe Berechtigungen für Unity-Katalogvolumes.

Note

Konfigurieren Sie die Zustellung nur an einen vertrauenswürdigen Datenträger mit eingeschränktem Zugriff. Gelieferte Protokolle können sensible Informationen enthalten, darunter Benutzer-E-Mails, Speicherpfade, Stack-Traces, interne Kennungen und temporär signierte URLs. Logs sind nicht garantiert frei von Secrets.

Benutzer mit Zugriff auf das Ziel können die gelieferten Logs lesen, einschließlich Logs von den Jobs anderer Nutzer. Beschränke den Zugriff auf das Volume entsprechend.

Log-Delivery aktivieren

Ein Workspace-Administrator muss die Log-Delivery für den Workspace aktivieren.

  1. Öffne die Einstellungen über dein Benutzermenü.
  2. Unter Arbeitsbereichsadministrator klicken Sie auf Compute.
  3. Im Abschnitt Logbereitstellung aktivieren Sie Serverlose Logbereitstellung.
  4. In Log delivery konfigurieren geben Sie einen Volume-Pfad ein, wie /Volumes/observability/production/serverless_logs, oder klicken Sie auf das Ordner-Icon, um die Volumes zu durchsuchen.
  5. Klicke auf Speichern. Das Speichern des Ziels ermöglicht die Zustellung.

Die Einstellung gilt auf Arbeitsbereichsebene. Du musst nicht jeden Job separat konfigurieren.

Lesen Sie die bereitgestellten Logs

Die Anwendungsausgabe umfasst Standardausgabe und Standardfehler aus Benutzercode, einschließlich benutzerdefinierter Funktionen (UDFs). Verwenden Sie den Catalog Explorer, um das Zielvolumen zu durchsuchen und ausgelieferte Dateien zu inspizieren. Siehe "Arbeiten mit Dateien" in Unity-Katalogvolumes.

Die Logzustellung liefert keine Clustermetriken oder Abfrageprofile. Nutzen Sie die Job-Run-Seite, um den Laufstatus und die Leistung zusammen mit den Anwendungsprotokollen zu untersuchen. Siehe Monitor Lakeflow Jobs.

Abfrage der gelieferten Logs mit SQL

Verwenden Sie read_files, um die ausgelieferten Textdateien abzufragen. Ersetze den Volumenpfad in diesem Beispiel durch deinen Zielpfad. Um die Protokolle zu lesen, brauchst du USE CATALOG für den Katalog, USE SCHEMA für das Schema und READ VOLUME für das Volume.

Erstellen Sie eine temporäre Ansicht, die Job- und Run-Identifikatoren aus dem Dateipfad extrahiert und jede Logzeile behält:

CREATE OR REPLACE TEMPORARY VIEW serverless_job_logs AS
SELECT
  regexp_extract(_metadata.file_path, '/job_id=([^/]+)/', 1) AS job_id,
  regexp_extract(_metadata.file_path, '/job_run_id=([^/]+)/', 1) AS job_run_id,
  regexp_extract(_metadata.file_path, '/task_run_id=([^/]+)/', 1) AS task_run_id,
  _metadata.file_name AS file_name,
  value AS log_line
FROM read_files(
  '/Volumes/observability/production/serverless_logs/',
  format => 'text'
);

Suchen Sie nach Zeilen mit Fehlern in allen Jobläufen:

SELECT job_id, job_run_id, task_run_id, file_name, log_line
FROM serverless_job_logs
WHERE log_line LIKE '%ERROR%';

Identifizieren Sie Jobs mit den meisten Fehlerzeilen:

SELECT
  job_id,
  count(*) AS error_lines,
  count(DISTINCT job_run_id) AS affected_runs
FROM serverless_job_logs
WHERE log_line LIKE '%ERROR%'
GROUP BY job_id
ORDER BY error_lines DESC;

Diese Abfragen suchen nach dem wörtlichen Text ERROR. Passen Sie den Filter an das Logging-Format Ihrer Anwendung an. Siehe read_files Tabellenwertfunktion.

Ändere das Ziel oder deaktiviere die Zustellung

Um das Ziel zu ändern, öffnen Sie Einstellungen > Compute > Compute-Protokollübermittlung, klicken Sie auf das Bleistift-Symbol neben dem Volumennamen, geben Sie einen neuen Pfad ein oder wählen Sie einen neuen Pfad aus, und klicken Sie auf Speichern. Das Speichern eines Ziels ermöglicht die Übermittlung, auch wenn die Übermittlung deaktiviert war.

Um die Auslieferung zu deaktivieren, öffnen Sie Einstellungen > Compute > Protokollbereitstellung und deaktivieren Sie Serverlose Protokollbereitstellung. Die Einstellung behält das Ziel, sodass du die Zustellung erneut aktivieren kannst, ohne einen anderen Datenträger auswählen zu müssen. Das Deaktivieren der Bereitstellung entfernt keine bereits auf das Volume geschriebenen Dateien. Verwalten Sie den Zugriff und die Aufbewahrung dieser Dateien separat.

Fehlersuche bei fehlenden Logs

Wenn nach Abschluss des Auftrags keine Logs erscheinen:

  1. Prüfen Sie, dass Serverless Log Delivery unter Einstellungen > Compute > Log Delivery aktiviert ist. Das Aktivieren der Vorschau allein startet die Auslieferung nicht.
  2. Überprüfen Sie, ob das konfigurierte Volume existiert und dass der Administrator, der die Zustellung konfiguriert hat, die erforderlichen Berechtigungen behält.
  3. Bestätigen Sie, dass der Job serverlose Rechenleistung verwendet und Anwendungsausgaben erzeugt. Warten Sie nach Abschluss des Auftrags einige Minuten, bis die asynchrone Zustellung erfolgt. Bearbeitungs- und Uploaddauer kann die Lieferung verzögern.

Informationen zur klassischen Bereitstellung von Compute-Logs finden Sie unter Bereitstellung von Compute-Logs.