Telemetría Lakebase en tablas de sistemas

Importante

Esta característica se encuentra en su versión beta. Para utilizarla, un administrador de espacio de trabajo debe activar la Observabilidad de Lakebase en las Tablas del Sistema desde la página de Previsualizaciones . Consulte Administrar versiones preliminares de Azure Databricks.

Lakebase captura su telemetría de observabilidad en el system.lakebase esquema, comenzando con señales avanzadas de Postgres. La captura es automática. Con esa vista previa activada, la telemetría aparece en estas tablas mientras el cálculo del proyecto se ejecuta. No hay configuración que crear, ni destino que elegir, ni credenciales que proporcionar. Insights y Genie leen las mismas tablas, y puedes consultarlas con cualquier herramienta de Azure Databricks.

Note

Los nombres de tabla y columna pueden cambiar antes de la disponibilidad general.

Requirements

¿Qué se captura?

Lakebase registra las señales que necesitas para explicar una base de datos lenta o defectuosa, a través de las siguientes tablas:

¿Qué se captura? Nombre de la tabla
Sesiones activas y eventos de espera system.lakebase.active_session_history, system.lakebase.wait_event_counters
Planes de consulta y estadísticas de ejecución por consulta system.lakebase.plan_history, system.lakebase.pg_stat_statements_counters
Cambios de esquema: qué ha cambiado, cuándo y por quién system.lakebase.ddl_history
Estadísticas de base de datos: tamaño, filas leídas y modificadas, y recuentos de sesiones system.lakebase.database_counters, system.lakebase.database_gauges
Uso de recursos de proceso: CPU, memoria, caché, conexiones system.lakebase.compute_counters, system.lakebase.compute_gauges
Mensajes de registro de Postgres sin procesar, incluido el error subyacente a un fallo system.lakebase.postgres_logs

Los registros se conservan durante 7 días. El resto de esta página documenta cada columna de cada tabla. Para ver dónde se sitúan estas tablas entre las demás tablas del sistema, véase la referencia de la tabla del sistema Lakebase.

Access

Las system.lakebase tablas están gobernadas por el Catálogo Unity. Los usuarios con los roles de administrador de cuenta y administrador de metastore pueden leer la telemetría y gestionar el acceso a ella. Consulte Administración de privilegios en Unity Catalog.

Access se aplica a nivel de esquema, así que un usuario que puede leer system.lakebase ve la telemetría de cada proyecto en la cuenta.

Texto de la declaración enmascarada

Las columnas que contienen el texto del extracto regresan <REDACTED> , a menos que seas administrador de cuenta o miembro del databricks_pii_access grupo a nivel de cuenta. Un administrador de cuenta crea y gestiona ese grupo. Consulta Crear y gestionar el databricks_pii_access grupo y acceder al texto de la declaración enmascarada.

Columnas comunes a cada tabla

Cada tabla siguiente incluye estas columnas, que identifican de dónde procede una fila:

Columna Tipo Description
project_id STRING El proyecto Lakebase del que procede la fila.
branch_id STRING Rama de la que procede la fila.
endpoint_id STRING Punto de conexión de proceso del que procede la fila.
compute_id STRING Instancia de proceso específica. Esto cambia cuando un proceso se escala a cero y se reanuda.
ts TIMESTAMP Cuando se registró la fila.
compute_mode STRING El modo del proceso en el momento, por ejemplo, de lectura y escritura o de solo lectura.

Las tablas con nombres que terminan en _counters también incluyen una previous_ts columna, lo que marca el inicio del intervalo en el que se acumulan los valores de una fila. Estos son valores acumulativos para ese intervalo, no lecturas a un momento dado. Las tablas que terminan en _gauges son lecturas a un momento dado y no previous_tstienen .

Las tablas siguientes enumeran solo las columnas más allá de estas comunes.

Actividad de sesión

Instantánea de cada back-end activo, muestreada continuamente. Este es el mismo patrón que AWS Performance Insights o el historial de sesiones activas de Oracle (ASH): si una sesión está haciendo algo, incluida la espera, se muestra aquí.

active_session_history

