Lakebase-Telemetrie in Systemtabellen

Important

Dieses Feature befindet sich in der Betaversion. Um sie zu verwenden, muss ein Workspace-Administrator Lakebase Observability in System Tables auf der Vorschauseite aktivieren. Siehe Manage Azure Databricks Previews.

Lakebase erfasst seine Observabilitätstelemetrie in das system.lakebase Schema, beginnend mit fortgeschrittenen Postgres-Signalen. Die Gefangennahme erfolgt automatisch. Mit aktivierter Vorschau landet die Telemetrie in diesen Tabellen, während die Berechnung eines Projekts läuft. Es gibt keine Konfiguration zu erstellen, kein Ziel auszuwählen und keine Zugangsdaten bereitzustellen. Insights und Genie lesen dieselben Tabellen, und du kannst sie mit jedem Azure Databricks-Tool abfragen.

Note

Tabellen- und Spaltennamen können sich vor der allgemeinen Verfügbarkeit ändern.

Anforderungen

  • Die Lakebase Observability in System Tables Vorschau ist für Ihren Arbeitsbereich aktiviert.
  • Ein Lakebase-Projekt auf AWS oder Azure. Siehe Abrufen einer Postgres-Datenbank.

Was erfasst wird

Lakebase zeichnet die Signale auf, die Sie benötigen, um eine langsame oder fehlerhafte Datenbank zu erklären, über die folgenden Tabellen:

Erfasste Elemente Name der Tabelle
Aktive Sitzungen und Warteereignisse system.lakebase.active_session_history, system.lakebase.wait_event_counters
Abfragepläne und Abfrageausführungsstatistiken system.lakebase.plan_history, system.lakebase.pg_stat_statements_counters
Schemaänderungen: Was sich geändert hat, wann und von wem system.lakebase.ddl_history
Datenbankstatistiken: Größe, Lesen und Ändern von Zeilen und Sitzungsanzahl system.lakebase.database_counters, system.lakebase.database_gauges
Berechnen der Ressourcenauslastung: CPU, Arbeitsspeicher, Cache, Verbindungen system.lakebase.compute_counters, system.lakebase.compute_gauges
Roh-Postgres-Protokollmeldungen, einschließlich des Fehlers, der einem Fehlschlag zugrunde liegt system.lakebase.postgres_logs

Die Unterlagen werden 7 Tage lang aufbewahrt. Der Rest dieser Seite dokumentiert jede Spalte in jeder Tabelle. Um zu finden, wo diese Tabellen unter den anderen Systemtabellen stehen, siehe Lakebase Systemtabellenreferenz.

Access

Die Tabellen system.lakebase werden von Unity Catalog verwaltet. Benutzer mit sowohl der Kontoadministrator- als auch der Metastore-Administratorrolle können die Telemetrie lesen und den Zugriff darauf verwalten. Weitere Informationen finden Sie unter Verwalten von Berechtigungen in Unity Catalog.

Der Zugriff gilt auf Schema-Ebene, sodass ein Nutzer, der lesen system.lakebase kann, Telemetrie für jedes Projekt im Konto sieht.

Maskierter Aussagetext

Spalten, die den Aussagetext enthalten, kehren zurück, <REDACTED> es sei denn, Sie sind Kontoadministrator oder Mitglied der databricks_pii_access Kontoebene-Gruppe. Ein Kontoadministrator erstellt und verwaltet diese Gruppe. Siehe Erstellen und verwalten Sie die databricks_pii_access Gruppe und Zugriff auf den Text maskierter Statements.

Spalten, die für jede Tabelle gemeinsam sind

Jede tabelle unten enthält diese Spalten, aus denen eine Zeile stammt:

Column Type Beschreibung
project_id STRING Das Lakebase-Projekt, aus dem die Zeile stammte.
branch_id STRING Die Verzweigung der Zeile stammte von.
endpoint_id STRING Der Computeendpunkt, von dem die Zeile stammt.
compute_id STRING Die spezifische Computeinstanz. Dies ändert sich, wenn eine Berechnung auf Null skaliert und fortgesetzt wird.
ts TIMESTAMP Wann die Zeile aufgezeichnet wurde.
compute_mode STRING Der Computermodus zum Zeitpunkt, z. B. Lese-/Schreibzugriff oder schreibgeschützt.

