Telemetria Lakebase nelle tabelle di sistema

Importante

Questa funzionalità è in versione beta. Per utilizzarlo, un amministratore dello spazio di lavoro deve attivare l'osservabilità di Lakebase nelle Tabelle di Sistema dalla pagina delle anteprime . Vedere Gestire le anteprime di Azure Databricks.

Lakebase cattura la telemetria della sua osservabilità nello system.lakebase schema, a partire dai segnali avanzati di Postgres. La cattura è automatica. Con questa anteprima attivata, la telemetria si posiziona in queste tabelle mentre il calcolo di un progetto viene eseguito. Non c'è una configurazione da creare, nessuna destinazione da scegliere, né credenziali da fornire. Insights e Genie leggono le stesse tabelle, e puoi interrogarle con qualsiasi strumento di Azure Databricks.

Note

I nomi delle tabelle e delle colonne potrebbero cambiare prima della disponibilità generale.

Requisiti

  • L'osservabilità di Lakebase nell'anteprima delle Tabelle di Sistema abilitata per il tuo spazio di lavoro.
  • Un progetto Lakebase su AWS o Azure. Vedere Ottenere un database Postgres.

Cosa viene acquisito

Lakebase registra i segnali necessari per spiegare un database lento o in difficoltà, attraverso le seguenti tabelle:

Elementi acquisiti Nome della tabella
Sessioni attive ed eventi di attesa system.lakebase.active_session_history, system.lakebase.wait_event_counters
Piani di query e statistiche di esecuzione per query system.lakebase.plan_history, system.lakebase.pg_stat_statements_counters
Modifiche dello schema: cosa è cambiato, quando e da chi system.lakebase.ddl_history
Statistiche del database: dimensioni, righe lette e modificate e conteggi delle sessioni system.lakebase.database_counters, system.lakebase.database_gauges
Utilizzo delle risorse di calcolo: CPU, memoria, cache, connessioni system.lakebase.compute_counters, system.lakebase.compute_gauges
Messaggi di log grezzi di Postgres, incluso l'errore alla base di un guasto system.lakebase.postgres_logs

I registri vengono conservati per 7 giorni. Il resto di questa pagina documenta ogni colonna di ogni tabella. Per la posizione di queste tabelle rispetto alle altre tabelle di sistema, vedi riferimento alla tabella di sistema Lakebase.

Access

Le system.lakebase tabelle sono governate da Unity Catalog. Gli utenti con entrambi i ruoli di amministratore account e metastore possono leggere la telemetria e gestire l'accesso. Consulta Gestione dei privilegi in Unity Catalog.

Access si applica a livello di schema, quindi un utente che può leggere system.lakebase vede la telemetria per ogni progetto nell'account.

Testo della dichiarazione mascherata

Le colonne che contengono il testo dell'estratto conto restituiscono <REDACTED> a meno che tu non sia un amministratore dell'account o un membro del databricks_pii_access gruppo a livello account. Un amministratore dell'account crea e gestisce quel gruppo. Vedi Crea e gestisci il databricks_pii_access gruppo e Accedi testo di dichiarazioni mascherate.

Colonne comuni a ogni tabella

Ogni tabella seguente include queste colonne, che identificano la provenienza di una riga:

Column Type Description
project_id filo Il progetto Lakebase da cui proviene la riga.
branch_id filo Ramo da cui proviene la riga.
endpoint_id filo Endpoint di calcolo da cui proviene la riga.
compute_id filo Istanza di calcolo specifica. Ciò cambia quando un calcolo viene ridimensionato a zero e riprende.
ts TIMESTAMP Quando la riga è stata registrata.
compute_mode filo La modalità di calcolo al momento, ad esempio lettura/scrittura o sola lettura.

Le tabelle con nomi che terminano _counters in includono anche una previous_ts colonna, che contrassegna l'inizio dell'intervallo in cui si accumulano i valori di una riga. Questi sono valori cumulativi per tale intervallo, non letture temporizzato. Le tabelle che terminano _gauges in sono invece letture temporizzato e non previous_tshanno .

Le tabelle seguenti elencano solo le colonne oltre a quelle comuni.

