Telemetria Lakebase em tabelas de sistema

Important

Este recurso está em versão Beta. Para o utilizar, um administrador de espaço de trabalho deve ativar a Observabilidade do Lakebase nas Tabelas do Sistema a partir da página de Pré-visualizações . Ver Gerir as pré-visualizações de Azure Databricks.

O Lakebase capta a sua telemetria de observabilidade no system.lakebase esquema, começando pelos sinais avançados do Postgres. A captura é automática. Com essa pré-visualização ativada, a telemetria fica nestas tabelas enquanto o cálculo do projeto é executado. Não há configuração a criar, nem destino a escolher, nem credenciais a fornecer. O Insights e o Genie leem as mesmas tabelas, e podes consultá-las com qualquer ferramenta do Azure Databricks.

Note

Os nomes das tabelas e colunas podem mudar antes da disponibilidade geral.

Requirements

  • A Observabilidade do Lakebase na pré-visualização das Tabelas do Sistema ativada para o seu espaço de trabalho.
  • Um projeto Lakebase na AWS ou Azure. Veja Obter uma base de dados Postgres.

O que é capturado

O Lakebase regista os sinais necessários para explicar uma base de dados lenta ou com falhas, através das seguintes tabelas:

O que foi captado Nome da tabela
Sessões ativas e eventos de espera system.lakebase.active_session_history, system.lakebase.wait_event_counters
Planos de consulta e estatísticas de execução por consulta system.lakebase.plan_history, system.lakebase.pg_stat_statements_counters
Alterações de esquema: o que mudou, quando e por quem system.lakebase.ddl_history
Estatísticas da base de dados: tamanho, linhas lidas e modificadas, e contagem de sessões system.lakebase.database_counters, system.lakebase.database_gauges
Utilização de recursos computacionais: CPU, memória, cache, ligações system.lakebase.compute_counters, system.lakebase.compute_gauges
Mensagens brutas do registo Postgres, incluindo o erro por detrás de uma falha system.lakebase.postgres_logs

Os registos são mantidos durante 7 dias. O resto desta página documenta cada coluna de cada tabela. Para saber onde estas tabelas se situam em relação às outras tabelas do sistema, veja a referência da tabela do sistema Lakebase.

Access

As system.lakebase tabelas são governadas pelo Unity Catalog. Os utilizadores com funções de administrador de conta e de administrador da metastore podem ler a telemetria e gerir o acesso a ela. Consulte Gerenciar privilégios no Catálogo Unity.

O Access aplica-se ao nível do esquema, por isso um utilizador que consegue ler system.lakebase vê a telemetria de cada projeto na conta.

Texto da declaração mascarada

Colunas que contêm o texto do extrato retornam <REDACTED> , a menos que seja administrador de conta ou membro do databricks_pii_access grupo ao nível da conta. Um administrador de conta cria e gere esse grupo. Veja Criar e gerir o databricks_pii_access grupo e aceder ao texto da declaração mascarada.

Colunas comuns a todas as tabelas

Cada tabela abaixo inclui estas colunas, que identificam de onde veio uma linha:

Coluna Tipo Description
project_id STRING O projeto Lakebase de onde veio a polícia.
branch_id STRING O ramo de onde veio a fila.
endpoint_id STRING O endpoint de cálculo de onde a linha veio.
compute_id STRING A instância de computação específica. Isto muda quando um cálculo escala para zero e recomeça.
ts TIMESTAMP Quando a discussão foi gravada.
compute_mode STRING O modo de computação na altura, por exemplo, leitura-escrita ou só leitura.

Tabelas com nomes que terminam em _counters incluem também uma previous_ts coluna, marcando o início do intervalo sobre o qual os valores de uma linha acumulados. Estes são valores cumulativos para esse intervalo, não leituras em ponto no tempo. As tabelas que terminam em _gauges são leituras em ponto no tempo, e não previous_tstêm .

As tabelas abaixo listam apenas as colunas para além destas comuns.

Atividade da sessão