Tabellen mit Namen, die auf "Enden" _counters enden, enthalten auch eine previous_ts Spalte, wobei der Anfang des Intervalls markiert wird, für das die Werte einer Zeile angesammelt wurden. Dies sind kumulierte Werte für dieses Intervall, nicht punktinterne Lesezeiten. Tabellen, die in der Zeit enden, sind stattdessen Punkt-in-Time-Lesezeiten _gauges und haben keine previous_ts.

In den folgenden Tabellen sind nur die Spalten aufgeführt, die über diese allgemeinen Spalten hinausgehen.

Sitzungsaktivität

Eine Momentaufnahme aller aktiven Back-End-Dateien, die kontinuierlich in die Stichprobe einbezogen werden. Dies ist das gleiche Muster wie AWS Performance Insights oder Oracles Active Session History (ASH): Wenn eine Sitzung etwas tut, einschließlich Warten, wird sie hier angezeigt.

active_session_history

Column Type Beschreibung
sample_seq LONG Ordnungsposition dieser Stichprobe innerhalb des Batches.
pid LONG Die Prozess-ID des Back-Ends.
datid LONG Die Objekt-ID der Datenbank.
userid LONG Die Objekt-ID der Verbindungsrolle.
queryid LONG Identifiziert die auszuführende Abfrage. Übereinstimmungen queryid in pg_stat_statements_counters.
wait_event_info LONG Interne Codierung des Wait-Ereignisses.
wait_event_type STRING Die Kategorie des Wait-Ereignisses, z. B Timeout . oder Lock.
wait_event STRING Das spezifische Wait-Ereignis, z. B PgSleep. .
backend_state LONG Der Status des Back-Ends, z. B. aktiv oder im Leerlauf.
backend_type LONG Der Typ des Back-End-Prozesses.
xact_age_ms LONG Wie lange die aktuelle Transaktion geöffnet ist.
query_age_ms LONG Wie lange die aktuelle Abfrage ausgeführt wurde.
blocking_pid LONG Die PID einer Sitzung, die diese Sitzung blockiert, falls vorhanden.
leader_pid LONG Die PID des parallelen Abfrageleiters, wenn es sich bei diesem Back-End um einen parallelen Worker handelt.
flags LONG Interne Statuskennzeichnungen.
plan_fingerprint LONG Links zu einem bestimmten Plan-Shape in plan_history.
appname_hash LONG Ein Hash des Namens der verbindenden Anwendung.

Wait-Ereignisse

Aggregierte Warteereignisanzahl und -zeit, ergänzt die Ansicht pro Beispiel in active_session_history.

wait_event_counters

Column Type Beschreibung
wait_event_id LONG Interne Codierung des Wait-Ereignisses.
wait_class_name STRING Die Kategorie des Wait-Ereignisses.
wait_event_name STRING Das spezifische Wait-Ereignis.
wait_event_count LONG Wie oft dieses Wartezeitereignis im Intervall aufgetreten ist.
wait_event_time DOPPELT Gesamtzeit für dieses Wartezeitereignis während des Intervalls.

Abfragepläne

Ein Datensatz pro Ausführung von Abfrageplänen, einschließlich des vollständigen Plans und neonspezifischer Speicherstatistiken. Dies ist die detaillierteste Tabelle, und in der Regel endet eine Untersuchung mit langsamen Abfragen.

plan_history