Columna Tipo Description
sample_seq LONG Posición ordinal de este ejemplo dentro de su lote.
pid LONG Identificador de proceso del back-end.
datid LONG Identificador de objeto de la base de datos.
userid LONG Identificador de objeto del rol de conexión.
queryid LONG Identifica la consulta que se está ejecutando. Coincide queryid con en pg_stat_statements_counters.
wait_event_info LONG Codificación interna del evento de espera.
wait_event_type STRING Categoría del evento de espera, por ejemplo Timeout , o Lock.
wait_event STRING Evento de espera específico, por ejemplo PgSleep.
backend_state LONG Estado del back-end, por ejemplo, activo o inactivo.
backend_type LONG Tipo de proceso de back-end.
xact_age_ms LONG Cuánto tiempo se ha abierto la transacción actual.
query_age_ms LONG Cuánto tiempo se ha ejecutado la consulta actual.
blocking_pid LONG PiD de una sesión que bloquea esta, si existe.
leader_pid LONG PID del líder de consultas en paralelo, si este back-end es un trabajo paralelo.
flags LONG Marcas de estado internas.
plan_fingerprint LONG Vínculos a una forma de plan específica en plan_history.
appname_hash LONG Hash del nombre de la aplicación de conexión.

Eventos de espera

Recuentos de eventos de espera agregados y tiempo, complementando la vista por ejemplo en active_session_history.

wait_event_counters

Columna Tipo Description
wait_event_id LONG Codificación interna del evento de espera.
wait_class_name STRING Categoría del evento de espera.
wait_event_name STRING Evento de espera específico.
wait_event_count LONG Cuántas veces se produjo este evento de espera en el intervalo.
wait_event_time DOUBLE Tiempo total invertido en este evento de espera durante el intervalo.

Planes de consulta

Un registro por ejecución de los planes de consulta, incluidas las estadísticas de almacenamiento completas y específicas de Neon. Esta es la tabla más detallada y, normalmente, donde termina una investigación de consulta lenta.

plan_history

Columna Tipo Description
row_position LONG Posición ordinal de esta fila dentro de su lote.
analyze_enabled BOOLEAN Si el plan incluye estadísticas de ejecución reales (EXPLAIN ANALYZE), no solo estimaciones.
buffers_enabled BOOLEAN Si el plan incluye estadísticas de uso del búfer.
query_hash STRING Hash que identifica el texto de la consulta.
queryid LONG Identifica la consulta. Coincide queryid con en pg_stat_statements_counters y active_session_history.
duration_ms DOUBLE Cuánto tiempo tardó la consulta en ejecutarse.
total_cost DOUBLE Costo estimado del planificador para la consulta.
plan_rows LONG Recuento estimado de filas del planificador.
actual_rows LONG Número real de filas devuelto.
plan_fingerprint LONG Identifica esta forma de plan específica. Coincide plan_fingerprint con en active_session_history.
lock_wait_time_ms DOUBLE Tiempo dedicado a esperar en bloqueos.
planning_time_ms DOUBLE Tiempo dedicado a planear la consulta, independiente de la ejecución.
shared_blks_hit / shared_blks_read / shared_blks_dirtied / shared_blks_written LONG Actividad de caché de búfer compartido para esta ejecución.
local_blks_hit / local_blks_read / local_blks_dirtied / local_blks_written LONG Actividad de búfer local para tablas temporales.
temp_blks_read / temp_blks_written LONG Actividad de archivo temporal, por ejemplo, de una ordenación o hash grandes.
neon_getpage_count LONG Número de solicitudes de página enviadas al servidor de páginas.
neon_file_cache_hits LONG Número de páginas que se sirven desde la caché de archivos local en lugar del servidor de páginas.
neon_getpage_wait_us LONG Tiempo dedicado a esperar en las solicitudes de página pageserver, en microsegundos.
backend_pid LONG Identificador del proceso de back-end que ejecutó esta consulta.
lock_wait_count LONG Número de veces que esta ejecución ha esperado en un bloqueo.
userid / dbid LONG Identificadores de objeto de la base de datos y del rol de conexión.
query_text STRING Texto de la consulta. Enmascarado. Ver texto de la declaración enmascarada.
plan_json STRING Plan de consulta completo, como JSON. Enmascarado. Ver texto de la declaración enmascarada.
usename / datname STRING Nombres de la base de datos y del rol de conexión.
application_name / client_addr STRING El nombre y la dirección de cliente de la aplicación de conexión.
wait_events STRING Eventos de espera observados durante esta ejecución.
parameters STRING Enlazar parámetros usados en la consulta, si los hay. Enmascarado. Ver texto de la declaración enmascarada.
blocking_pids STRING PID de sesiones que bloquearon esta ejecución, si las hubiera.
neon_branch_id / neon_endpoint_id / neon_timeline_id STRING Identificadores internos de Neon para la rama, el punto de conexión y la escala de tiempo.
cpu_user_time_ms / cpu_sys_time_ms DOUBLE Tiempo de CPU consumido por esta ejecución, dividido en tiempo de usuario y sistema.
voluntary_csw / involuntary_csw LONG El contexto cambia durante esta ejecución.
trace_id / span_id / trace_flags / service_name STRING/STRING/LONG/STRING Identificadores de seguimiento de estilo OpenTelemetry, si la consulta formaba parte de una solicitud rastreada.
timeline_id LONG Identificador de escala de tiempo interno.
truncated BOOLEAN Si los datos de esta fila (por ejemplo, un plan grande) se truncaron antes de escribirse.