Um snapshot de cada backend ativo, amostrado continuamente. Este é o mesmo padrão do AWS Performance Insights ou do Histórico Ativo de Sessões (ASH) da Oracle: se uma sessão estiver a fazer algo, incluindo esperar, aparece aqui.

active_session_history

Coluna Tipo Description
sample_seq LONG Posição ordinal desta amostra dentro do seu lote.
pid LONG O ID do processo do backend.
datid LONG O ID do objeto da base de dados.
userid LONG O ID do objeto do papel de ligação.
queryid LONG Identifica a consulta que está a ser executada. Coincide queryid em pg_stat_statements_counters.
wait_event_info LONG Codificação interna do evento de espera.
wait_event_type STRING A categoria do evento de espera, por exemplo Timeout ou Lock.
wait_event STRING O evento específico de espera, por PgSleepexemplo.
backend_state LONG O estado do backend, por exemplo, ativo ou inativo.
backend_type LONG O tipo de processo backend.
xact_age_ms LONG Há quanto tempo a transação atual está aberta.
query_age_ms LONG Há quanto tempo a consulta atual está a funcionar.
blocking_pid LONG O PID de uma sessão a bloquear esta, se é que existe.
leader_pid LONG O PID do líder da consulta paralela, se este backend for um trabalhador paralelo.
flags LONG Bandeiras de estado internas.
plan_fingerprint LONG Ligações para uma forma de planta específica em plan_history.
appname_hash LONG Um hash do nome da aplicação ligada.

Eventos de espera

Contagens agregadas de eventos de espera e tempo, complementando a vista por amostra em active_session_history.

wait_event_counters

Coluna Tipo Description
wait_event_id LONG Codificação interna do evento de espera.
wait_class_name STRING A categoria do evento de espera.
wait_event_name STRING O evento específico de espera.
wait_event_count LONG Quantas vezes este evento de espera ocorreu nesse intervalo.
wait_event_time DUPLO Tempo total passado neste evento de espera durante o intervalo.

Planos de consulta

Um registo por execução dos planos de consulta, incluindo o plano completo e estatísticas de armazenamento específicas do Neon. Esta é a tabela mais detalhada, e normalmente onde termina uma investigação de consulta lenta.

plan_history

Coluna Tipo Description
row_position LONG Posição ordinal desta linha dentro do seu lote.
analyze_enabled BOOLEAN Se o plano inclui estatísticas reais de execução (EXPLAIN ANALYZE), e não apenas estimativas.
buffers_enabled BOOLEAN Se o plano inclui estatísticas de utilização do buffer.
query_hash STRING Hash que identifica o texto da consulta.
queryid LONG Identifica a consulta. Corresponde queryid em pg_stat_statements_counters e active_session_history.
duration_ms DUPLO Quanto tempo demorou a ser executada a consulta.
total_cost DUPLO O custo estimado pelo planeador para a consulta.
plan_rows LONG A estimativa da contagem de linhas do planeador.
actual_rows LONG A contagem real das linhas foi devoluída.
plan_fingerprint LONG Identifica esta forma específica do plano. Coincide plan_fingerprint em active_session_history.
lock_wait_time_ms DUPLO Tempo passado à espera das fechaduras.
planning_time_ms DUPLO Tempo gasto a planear a consulta, separado da execução.
shared_blks_hit / shared_blks_read / shared_blks_dirtied / shared_blks_written LONG Atividade de cache de buffer partilhada para esta execução.
local_blks_hit / local_blks_read / local_blks_dirtied / local_blks_written LONG Atividade de buffer local, para tabelas temporárias.
temp_blks_read / temp_blks_written LONG Atividade temporária de ficheiros, por exemplo, a partir de uma ordenação ou hash grande.
neon_getpage_count LONG Número de pedidos de página enviados ao servidor de páginas.
neon_file_cache_hits LONG Número de páginas servidas a partir da cache local de ficheiros em vez do servidor de páginas.
neon_getpage_wait_us LONG Tempo gasto à espera de pedidos de página do pageserver, em microssegundos.
backend_pid LONG O ID do processo backend que executou esta consulta.
lock_wait_count LONG Várias vezes esta execução esperou numa fechadura.
userid / dbid LONG Os IDs dos objetos do papel de ligação e da base de dados.
query_text STRING O texto da consulta. Mascarado. Ver texto da declaração Mascarada.
plan_json STRING O plano completo da consulta, em JSON. Mascarado. Ver texto da declaração Mascarada.
usename / datname STRING Os nomes dos papéis ligados e da base de dados.
application_name / client_addr STRING O nome da aplicação de ligação e o endereço do cliente.
wait_events STRING Aguarde os eventos observados durante esta execução.
parameters STRING Atribuir parâmetros usados na consulta, se existirem. Mascarado. Ver texto da declaração Mascarada.
blocking_pids STRING PIDs de sessões que bloquearam esta execução, se é que houve alguma.
neon_branch_id / neon_endpoint_id / neon_timeline_id STRING Identificadores internos de Neon para o ramo, ponto final e linha temporal.
cpu_user_time_ms / cpu_sys_time_ms DUPLO O tempo de CPU consumido por esta execução, dividido em tempo de utilizador e de sistema.
voluntary_csw / involuntary_csw LONG O contexto muda durante esta execução.
trace_id / span_id / trace_flags / service_name CORDA / CORDA / LONGA / CORDA Identificadores de rastreamento ao estilo OpenTelemetry, se a consulta fizesse parte de um pedido rastreado.
timeline_id LONG Identificador interno da linha temporal.
truncated BOOLEAN Se os dados desta linha (por exemplo, um plano grande) foram truncados antes de serem escritos.