Column Type Beschreibung
row_position LONG Ordnungsposition dieser Zeile innerhalb des Batches.
analyze_enabled BOOLEAN Gibt an, ob der Plan tatsächliche Ausführungsstatistiken (EXPLAIN ANALYZE) enthält, nicht nur Schätzungen.
buffers_enabled BOOLEAN Gibt an, ob der Plan Puffernutzungsstatistiken enthält.
query_hash STRING Hash zur Identifizierung des Abfragetexts.
queryid LONG Identifiziert die Abfrage. Übereinstimmungen queryid in pg_stat_statements_counters und active_session_history.
duration_ms DOPPELT Wie lange die Abfrage ausgeführt wurde.
total_cost DOPPELT Die geschätzten Kosten des Planners für die Abfrage.
plan_rows LONG Die geschätzte Zeilenanzahl des Planners.
actual_rows LONG Die tatsächlich zurückgegebene Zeilenanzahl.
plan_fingerprint LONG Identifiziert dieses bestimmte Plan-Shape. Übereinstimmungen plan_fingerprint in active_session_history.
lock_wait_time_ms DOPPELT Zeit für das Warten auf Sperren.
planning_time_ms DOPPELT Zeitaufwand für die Planung der Abfrage, getrennt von der Ausführung.
shared_blks_hit / shared_blks_read / shared_blks_dirtied / shared_blks_written LONG Aktivität des freigegebenen Puffercaches für diese Ausführung.
local_blks_hit / local_blks_read / local_blks_dirtied / local_blks_written LONG Lokale Pufferaktivität für temporäre Tabellen.
temp_blks_read / temp_blks_written LONG Temporäre Dateiaktivität, z. B. aus einer großen Sortierung oder einem großen Hash.
neon_getpage_count LONG Anzahl der Seitenanforderungen, die an den Seitenserver gesendet wurden.
neon_file_cache_hits LONG Anzahl der Seiten, die vom lokalen Dateicache anstelle des Seitenservers bereitgestellt werden.
neon_getpage_wait_us LONG Zeit für das Warten auf Seitenserver-Seitenanforderungen in Mikrosekunden.
backend_pid LONG Die Back-End-Prozess-ID, die diese Abfrage ausgeführt hat.
lock_wait_count LONG Häufigkeit, mit der diese Ausführung auf eine Sperre gewartet hat.
userid / dbid LONG Die Objekt-IDs der Verbindungsrolle und der Datenbank.
query_text STRING Der Abfragetext. Maskiert. Siehe Text der maskierten Aussage.
plan_json STRING Der vollständige Abfrageplan als JSON. Maskiert. Siehe Text der maskierten Aussage.
usename / datname STRING Die Namen der Verbindungsrolle und der Datenbank.
application_name / client_addr STRING Der Name und die Clientadresse der verbindenden Anwendung.
wait_events STRING Warteereignisse, die während dieser Ausführung beobachtet wurden.
parameters STRING Binden Von Parametern, die in der Abfrage verwendet werden, falls vorhanden. Maskiert. Siehe Text der maskierten Aussage.
blocking_pids STRING PIDs von Sitzungen, die diese Ausführung blockiert haben, falls vorhanden.
neon_branch_id / neon_endpoint_id / neon_timeline_id STRING Interne Neon-IDs für die Verzweigung, den Endpunkt und die Zeitachse.
cpu_user_time_ms / cpu_sys_time_ms DOPPELT Cpu-Zeit, die von dieser Ausführung verbraucht wird, aufgeteilt in Benutzer- und Systemzeit.
voluntary_csw / involuntary_csw LONG Kontextschalter während dieser Ausführung.
trace_id / span_id / trace_flags / service_name SAITE / SAITE / LANG / SAITE OpenTelemetry-Ablaufverfolgungs-IDs, wenn die Abfrage Teil einer ablaufverfolgungsbezogenen Anforderung war.
timeline_id LONG Interner Zeitachsenbezeichner.
truncated BOOLEAN Gibt an, ob die Daten dieser Zeile (z. B. ein großer Plan) vor dem Schreiben abgeschnitten wurden.

Abfragestatistik

Aggregierte Statistiken pro Abfrage, die aus der Standarderweiterung pg_stat_statements stammen.

pg_stat_statements_counters