Attività di sessione

Snapshot di ogni back-end attivo, campionato in modo continuo. Si tratta dello stesso modello di AWS Performance Insights o della cronologia delle sessioni attive (ASH) di Oracle: se una sessione esegue qualsiasi operazione, inclusa l'attesa, viene visualizzata qui.

active_session_history

Column Type Description
sample_seq LONG Posizione ordinale di questo esempio all'interno del relativo batch.
pid LONG ID processo del back-end.
datid LONG ID oggetto del database.
userid LONG ID oggetto del ruolo di connessione.
queryid LONG Identifica la query in esecuzione. Corrisponde queryid a in pg_stat_statements_counters.
wait_event_info LONG Codifica interna dell'evento di attesa.
wait_event_type filo Categoria dell'evento wait, ad esempio Timeout o Lock.
wait_event filo Evento di attesa specifico, ad esempio PgSleep.
backend_state LONG Stato del back-end, ad esempio attivo o inattiva.
backend_type LONG Tipo di processo back-end.
xact_age_ms LONG Durata dell'apertura della transazione corrente.
query_age_ms LONG Durata dell'esecuzione della query corrente.
blocking_pid LONG PiD di una sessione che blocca questa, se presente.
leader_pid LONG PID del leader di query parallela, se questo back-end è un ruolo di lavoro parallelo.
flags LONG Flag di stato interni.
plan_fingerprint LONG Collegamenti a una forma di piano specifica in plan_history.
appname_hash LONG Hash del nome dell'applicazione di connessione.

Eventi di attesa

Conteggi e tempo aggregati degli eventi di attesa, completando la visualizzazione per campione in active_session_history.

wait_event_counters

Column Type Description
wait_event_id LONG Codifica interna dell'evento di attesa.
wait_class_name filo Categoria dell'evento wait.
wait_event_name filo Evento di attesa specifico.
wait_event_count LONG Quante volte si è verificato questo evento di attesa nell'intervallo.
wait_event_time DOPPIO Tempo totale trascorso in questo evento di attesa durante l'intervallo.

Piani di query

Record per esecuzione di piani di query, inclusi i piani completi e le statistiche di archiviazione specifiche di Neon. Si tratta della tabella più dettagliata e, in genere, in cui un'analisi delle query lente finisce.

plan_history

Column Type Description
row_position LONG Posizione ordinale di questa riga all'interno del relativo batch.
analyze_enabled BOOLEAN Indica se il piano include statistiche di esecuzione effettive (EXPLAIN ANALYZE), non solo stime.
buffers_enabled BOOLEAN Indica se il piano include statistiche di utilizzo del buffer.
query_hash filo Hash che identifica il testo della query.
queryid LONG Identifica la query. Trova le corrispondenze queryid in pg_stat_statements_counters e active_session_history.
duration_ms DOPPIO Durata dell'esecuzione della query.
total_cost DOPPIO Costo stimato per la query.
plan_rows LONG Conteggio delle righe stimato del pianificatore.
actual_rows LONG Conteggio effettivo delle righe restituito.
plan_fingerprint LONG Identifica questa forma di piano specifica. Corrisponde plan_fingerprint a in active_session_history.
lock_wait_time_ms DOPPIO Tempo trascorso in attesa di blocchi.
planning_time_ms DOPPIO Tempo impiegato per la pianificazione della query, separato dall'esecuzione.
shared_blks_hit / shared_blks_read / shared_blks_dirtied / shared_blks_written LONG Attività cache del buffer condiviso per questa esecuzione.
local_blks_hit / local_blks_read / local_blks_dirtied / local_blks_written LONG Attività del buffer locale, per le tabelle temporanee.
temp_blks_read / temp_blks_written LONG Attività di file temporanei, ad esempio da un ordinamento o un hash di grandi dimensioni.
neon_getpage_count LONG Numero di richieste di pagina inviate al server di paging.
neon_file_cache_hits LONG Numero di pagine servite dalla cache dei file locale anziché dal server di paging.
neon_getpage_wait_us LONG Tempo impiegato per l'attesa nelle richieste di pagina del server di pagine, in microsecondi.
backend_pid LONG ID del processo back-end che ha eseguito questa query.
lock_wait_count LONG Numero di volte in cui l'esecuzione ha atteso un blocco.
userid / dbid LONG ID oggetto del ruolo e del database di connessione.
query_text filo Testo della query. Mascherato. Vedi testo della dichiarazione mascherata.
plan_json filo Piano di query completo, come JSON. Mascherato. Vedi testo della dichiarazione mascherata.
usename / datname filo Nomi del ruolo di connessione e del database.
application_name / client_addr filo Nome e indirizzo client dell'applicazione di connessione.
wait_events filo Eventi di attesa osservati durante questa esecuzione.
parameters filo Associare i parametri usati nella query, se presenti. Mascherato. Vedi testo della dichiarazione mascherata.
blocking_pids filo PID di sessioni che bloccavano l'esecuzione, se presenti.
neon_branch_id / neon_endpoint_id / neon_timeline_id filo Identificatori Neon interni per il ramo, l'endpoint e la sequenza temporale.
cpu_user_time_ms / cpu_sys_time_ms DOPPIO Tempo cpu utilizzato da questa esecuzione, suddiviso in tempo utente e di sistema.
voluntary_csw / involuntary_csw LONG Il contesto cambia durante l'esecuzione.
trace_id / span_id / trace_flags / service_name STRING/STRING/LONG/STRING Identificatori di traccia in stile OpenTelemetry, se la query faceva parte di una richiesta tracciata.
timeline_id LONG Identificatore interno della sequenza temporale.
truncated BOOLEAN Indica se i dati di questa riga (ad esempio, un piano di grandi dimensioni) sono stati troncati prima di essere scritti.