Estatísticas de consultas

Estatísticas agregadas por consulta, provenientes da extensão padrão pg_stat_statements .

pg_stat_statements_counters

Coluna Tipo Description
userid / dbid LONG Os IDs dos objetos do papel de ligação e da base de dados.
queryid LONG Identifica a consulta. Corresponde queryid em plan_history e active_session_history.
toplevel BOOLEAN Se esta linha é para uma instrução de topo, em vez de uma aninhada dentro de uma função ou procedimento PL/pgSQL. Veja a limitação PL/pgSQL.
query STRING O texto da consulta. Mascarado. Ver texto da declaração Mascarada.
calls LONG Número de vezes que esta consulta foi executada no intervalo.
plans LONG Número de vezes que esta consulta foi planeada nesse intervalo.
rows LONG Total de linhas retornadas ou afetadas.
total_exec_time / total_plan_time DUPLO Tempo total gasto a executar e planear esta consulta nesse intervalo.
shared_blks_hit / shared_blks_read / shared_blks_dirtied / shared_blks_written LONG Atividade do buffer partilhado.
local_blks_hit / local_blks_read / local_blks_dirtied / local_blks_written LONG Atividade de buffer local, para tabelas temporárias.
temp_blks_read / temp_blks_written LONG Atividade temporária de ficheiros.
wal_bytes / wal_fpi / wal_records LONG Volume de registo de write-ahead gerado 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 Mixed Estatísticas de compilação JIT (just-in-time), se JIT foi usado para esta consulta.

Alterações de esquema

Alterações de esquema: o que mudou, quando e por quem. Isto é o que o Genie lê para rastrear um incidente até uma alteração de esquema, seja de uma implementação ou de uma edição manual.

ddl_history

Coluna Tipo Description
row_position LONG Posição ordinal desta linha dentro do seu lote.
command_tag STRING O tipo de comando DDL, por ALTER TABLEexemplo .
object_type / object_name STRING O tipo e o nome do objeto que mudou.
schema_name STRING O esquema Postgres a que o objeto pertence.
query_text STRING A declaração completa do DDL. Mascarado. Ver texto da declaração Mascarada.
duration_ms DUPLO Quanto tempo demorou a ser publicada a declaração DDL.
userid / usename LONGO / CORDA O ID do objeto e o nome do papel de ligação.
application_name STRING O nome da aplicação de ligação.
backend_pid LONG O ID do processo backend que executava a instrução.
dbid LONG O ID do objeto da base de dados.
search_path STRING O percurso de pesquisa da sessão na altura.
ddl_json STRING Uma representação estruturada e analisada da instrução DDL. Mascarado. Ver texto da declaração Mascarada.