Estadísticas de consultas

Estadísticas agregadas por consulta, procedentes de la extensión estándar pg_stat_statements .

pg_stat_statements_counters

Columna Tipo Description
userid / dbid LONG Identificadores de objeto de la base de datos y del rol de conexión.
queryid LONG Identifica la consulta. Coincide queryid con en plan_history y active_session_history.
toplevel BOOLEAN Si esta fila es para una instrucción de nivel superior, en lugar de una anidada dentro de una función o procedimiento PL/pgSQL. Consulte la limitación de PL/pgSQL.
query STRING Texto de la consulta. Enmascarado. Ver texto de la declaración enmascarada.
calls LONG Número de veces que se ejecutó esta consulta en el intervalo.
plans LONG Número de veces que esta consulta se planeó en el intervalo.
rows LONG Total de filas devueltas o afectadas.
total_exec_time / total_plan_time DOUBLE Tiempo total dedicado a ejecutar y planear esta consulta en el intervalo.
shared_blks_hit / shared_blks_read / shared_blks_dirtied / shared_blks_written LONG Actividad de caché de búfer compartido.
local_blks_hit / local_blks_read / local_blks_dirtied / local_blks_written LONG Actividad de búfer local para tablas temporales.
temp_blks_read / temp_blks_written LONG Actividad de archivo temporal.
wal_bytes / wal_fpi / wal_records LONG Volumen de registro de escritura previa generado por esta consulta.
jit_emission_count / jit_emission_time / jit_functions / jit_generation_time / jit_inlining_count / jit_inlining_time / jit_optimization_count / jit_optimization_time Mixto Estadísticas de compilación JIT (Just-In-Time), si se usó JIT para esta consulta.

Cambios en los esquemas

Cambios de esquema: qué ha cambiado, cuándo y por quién. Esto es lo que Genie lee para realizar un seguimiento de un incidente a un cambio de esquema, ya sea desde una implementación o una edición manual.

ddl_history

Columna Tipo Description
row_position LONG Posición ordinal de esta fila dentro de su lote.
command_tag STRING Tipo de comando DDL, por ejemplo ALTER TABLE.
object_type / object_name STRING Tipo y nombre del objeto que cambió.
schema_name STRING Esquema postgres al que pertenece el objeto.
query_text STRING Instrucción DDL completa. Enmascarado. Ver texto de la declaración enmascarada.
duration_ms DOUBLE Cuánto tiempo tardó la instrucción DDL en ejecutarse.
userid / usename LONG/STRING Identificador y nombre del objeto del rol de conexión.
application_name STRING Nombre de la aplicación de conexión.
backend_pid LONG Identificador de proceso de back-end que ejecutó la instrucción .
dbid LONG Identificador de objeto de la base de datos.
search_path STRING Ruta de acceso de búsqueda de la sesión en el momento.
ddl_json STRING Representación estructurada y analizada de la instrucción DDL. Enmascarado. Ver texto de la declaración enmascarada.