Statistiche query

Statistiche aggregate per query, generate dall'estensione standard pg_stat_statements .

pg_stat_statements_counters

Column Type Description
userid / dbid LONG ID oggetto del ruolo e del database di connessione.
queryid LONG Identifica la query. Trova le corrispondenze queryid in plan_history e active_session_history.
toplevel BOOLEAN Indica se questa riga è destinata a un'istruzione di primo livello, anziché un'istruzione nidificata all'interno di una funzione o una routine PL/pgSQL. Vedere la limitazione di PL/pgSQL.
query filo Testo della query. Mascherato. Vedi testo della dichiarazione mascherata.
calls LONG Numero di esecuzioni della query nell'intervallo.
plans LONG Numero di volte in cui la query è stata pianificata nell'intervallo.
rows LONG Totale righe restituite o interessate.
total_exec_time / total_plan_time DOPPIO Tempo totale impiegato per l'esecuzione e la pianificazione di questa query nell'intervallo.
shared_blks_hit / shared_blks_read / shared_blks_dirtied / shared_blks_written LONG Attività cache del buffer condiviso.
local_blks_hit / local_blks_read / local_blks_dirtied / local_blks_written LONG Attività del buffer locale, per le tabelle temporanee.
temp_blks_read / temp_blks_written LONG Attività file temporanea.
wal_bytes / wal_fpi / wal_records LONG Volume del log write-ahead generato da questa query.
jit_emission_count / jit_emission_time / jit_functions / jit_generation_time / jit_inlining_count / jit_inlining_time / jit_optimization_count / jit_optimization_time Mixed Statistiche di compilazione JIT (JUST-In-Time), se JIT è stato usato per questa query.

Modifiche agli schemi

Modifiche dello schema: cosa è cambiato, quando e da chi. Questo è ciò che Genie legge per tracciare un evento imprevisto a una modifica dello schema, sia da una distribuzione che da una modifica manuale.

ddl_history

Column Type Description
row_position LONG Posizione ordinale di questa riga all'interno del relativo batch.
command_tag filo Tipo di comando DDL, ad esempio ALTER TABLE.
object_type / object_name filo Tipo e nome dell'oggetto modificato.
schema_name filo Lo schema Postgres a cui appartiene l'oggetto.
query_text filo Istruzione DDL completa. Mascherato. Vedi testo della dichiarazione mascherata.
duration_ms DOPPIO Durata dell'esecuzione dell'istruzione DDL.
userid / usename LONG/STRING ID e nome dell'oggetto del ruolo di connessione.
application_name filo Nome dell'applicazione di connessione.
backend_pid LONG ID del processo back-end che ha eseguito l'istruzione.
dbid LONG ID oggetto del database.
search_path filo Percorso di ricerca della sessione al momento.
ddl_json filo Rappresentazione strutturata e analizzata dell'istruzione DDL. Mascherato. Vedi testo della dichiarazione mascherata.