Note

A captura DDL tem uma lacuna real: uma alteração feita mesmo à volta de um cálculo que retoma da escala para zero pode passar despercebida. Se uma alteração no esquema não aparecer aqui, mesmo sabendo que aconteceu, essa é a razão mais provável. Consulte Limitações.

Registos Postgres

Mensagens brutas do registo Postgres, incluindo o erro específico por detrás de uma falha.

postgres_logs

Coluna Tipo Description
sample_seq LONG Posição ordinal desta linha dentro do seu lote.
elevel LONG Codificação interna ao nível do log.
severity STRING A gravidade logarítmica, por exemplo ERROR ou LOG.
sqlstate STRING O código de erro Postgres SQLSTATE, por exemplo 42703 , para uma coluna indefinida.
backend_pid / leader_backend_pid LONG O ID do processo backend e o PID do líder da consulta paralela, se aplicável.
userid / usename LONGO / CORDA O ID do objeto e o nome do papel de ligação.
datid / datname LONGO / CORDA O ID do objeto e o nome da base de dados.
application_name / client_addr STRING O nome da aplicação de ligação e o endereço do cliente.
schema_name / table_name / column_name / constraint_name / datatype_name STRING O esquema, tabela, coluna, restrição ou tipo de dado referenciado pelo erro, quando o Postgres tem um.
funcname STRING A função em que o erro ocorreu, se aplicável.
filename / lineno CORDA / LONGO O ficheiro fonte e a linha do Postgres de onde o erro se originou.
message STRING O texto da mensagem do registo.
detail / hint / context STRING Detalhes adicionais, uma correção sugerida e o contexto do erro, quando o Postgres os tem.
internalquery STRING Uma consulta gerada internamente relacionada com o erro, se aplicável.
statement STRING A afirmação que desencadeou esta entrada no registo. Mascarado. Ver texto da declaração Mascarada.
truncated_mask LONG Indica quais os campos, se algum, foram truncados antes de serem escritos.

Note

Os campos estruturados schema_name, table_name, e column_name não estão preenchidos para todos os tipos de erro. Um erro simples de análise "coluna não existe" (SQLSTATE 42703), por exemplo, deixa-os vazios mesmo que message nomeie diretamente a coluna. Não confie que estes campos estejam povoados. Confirma message primeiro.

Métricas de computação

Utilização de recursos ao nível de computação: CPU, memória, I/O de disco e rede, e a cache local de ficheiros (LFC), a cache do lado de computação do Lakebase em frente ao pageserver.

compute_counters

Coluna Tipo Description
backpressure_throttling_seconds DUPLO O tempo que a camada de armazenamento passa a limitar a escrita neste intervalo. Um valor diferente de zero significa que o volume de escrita excedeu o que o armazenamento pode absorver.
host_busiest_cpu_seconds / host_cpu_seconds DUPLO Tempo consumido pela CPU, para o núcleo mais ocupado e no total.
host_disk_read_bytes / host_disk_written_bytes DUPLO Volume de E/S do disco.
host_network_receive_bytes / host_network_transmit_bytes DUPLO Volume de E/S de rede.
lfc_evictions / lfc_hits / lfc_misses / lfc_writes LONG Atividade local da cache de ficheiros para este intervalo.
replica_lfc_redo_evictions LONG Despejos da cache local de ficheiros causados por refazer réplicas, se este cálculo for uma réplica de leitura.

compute_gauges