Column Type Beschreibung
userid / dbid LONG Die Objekt-IDs der Verbindungsrolle und der Datenbank.
queryid LONG Identifiziert die Abfrage. Übereinstimmungen queryid in plan_history und active_session_history.
toplevel BOOLEAN Gibt an, ob diese Zeile für eine Anweisung der obersten Ebene gilt, im Gegensatz zu einer in einer PL/pgSQL-Funktion oder -Prozedur geschachtelten Anweisung. Siehe die PL/pgSQL-Einschränkung.
query STRING Der Abfragetext. Maskiert. Siehe Text der maskierten Aussage.
calls LONG Häufigkeit, mit der diese Abfrage im Intervall ausgeführt wurde.
plans LONG Häufigkeit, mit der diese Abfrage im Intervall geplant wurde.
rows LONG Gesamtzahl der zurückgegebenen oder betroffenen Zeilen.
total_exec_time / total_plan_time DOPPELT Gesamtzeit für die Ausführung und Planung dieser Abfrage im Intervall.
shared_blks_hit / shared_blks_read / shared_blks_dirtied / shared_blks_written LONG Aktivität des freigegebenen Puffercaches.
local_blks_hit / local_blks_read / local_blks_dirtied / local_blks_written LONG Lokale Pufferaktivität für temporäre Tabellen.
temp_blks_read / temp_blks_written LONG Temporäre Dateiaktivität.
wal_bytes / wal_fpi / wal_records LONG Von dieser Abfrage generiertes Schreibzugriffsprotokollvolume.
jit_emission_count / jit_emission_time / jit_functions / jit_generation_time / jit_inlining_count / jit_inlining_time / jit_optimization_count / jit_optimization_time Gemischt JIT-Kompilierungsstatistiken (just-in-time), wenn JIT für diese Abfrage verwendet wurde.

Schema-Änderungen

Schemaänderungen: Was sich geändert hat, wann und von wem. Dies ist, was Genie liest, um einen Vorfall auf eine Schemaänderung zurückzuverfolgen, ob von einer Bereitstellung oder einer manuellen Bearbeitung.

ddl_history

Column Type Beschreibung
row_position LONG Ordnungsposition dieser Zeile innerhalb des Batches.
command_tag STRING Der Typ des DDL-Befehls, z ALTER TABLE. B. .
object_type / object_name STRING Die Art und der Name des geänderten Objekts.
schema_name STRING Das Postgres-Schema, zu dem das Objekt gehört.
query_text STRING Die vollständige DDL-Anweisung. Maskiert. Siehe Text der maskierten Aussage.
duration_ms DOPPELT Wie lange die DDL-Anweisung ausgeführt wurde.
userid / usename LONG / SAITE Die Objekt-ID und der Name der Verbindungsrolle.
application_name STRING Der Name der Verbindungsanwendung.
backend_pid LONG Die Back-End-Prozess-ID, die die Anweisung ausgeführt hat.
dbid LONG Die Objekt-ID der Datenbank.
search_path STRING Der Suchpfad der Sitzung zum Zeitpunkt.
ddl_json STRING Eine strukturierte, analysierte Darstellung der DDL-Anweisung. Maskiert. Siehe Text der maskierten Aussage.

Note

DDL-Erfassung hat eine echte Lücke: Eine Änderung, die direkt um eine Computesumsumierung von Scale-to-Zero vorgenommen wurde, kann übersehen werden. Wenn hier keine Schemaänderung angezeigt wird, obwohl Sie wissen, dass es passiert ist, ist dies der wahrscheinlichste Grund. Informationen finden Sie unter Einschränkungen.

Postgres-Protokolle

Unformatierte Postgres-Protokollmeldungen, einschließlich des spezifischen Fehlers hinter einem Fehler.

postgres_logs