Note

L'acquisizione DDL presenta un divario reale: una modifica apportata in base a una ripresa di calcolo da scale a zero può essere ignorata. Se una modifica dello schema non viene visualizzata qui anche se si sa che è successo, questo è il motivo più probabile. Vedere Limitazioni.

Log postgres

Messaggi di log Postgres non elaborati, incluso l'errore specifico dietro un errore.

postgres_logs

Column Type Description
sample_seq LONG Posizione ordinale di questa riga all'interno del relativo batch.
elevel LONG Codifica a livello di log interno.
severity filo Gravità del log, ad esempio ERROR o LOG.
sqlstate filo Codice di errore DI POSTGRES SQLSTATE, ad esempio 42703 per una colonna non definita.
backend_pid / leader_backend_pid LONG ID processo back-end e PID del responsabile di query paralleli, se applicabile.
userid / usename LONG/STRING ID e nome dell'oggetto del ruolo di connessione.
datid / datname LONG/STRING ID e nome dell'oggetto del database.
application_name / client_addr filo Nome e indirizzo client dell'applicazione di connessione.
schema_name / table_name / column_name / constraint_name / datatype_name filo Schema, tabella, colonna, vincolo o tipo di dati a cui fa riferimento l'errore, quando Postgres ne ha uno.
funcname filo Funzione in cui si è verificato l'errore, se applicabile.
filename / lineno STRING/LONG Il file di origine Postgres e la riga da cui ha avuto origine l'errore.
message filo Testo del messaggio di log.
detail / hint / context filo Dettagli aggiuntivi, correzione suggerita e contesto dell'errore, quando Postgres li contiene.
internalquery filo Query generata internamente correlata all'errore, se applicabile.
statement filo Istruzione che ha attivato questa voce di log. Mascherato. Vedi testo della dichiarazione mascherata.
truncated_mask LONG Indica quali campi, se presenti, sono stati troncati prima di essere scritti.

Note

I campi strutturati schema_name, table_namee column_name non vengono popolati per ogni tipo di errore. Un semplice errore di analisi della "colonna non esiste" (SQLSTATE 42703), ad esempio, li lascia vuoti anche se message denomina direttamente la colonna. Non fare affidamento su questi campi popolati. Controllare message prima di tutto.

Metriche di calcolo

Utilizzo delle risorse a livello di calcolo: CPU, memoria, I/O di rete e cache dei file locali (LFC), cache lato calcolo di Lakebase davanti al server di paging.

compute_counters

Column Type Description
backpressure_throttling_seconds DOPPIO Tempo impiegato dal livello di archiviazione per le scritture di limitazione in questo intervallo. Un valore diverso da zero indica che il volume di scrittura ha superato ciò che lo spazio di archiviazione può assorbire.
host_busiest_cpu_seconds / host_cpu_seconds DOPPIO Tempo cpu utilizzato, per il core più bussato e in totale.
host_disk_read_bytes / host_disk_written_bytes DOPPIO Volume di I/O su disco.
host_network_receive_bytes / host_network_transmit_bytes DOPPIO Volume di I/O di rete.
lfc_evictions / lfc_hits / lfc_misses / lfc_writes LONG Attività della cache dei file locali per questo intervallo.
replica_lfc_redo_evictions LONG Eliminazioni della cache dei file locali causate dal rollforward della replica, se questo calcolo è una replica di lettura.

compute_gauges