Coluna Tipo Description
current_lsn LONG A posição atual do registo de escrita antecipada.
replica_wal_replay_lsn / replica_wal_receive_lsn LONG WAL replay e posição de receção, se este cálculo for uma réplica de leitura.
max_connections LONG O limite de ligação configurado.
lfc_working_set_size_5m / lfc_working_set_size_15m / lfc_working_set_size_60m LONG Tamanho estimado do conjunto de trabalho nos últimos 5, 15 e 60 minutos.
lfc_size_limit / lfc_allocated / lfc_used LONG Capacidade da cache local de ficheiros e utilização atual.
total_size_limit / total_size LONG Capacidade total de armazenamento e uso atual.
replication_lag_bytes / replication_lag_time_ms LONGO / DUPLO Atraso de replicação, se este cálculo for uma réplica de leitura.
host_logical_cpus / host_memory_total_bytes DUPLO A CPU e a memória provisionadas do computo.

Métricas de base de dados

Atividade por base de dados: linhas alteradas, transações, sessões e saúde do vácuo. É aqui que vivem os sinais de inchaço da mesa e autovácuo.

database_counters

Coluna Tipo Description
datid / datname LONGO / CORDA O ID do objeto e o nome da base de dados.
active_time_ms / idle_in_transaction_time_ms / session_time_ms DUPLO Tempo passado ativo, ocioso numa transação aberta e ligado no geral.
deadlocks LONG Número de bloqueios detetados.
rows_deleted / rows_fetched / rows_inserted / rows_returned / rows_updated LONG Atividade ao nível da linha para o intervalo.
sessions_abandoned / sessions_established / sessions_fatal / sessions_killed LONG O ciclo de vida da sessão conta.
shared_blks_hit / shared_blks_read LONG Atividade do buffer partilhado.
xact_commit / xact_rollback LONG Transações comprometidas e revertidas.

database_gauges

Coluna Tipo Description
datid / datname LONGO / CORDA O ID do objeto e o nome da base de dados.
numbackends LONG Número atual de ligações a esta base de dados.
size LONG O tamanho do disco da base de dados.
oldest_frozen_xid_age / oldest_mxid_age LONG ID de transação e multixact ID idade da linha mais antiga descongelada. Valores crescentes são o primeiro sinal de que o vácuo está a ficar para trás, muito antes de o inchaço se tornar visível no tamanho da mesa.

Limitações

Note

As palavras-passe são censuradas à medida que uma declaração é capturada, por isso uma capturada CREATE ROLE lê-se PASSWORD '***'. A redação depende da deteção da palavra-passe na instrução, e uma declaração mal formada pode escapar à deteção.

O Azure Databricks recomenda roles OAuth, que autenticam identidades do Azure Databricks com tokens e não deixam palavra-passe para escrever.

Aplicam-se as seguintes limitações:

  • COPY As operações não são registadas no histórico do plano de consulta.

  • Uma consulta executada dentro de uma função ou procedimento PL/pgSQL não é registada na telemetria ao nível das consultas, a menos que também seja executada como uma instrução de nível superior. O rastreamento de instruções do próprio Postgres, por defeito, conta apenas instruções de nível superior.

  • Ramos e endpoints aparecem em telemetria e insights por ID interno (por exemplo, br-odd-mud-y2icrn1h), e não por um nome de exibição como "production". Cruze o ID na interface do Lakebase se tiver de confirmar a que branch ou endpoint se refere uma linha de insight ou tabela.

  • Os GUCs que permitem a captura de telemetria poderão não ser propagados automaticamente para uma instância de computação existente. Se a telemetria não aparecer depois de a pré-visualização estar ativada, ligue-se ao projeto e verifique:

    SHOW neon_monitor.log_capture_enabled;
    SHOW databricks.o11y_exporter_enabled;
    

    Ambos devem regressar on. Se algum deles devolver off, reinicie o endpoint de computação.

Configurações legadas de observabilidade

Antes de a telemetria passar para as tabelas de sistema, podias criar uma configuração de observabilidade que capturava a telemetria para um catálogo e esquema no teu próprio Unity Catalog e fornecia dashboards pré-construídos. As configurações existentes continuam a funcionar, e os seus painéis de controlo continuam disponíveis. Já não se podem criar novas configurações de observabilidade, e a captura para tabelas de sistema não cria dashboards.

Passos seguintes