Column Type Beschreibung
sample_seq LONG Ordnungsposition dieser Zeile innerhalb des Batches.
elevel LONG Interne Protokollebenencodierung.
severity STRING Der Schweregrad des Protokolls, z. B ERROR . oder LOG.
sqlstate STRING Der SqlSTATE-Fehlercode für Postgres, z 42703 . B. für eine nicht definierte Spalte.
backend_pid / leader_backend_pid LONG Die Back-End-Prozess-ID und die PID des parallelen Abfrageleiters, falls zutreffend.
userid / usename LONG / SAITE Die Objekt-ID und der Name der Verbindungsrolle.
datid / datname LONG / SAITE Die Objekt-ID und der Name der Datenbank.
application_name / client_addr STRING Der Name und die Clientadresse der verbindenden Anwendung.
schema_name / table_name / column_name / constraint_name / datatype_name STRING Das Schema, die Tabelle, die Spalte, die Einschränkung oder der Datentyp, auf den durch den Fehler verwiesen wird, wenn Postgres einen hat.
funcname STRING Die Funktion, in der der Fehler aufgetreten ist, falls zutreffend.
filename / lineno SAHNE / LANG Die Postgres-Quelldatei und zeilen den Fehler aus.
message STRING Der Protokollmeldungstext.
detail / hint / context STRING Weitere Details, eine vorgeschlagene Lösung und der Kontext des Fehlers, wenn Postgres sie hat.
internalquery STRING Eine intern generierte Abfrage im Zusammenhang mit dem Fehler, falls zutreffend.
statement STRING Die Anweisung, die diesen Protokolleintrag ausgelöst hat. Maskiert. Siehe Text der maskierten Aussage.
truncated_mask LONG Gibt an, welche Felder ggf. abgeschnitten wurden, bevor sie geschrieben werden.

Note

Die strukturierten schema_nameFelder table_nameund column_name Felder werden nicht für jeden Fehlertyp aufgefüllt. Ein einfacher Analysefehler "Spalte ist nicht vorhanden" (SQLSTATE 42703), z. B. lässt sie leer, obwohl message die Spalte direkt benannt wird. Verlassen Sie sich nicht darauf, dass diese Felder aufgefüllt werden. Überprüfen Sie message zuerst.

Berechnen von Metriken

Ressourcenauslastung auf Computeebene: CPU, Arbeitsspeicher, Datenträger und Netzwerk-E/A sowie der lokale Dateicache (LFC), der computeseitige Cache von Lakebase vor dem Pageserver.

compute_counters

Column Type Beschreibung
backpressure_throttling_seconds DOPPELT Zeit, die die Speicherschicht für die Drosselung von Schreibvorgängen in diesem Intervall aufgewendet hat. Ein Wert ungleich Null bedeutet, dass das Schreibvolumen überschreitet, was Speicher aufnehmen kann.
host_busiest_cpu_seconds / host_cpu_seconds DOPPELT CPU-Zeit verbraucht, für den größten Kern und insgesamt.
host_disk_read_bytes / host_disk_written_bytes DOPPELT Datenträger-E/A-Volume.
host_network_receive_bytes / host_network_transmit_bytes DOPPELT Netzwerk-E/A-Volume.
lfc_evictions / lfc_hits / lfc_misses / lfc_writes LONG Lokale Dateicacheaktivität für dieses Intervall.
replica_lfc_redo_evictions LONG Lokale Dateicacheräumungen, die durch Replikat wiederholen verursacht werden, wenn es sich bei dieser Berechnung um ein Lesereplikat handelt.

compute_gauges

Column Type Beschreibung
current_lsn LONG Die aktuelle Position des Schreib-Ahead-Protokolls.
replica_wal_replay_lsn / replica_wal_receive_lsn LONG Wal replay and receive positions, if this compute is a read replica.
max_connections LONG Der konfigurierte Verbindungsgrenzwert.
lfc_working_set_size_5m / lfc_working_set_size_15m / lfc_working_set_size_60m LONG Geschätzte Arbeitssatzgröße über die letzten 5, 15 und 60 Minuten.
lfc_size_limit / lfc_allocated / lfc_used LONG Kapazität des lokalen Dateicaches und der aktuellen Nutzung.
total_size_limit / total_size LONG Gesamtspeicherkapazität und aktuelle Nutzung.
replication_lag_bytes / replication_lag_time_ms LANG / DOPPELT Replikationsverzögerungen, wenn es sich bei dieser Berechnung um ein Lesereplikat handelt.
host_logical_cpus / host_memory_total_bytes DOPPELT Die bereitgestellte CPU und der Arbeitsspeicher des Computes.

Datenbankmetriken

Aktivität pro Datenbank: Zeilen geändert, Transaktionen, Sitzungen und Vakuumintegrität. Hier leben Tabellenblähungen und Autovacuum-Signale.