Column Type Description
current_lsn LONG Posizione corrente del log write-ahead.
replica_wal_replay_lsn / replica_wal_receive_lsn LONG Riesecuzione e ricezione di WAL, se questo calcolo è una replica di lettura.
max_connections LONG Limite di connessione configurato.
lfc_working_set_size_5m / lfc_working_set_size_15m / lfc_working_set_size_60m LONG Dimensioni stimate del set di lavoro negli ultimi 5, 15 e 60 minuti.
lfc_size_limit / lfc_allocated / lfc_used LONG Capacità della cache dei file locali e utilizzo corrente.
total_size_limit / total_size LONG Capacità di archiviazione complessiva e utilizzo corrente.
replication_lag_bytes / replication_lag_time_ms LONG/DOUBLE Ritardo replica, se questo calcolo è una replica di lettura.
host_logical_cpus / host_memory_total_bytes DOPPIO CPU e memoria di cui è stato effettuato il provisioning.

Metriche del database

Attività per database: righe modificate, transazioni, sessioni e integrità del vuoto. Questo è il percorso in cui vivono i segnali di blob di tabella e autovacuum.

database_counters

Column Type Description
datid / datname LONG/STRING ID e nome dell'oggetto del database.
active_time_ms / idle_in_transaction_time_ms / session_time_ms DOPPIO Tempo trascorso attivo, inattiva in una transazione aperta e connesso complessivamente.
deadlocks LONG Numero di deadlock rilevati.
rows_deleted / rows_fetched / rows_inserted / rows_returned / rows_updated LONG Attività a livello di riga per l'intervallo.
sessions_abandoned / sessions_established / sessions_fatal / sessions_killed LONG Conteggi del ciclo di vita della sessione.
shared_blks_hit / shared_blks_read LONG Attività cache del buffer condiviso.
xact_commit / xact_rollback LONG Transazioni di cui è stato eseguito il commit e il rollback.

database_gauges

Column Type Description
datid / datname LONG/STRING ID e nome dell'oggetto del database.
numbackends LONG Numero corrente di connessioni al database.
size LONG Dimensioni del database su disco.
oldest_frozen_xid_age / oldest_mxid_age LONG ID transazione e validità dell'ID multixact della riga meno recente di unfrozen. I valori crescenti sono il primo segnale di vuoto che cade dietro, ben prima che il bloat diventa visibile nelle dimensioni della tabella.

Limitations

Note

Le password vengono oscurate quando viene catturata un'affermazione, quindi una cattura CREATE ROLE legge PASSWORD '***'. La redazione dipende dal rilevare la password nell'istruzione, e un'istruzione distorta può sfuggire al rilevamento.

Azure Databricks raccomanda i ruoli OAuth, che autenticano le identità di Azure Databricks con i token e non lasciano alcuna password per digitare.

Si applicano le limitazioni seguenti:

  • COPY Le operazioni non sono registrate nella cronologia del piano di richiesta.

  • Una query eseguita all'interno di una funzione o procedura PL/pgSQL non viene rilevata nella telemetria a livello di query, a meno che non venga eseguita anche come istruzione di livello superiore. Il tracciamento delle istruzioni integrato in Postgres conta solo le istruzioni di primo livello per impostazione predefinita.

  • Branch e endpoint appaiono in telemetry and insights tramite ID interno (ad esempio, br-odd-mud-y2icrn1h), non tramite un nome visualizzato come "production". Incrocia l'ID nell'interfaccia di Lakebase se devi confermare a quale branch o endpoint si riferisce una riga di insight o tabella.

  • I GUC che abilitano la raccolta della telemetria potrebbero non essere propagati automaticamente a un compute esistente. Se la telemetria non appare dopo che l'anteprima è stata abilitata, collegati al progetto e controlla:

    SHOW neon_monitor.log_capture_enabled;
    SHOW databricks.o11y_exporter_enabled;
    

    Entrambi devono restituire on. Se restituisce off, riavviare l'endpoint di calcolo.

Configurazioni di osservabilità legacy

Prima che la telemetria passasse alle tabelle di sistema, si poteva creare una configurazione di osservabilità che catturasse la telemetria su un catalogo e uno schema nel proprio Unity Catalog e fornisse dashboard precostruite. Le configurazioni esistenti continuano a funzionare e i loro cruscotti restano disponibili. Non puoi più creare nuove configurazioni di osservabilità, e la cattura nelle tabelle di sistema non crea dashboard.

Passaggi successivi