Note

La captura DDL tiene una brecha real: se puede perder un cambio realizado justo alrededor de una reanudación de proceso de escala a cero. Si un cambio de esquema no aparece aquí aunque sepa que ha ocurrido, es la razón más probable. Consulte Limitaciones.

Registros de Postgres

Mensajes de registro de Postgres sin procesar, incluido el error específico detrás de un error.

postgres_logs

Columna Tipo Description
sample_seq LONG Posición ordinal de esta fila dentro de su lote.
elevel LONG Codificación de nivel de registro interno.
severity STRING Gravedad del registro, por ejemplo ERROR , o LOG.
sqlstate STRING Código de error de Postgres SQLSTATE, por ejemplo 42703 , para una columna no definida.
backend_pid / leader_backend_pid LONG El identificador del proceso de back-end y su PID del líder de consulta en paralelo, si procede.
userid / usename LONG/STRING Identificador y nombre del objeto del rol de conexión.
datid / datname LONG/STRING Identificador y nombre del objeto de la base de datos.
application_name / client_addr STRING El nombre y la dirección de cliente de la aplicación de conexión.
schema_name / table_name / column_name / constraint_name / datatype_name STRING El esquema, la tabla, la columna, la restricción o el tipo de datos al que hace referencia el error, cuando Postgres tiene uno.
funcname STRING Función en la que se produjo el error, si procede.
filename / lineno STRING/LONG El archivo de origen de Postgres y la línea del error se originó.
message STRING Texto del mensaje de registro.
detail / hint / context STRING Detalles adicionales, una corrección sugerida y el contexto del error, cuando Postgres los tiene.
internalquery STRING Una consulta generada internamente relacionada con el error, si procede.
statement STRING Instrucción que desencadenó esta entrada de registro. Enmascarado. Ver texto de la declaración enmascarada.
truncated_mask LONG Indica qué campos, si los hay, se truncaron antes de escribirse.

Note

Los campos estructurados schema_name, table_namey column_name no se rellenan para cada tipo de error. Un error de análisis de "columna no existe" sin formato (SQLSTATE 42703), por ejemplo, los deja vacíos aunque message asigne nombres a la columna directamente. No confíe en que estos campos se rellenen. Compruebe message primero.

Métricas de cálculo

Uso de recursos de nivel de proceso: CPU, memoria, E/S de disco y red, y caché de archivos local (LFC), caché del lado proceso de Lakebase delante del servidor de páginas.

compute_counters

Columna Tipo Description
backpressure_throttling_seconds DOUBLE Tiempo que la capa de almacenamiento ha dedicado a las escrituras de limitación en este intervalo. Un valor distinto de cero significa que el volumen de escritura superó lo que el almacenamiento puede absorber.
host_busiest_cpu_seconds / host_cpu_seconds DOUBLE Tiempo de CPU consumido, para el núcleo más ocupado y en total.
host_disk_read_bytes / host_disk_written_bytes DOUBLE Volumen de E/S de disco.
host_network_receive_bytes / host_network_transmit_bytes DOUBLE Volumen de E/S de red.
lfc_evictions / lfc_hits / lfc_misses / lfc_writes LONG Actividad de caché de archivos local para este intervalo.
replica_lfc_redo_evictions LONG Las expulsiones de caché de archivos locales causadas por la rehacer de réplica, si este proceso es una réplica de lectura.

compute_gauges