database_counters

Column Type Beschreibung
datid / datname LONG / SAITE Die Objekt-ID und der Name der Datenbank.
active_time_ms / idle_in_transaction_time_ms / session_time_ms DOPPELT Die in einer geöffneten Transaktion im Leerlauf verbrachte Zeit und insgesamt verbunden.
deadlocks LONG Anzahl der erkannten Deadlocks.
rows_deleted / rows_fetched / rows_inserted / rows_returned / rows_updated LONG Aktivität auf Zeilenebene für das Intervall.
sessions_abandoned / sessions_established / sessions_fatal / sessions_killed LONG Die Anzahl des Sitzungslebenszyklus.
shared_blks_hit / shared_blks_read LONG Aktivität des freigegebenen Puffercaches.
xact_commit / xact_rollback LONG Zugesicherte und zurückgesetzte Transaktionen.

database_gauges

Column Type Beschreibung
datid / datname LONG / SAITE Die Objekt-ID und der Name der Datenbank.
numbackends LONG Aktuelle Anzahl von Verbindungen zu dieser Datenbank.
size LONG Die Größe der Datenbank auf dem Datenträger.
oldest_frozen_xid_age / oldest_mxid_age LONG Transaktions-ID und Multixact-ID Alter der ältesten nichtfrozen Zeile. Steigende Werte sind das früheste Signal des Vakuums, das hinter sich fällt, gut bevor Dieblähungen in der Tabellengröße sichtbar werden.

Einschränkungen

Note

Passwörter werden geschwärzt, während eine Anweisung erfasst wird, sodass ein erfasstes CREATE ROLE Dokument als Nummer lautet PASSWORD '***'. Die Redaktion hängt davon ab, das Passwort in der Aussage zu erkennen, und eine fehlgeleitete Aussage kann der Entdeckung entgehen.

Azure Databricks empfiehlt OAuth-Rollen, die Azure Databricks-Identitäten mit Token authentifizieren und kein Passwort zum Tippen lassen.

Es gelten die folgenden Einschränkungen:

  • COPY Die Operationen werden in der Abfrageplanhistorie nicht erfasst.

  • Eine Abfrage, die in einer PL/pgSQL-Funktion oder -Prozedur ausgeführt wird, wird nicht in Telemetrie auf Abfrageebene erfasst, es sei denn, sie wird auch als Anweisung der obersten Ebene ausgeführt. Die eigene Anweisungsverfolgung von Postgres zählt standardmäßig nur Anweisungen auf oberster Ebene.

  • Verzweigungen und Endpunkte erscheinen in Telemetrie und Insights nach interner ID (zum Beispiel br-odd-mud-y2icrn1h), nicht nach einem Anzeigenamen wie "production". Vergleichen Sie die ID in der Lakebase-Benutzeroberfläche, wenn Sie bestätigen müssen, auf welchen Branch oder Endpunkt sich eine Insight- oder Tabellenzeile bezieht.

  • GUCs, die die Telemetrieerfassung aktivieren, werden möglicherweise nicht automatisch an eine vorhandene Berechnung weitergegeben. Wenn die Telemetrie nach der Aktivierung der Vorschau nicht erscheint, verbinden Sie sich mit dem Projekt und prüfen:

    SHOW neon_monitor.log_capture_enabled;
    SHOW databricks.o11y_exporter_enabled;
    

    Beide müssen on zurückgeben. Wenn eine von beiden off zurückgibt, starten Sie den Compute-Endpunkt neu.

Legacy-Observabilitätskonfigurationen

Bevor Telemetrie auf Systemtabellen umgestellt wurde, konnte man eine Observabilitätskonfiguration erstellen, die Telemetrie in einen Katalog und ein Schema in Ihrem eigenen Unity-Katalog erfasste und vorgefertigte Dashboards bereitstellte. Bestehende Konfigurationen funktionieren weiterhin, und ihre Dashboards bleiben verfügbar. Man kann keine neuen Observability-Konfigurationen mehr erstellen, und die Erfassung in Systemtabellen erzeugt keine Dashboards.

Nächste Schritte