Columna Tipo Description
current_lsn LONG Posición actual del registro de escritura anticipada.
replica_wal_replay_lsn / replica_wal_receive_lsn LONG WAL reproduce y recibe posiciones, si este proceso es una réplica de lectura.
max_connections LONG Límite de conexión configurado.
lfc_working_set_size_5m / lfc_working_set_size_15m / lfc_working_set_size_60m LONG Tamaño estimado del conjunto de trabajo durante los últimos 5, 15 y 60 minutos.
lfc_size_limit / lfc_allocated / lfc_used LONG Capacidad de caché de archivos local y uso actual.
total_size_limit / total_size LONG Capacidad de almacenamiento general y uso actual.
replication_lag_bytes / replication_lag_time_ms LONG/DOUBLE Retraso de replicación, si este proceso es una réplica de lectura.
host_logical_cpus / host_memory_total_bytes DOUBLE Cpu y memoria aprovisionadas del proceso.

Métricas de base de datos

Actividad por base de datos: filas modificadas, transacciones, sesiones y estado de vacío. Aquí es donde se activan las señales de sobredimensionamiento de la tabla y autovacuo.

database_counters

Columna Tipo Description
datid / datname LONG/STRING Identificador y nombre del objeto de la base de datos.
active_time_ms / idle_in_transaction_time_ms / session_time_ms DOUBLE Tiempo invertido activo, inactivo en una transacción abierta y conectado en general.
deadlocks LONG Número de interbloqueos detectados.
rows_deleted / rows_fetched / rows_inserted / rows_returned / rows_updated LONG Actividad de nivel de fila para el intervalo.
sessions_abandoned / sessions_established / sessions_fatal / sessions_killed LONG Recuentos del ciclo de vida de la sesión.
shared_blks_hit / shared_blks_read LONG Actividad de caché de búfer compartido.
xact_commit / xact_rollback LONG Transacciones confirmadas y reviertes.

database_gauges

Columna Tipo Description
datid / datname LONG/STRING Identificador y nombre del objeto de la base de datos.
numbackends LONG Número actual de conexiones a esta base de datos.
size LONG Tamaño en disco de la base de datos.
oldest_frozen_xid_age / oldest_mxid_age LONG Identificador de transacción y antigüedad del identificador multixact de la fila desfrozen más antigua. Los valores ascendentes son la señal más temprana de vacío que cae atrás, bien antes de que el hinchazón se vea en el tamaño de la tabla.

Limitaciones

Note

Las contraseñas se tachan cuando se captura una declaración, por lo que una capturada CREATE ROLE lee PASSWORD '***'. La redacción depende de detectar la contraseña en la instrucción, y una declaración mal formada puede pasar desapercibida.

Azure Databricks recomienda roles OAuth, que autentican las identidades de Azure Databricks con tokens y no dejan contraseña para escribir.

Se presentan las siguientes limitaciones:

  • COPY Las operaciones no se capturan en el historial del plan de consulta.

  • Una consulta ejecutada dentro de una función o procedimiento PL/pgSQL no se captura en la telemetría de nivel de consulta a menos que también se ejecute como una instrucción de nivel superior. De forma predeterminada, el seguimiento de instrucciones propias de Postgres solo cuenta las instrucciones de nivel superior.

  • Las ramas y endpoints aparecen en telemetría e insights por ID interno (por ejemplo, br-odd-mud-y2icrn1h), no por un nombre de visualización como "production". Cruza el ID en la interfaz de Lakebase si debes confirmar a qué rama o endpoint se refiere una fila de insight o tabla.

  • Las GUC que habilitan la captura de telemetría podrían no propagarse automáticamente a una instancia de cálculo existente. Si la telemetría no aparece después de activar la vista previa, conéctate al proyecto y comprueba:

    SHOW neon_monitor.log_capture_enabled;
    SHOW databricks.o11y_exporter_enabled;
    

    Ambos deben devolver on. Si cualquiera de los dos devuelve off, reinicie el extremo de proceso.

Configuraciones heredadas de observabilidad

Antes de que la telemetría pasara a las tablas del sistema, podías crear una configuración de observabilidad que capturara la telemetría en un catálogo y esquema en tu propio Catálogo de Unity y proporcionara paneles preconstruidos. Las configuraciones existentes siguen funcionando y sus paneles siguen disponibles. Ya no puedes crear nuevas configuraciones de observabilidad, y la captura en tablas de sistema no crea paneles.

Pasos siguientes