Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
Esse recurso está em Beta. Para usá-lo, um administrador de espaço de trabalho deve ativar a Observabilidade Lakebase nas Tabelas do Sistema a partir da página de Prévias . Consulte Gerenciar visualizações do Azure Databricks.
O Lakebase captura sua telemetria de observabilidade no system.lakebase esquema, começando com sinais avançados de Postgres. Captura é automática. Com essa pré-visualização ativada, a telemetria cai nessas tabelas enquanto o cálculo do projeto é executado. Não há configuração para criar, nem destino para escolher, nem credenciais para fornecer.
Insights e Genie leem as mesmas tabelas, e você pode consultá-las com qualquer ferramenta do Azure Databricks.
Note
Os nomes de tabela e coluna podem ser alterados antes da disponibilidade geral.
Requirements
- A Observabilidade do Lakebase na prévia das Tabelas do Sistema ativada para seu espaço de trabalho.
- Um projeto Lakebase na AWS ou Azure. Consulte Obter um banco de dados postgres.
O que é capturado
O Lakebase registra os sinais que você precisa para explicar um banco de dados lento ou com falha, através das seguintes tabelas:
| O que é capturado | 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 do banco de dados: tamanho, linhas lidas e modificadas e contagens de sessão |
system.lakebase.database_counters, system.lakebase.database_gauges |
| Uso de recursos de computação: CPU, memória, cache, conexões |
system.lakebase.compute_counters, system.lakebase.compute_gauges |
| Mensagens de log brutas do Postgres, incluindo o erro por trás de uma falha | system.lakebase.postgres_logs |
Os registros são mantidos por 7 dias. O restante desta página documenta cada coluna de cada tabela. Para saber onde essas tabelas se situam entre as outras tabelas do sistema, veja referência de tabela de sistema Lakebase.
Acesso
As system.lakebase tabelas são regidas pelo Catálogo Unity. Usuários com os papéis de administrador de conta e administrador da metastore podem ler a telemetria e gerenciar o acesso a ela. Consulte Gerenciar privilégios no Catálogo do Unity.
O Access se aplica no nível do esquema, então um usuário que consegue ler system.lakebase vê a telemetria de cada projeto na conta.
Texto da declaração mascarada
Colunas que contêm o extrato retornam, <REDACTED> a menos que você seja administrador de conta ou membro do databricks_pii_access grupo em nível de conta. Um administrador de conta cria e gerencia esse grupo. Veja Criar e gerenciar o databricks_pii_access grupo e acessar o texto da declaração mascarada.
Colunas comuns a cada tabela
Cada tabela abaixo inclui essas colunas, que identificam de onde veio uma linha:
| Coluna | Tipo | Description |
|---|---|---|
project_id |
STRING | O projeto Lakebase do qual a linha veio. |
branch_id |
STRING | O branch da qual a linha veio. |
endpoint_id |
STRING | O ponto de extremidade de computação do qual a linha veio. |
compute_id |
STRING | A instância de computação específica. Isso muda quando uma computação é dimensionada para zero e é retomada. |
ts |
TIMESTAMP | Quando a linha foi gravada. |
compute_mode |
STRING | O modo da computação no momento, por exemplo, leitura-gravação ou somente leitura. |
Tabelas com nomes que terminam _counters também incluem uma previous_ts coluna, marcando o início do intervalo em que os valores de uma linha foram acumulados. Esses são valores cumulativos para esse intervalo, não leituras pontuais. As tabelas que _gauges terminam são leituras pontuais e não têm .previous_ts
As tabelas abaixo listam apenas as colunas além dessas comuns.
Atividade de sessão
Um instantâneo de cada back-end ativo, amostrado continuamente. Esse é o mesmo padrão que o AWS Performance Insights ou o ASH (Histórico de Sessão Ativa) da Oracle: se uma sessão estiver fazendo alguma coisa, incluindo esperar, ela aparecerá aqui.
active_session_history
| Coluna | Tipo | Description |
|---|---|---|
sample_seq |
LONG | Posição ordinal deste exemplo dentro de seu lote. |
pid |
LONG | A ID do processo do back-end. |
datid |
LONG | A ID do objeto do banco de dados. |
userid |
LONG | A ID do objeto da função de conexão. |
queryid |
LONG | Identifica a consulta que está sendo executada. Corresponde 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 de espera específico, por exemplo PgSleep. |
backend_state |
LONG | O estado do back-end, por exemplo, ativo ou ocioso. |
backend_type |
LONG | O tipo de processo de back-end. |
xact_age_ms |
LONG | Há quanto tempo a transação atual está aberta. |
query_age_ms |
LONG | Há quanto tempo a consulta atual está em execução. |
blocking_pid |
LONG | O PID de uma sessão bloqueando esta, se houver. |
leader_pid |
LONG | O PID do líder de consulta paralela, se esse back-end for um trabalho paralelo. |
flags |
LONG | Sinalizadores de status internos. |
plan_fingerprint |
LONG | Links para uma forma de plano específica em plan_history. |
appname_hash |
LONG | Um hash do nome do aplicativo de conexão. |
Eventos de espera
Contagens de eventos de espera e tempo agregados, complementando a exibição por exemplo 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 de espera específico. |
wait_event_count |
LONG | Quantas vezes esse evento de espera ocorreu no intervalo. |
wait_event_time |
DOUBLE | Tempo total gasto nesse evento de espera durante o intervalo. |
Planos de consultas
Um registro por execução de planos de consulta, incluindo o plano completo e estatísticas de armazenamento específicas de Neon. Esta é a tabela mais detalhada e, normalmente, onde uma investigação de consulta lenta acaba.
plan_history
| Coluna | Tipo | Description |
|---|---|---|
row_position |
LONG | Posição ordinal dessa linha dentro de seu lote. |
analyze_enabled |
BOOLEAN | Se o plano inclui estatísticas de execução reais (EXPLAIN ANALYZE), não apenas estimativas. |
buffers_enabled |
BOOLEAN | Se o plano inclui estatísticas de uso de buffer. |
query_hash |
STRING | Hash identificando o texto da consulta. |
queryid |
LONG | Identifica a consulta. Corresponde queryid em pg_stat_statements_counters e active_session_history. |
duration_ms |
DOUBLE | Quanto tempo a consulta levou para ser executada. |
total_cost |
DOUBLE | O custo estimado do planejador para a consulta. |
plan_rows |
LONG | A contagem de linhas estimada do planejador. |
actual_rows |
LONG | A contagem real de linhas retornada. |
plan_fingerprint |
LONG | Identifica essa forma de plano específica. Corresponde plan_fingerprint em active_session_history. |
lock_wait_time_ms |
DOUBLE | Tempo gasto aguardando bloqueios. |
planning_time_ms |
DOUBLE | Tempo gasto planejando a consulta, separado da execução. |
shared_blks_hit / shared_blks_read / shared_blks_dirtied / shared_blks_written |
LONG | Atividade de cache de buffer compartilhado para essa 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 de arquivo temporário, por exemplo, de uma classificação ou hash grande. |
neon_getpage_count |
LONG | Número de solicitações de página enviadas para o pageserver. |
neon_file_cache_hits |
LONG | Número de páginas atendidas do cache de arquivos local em vez do pageserver. |
neon_getpage_wait_us |
LONG | Tempo gasto aguardando solicitações de páginas, em microssegundos. |
backend_pid |
LONG | A ID do processo de back-end que executou essa consulta. |
lock_wait_count |
LONG | Número de vezes que essa execução esperou em um bloqueio. |
userid / dbid |
LONG | As IDs de objeto da função de conexão e do banco de dados. |
query_text |
STRING | O texto da consulta. Mascarado. Veja texto da declaração Mascarada. |
plan_json |
STRING | O plano de consulta completo, como JSON. Mascarado. Veja texto da declaração Mascarada. |
usename / datname |
STRING | Os nomes da função de conexão e do banco de dados. |
application_name / client_addr |
STRING | O nome do aplicativo de conexão e o endereço do cliente. |
wait_events |
STRING | Eventos de espera observados durante essa execução. |
parameters |
STRING | Associar parâmetros usados na consulta, se houver. Mascarado. Veja texto da declaração Mascarada. |
blocking_pids |
STRING | PIDs de sessões que bloquearam essa execução, se houver. |
neon_branch_id / neon_endpoint_id / neon_timeline_id |
STRING | Identificadores internos do Neon para o branch, o ponto de extremidade e a linha do tempo. |
cpu_user_time_ms / cpu_sys_time_ms |
DOUBLE | Tempo de CPU consumido por essa execução, dividido em tempo de usuário e sistema. |
voluntary_csw / involuntary_csw |
LONG | O contexto muda durante essa execução. |
trace_id / span_id / trace_flags / service_name |
CADEIA DE CARACTERES/CADEIA DE CARACTERES/LONGA/CADEIA DE CARACTERES | Identificadores de rastreamento no estilo OpenTelemetry, se a consulta fosse parte de uma solicitação rastreada. |
timeline_id |
LONG | Identificador de linha do tempo interno. |
truncated |
BOOLEAN | Se os dados dessa linha (por exemplo, um plano grande) foram truncados antes de serem gravados. |
Estatísticas de consulta
Estatísticas agregadas por consulta, provenientes da extensão padrão pg_stat_statements .
pg_stat_statements_counters
| Coluna | Tipo | Description |
|---|---|---|
userid / dbid |
LONG | As IDs de objeto da função de conexão e do banco de dados. |
queryid |
LONG | Identifica a consulta. Corresponde queryid em plan_history e active_session_history. |
toplevel |
BOOLEAN | Se essa linha é para uma instrução de nível superior, em vez de uma aninhada dentro de uma função ou procedimento PL/pgSQL. Consulte a limitação de PL/pgSQL. |
query |
STRING | O texto da consulta. Mascarado. Veja texto da declaração Mascarada. |
calls |
LONG | Número de vezes que essa consulta foi executada no intervalo. |
plans |
LONG | Número de vezes que essa consulta foi planejada no intervalo. |
rows |
LONG | Total de linhas retornadas ou afetadas. |
total_exec_time / total_plan_time |
DOUBLE | Tempo total gasto executando e planejando essa consulta no intervalo. |
shared_blks_hit / shared_blks_read / shared_blks_dirtied / shared_blks_written |
LONG | Atividade de cache de buffer compartilhado. |
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 arquivo. |
wal_bytes / wal_fpi / wal_records |
LONG | Volume de log de gravação antecipada gerado por essa consulta. |
jit_emission_count / jit_emission_time / jit_functions / jit_generation_time / jit_inlining_count / jit_inlining_time / jit_optimization_count / jit_optimization_time |
Misturado | Estatísticas de compilação JIT (just-in-time), se JIT foi usado para essa consulta. |
Alterações feitas no esquema
Alterações de esquema: o que mudou, quando e por quem. É isso que o Genie lê para rastrear um incidente até uma alteração de esquema, seja de uma implantação ou de uma edição manual.
ddl_history
| Coluna | Tipo | Description |
|---|---|---|
row_position |
LONG | Posição ordinal dessa linha dentro de seu lote. |
command_tag |
STRING | O tipo de comando DDL, por exemplo ALTER TABLE. |
object_type / object_name |
STRING | O tipo e o nome do objeto que foi alterado. |
schema_name |
STRING | O esquema Postgres ao qual o objeto pertence. |
query_text |
STRING | A instrução DDL completa. Mascarado. Veja texto da declaração Mascarada. |
duration_ms |
DOUBLE | Quanto tempo a instrução DDL levou para ser executada. |
userid / usename |
LONG/STRING | A ID e o nome do objeto da função de conexão. |
application_name |
STRING | O nome do aplicativo de conexão. |
backend_pid |
LONG | A ID do processo de back-end que executou a instrução. |
dbid |
LONG | A ID do objeto do banco de dados. |
search_path |
STRING | O caminho de pesquisa da sessão no momento. |
ddl_json |
STRING | Uma representação estruturada e analisada da instrução DDL. Mascarado. Veja texto da declaração Mascarada. |
Note
A captura de DDL tem uma lacuna real: uma alteração feita em torno de uma retomada de computação de escala para zero pode ser perdida. Se uma alteração de esquema não aparecer aqui mesmo que você saiba que aconteceu, esse é o motivo mais provável. Confira Limitações.
Logs do Postgres
Mensagens de log brutas do Postgres, incluindo o erro específico por trás de uma falha.
postgres_logs
| Coluna | Tipo | Description |
|---|---|---|
sample_seq |
LONG | Posição ordinal dessa linha dentro de seu lote. |
elevel |
LONG | Codificação de nível de log interno. |
severity |
STRING | A gravidade do log, por exemplo ERROR ou LOG. |
sqlstate |
STRING | O código de erro SQLSTATE do Postgres, por exemplo 42703 , para uma coluna indefinida. |
backend_pid / leader_backend_pid |
LONG | A ID do processo de back-end e o PID do líder de consulta paralela, se aplicável. |
userid / usename |
LONG/STRING | A ID e o nome do objeto da função de conexão. |
datid / datname |
LONG/STRING | A ID e o nome do objeto do banco de dados. |
application_name / client_addr |
STRING | O nome do aplicativo de conexão e o endereço do cliente. |
schema_name / table_name / column_name / constraint_name / datatype_name |
STRING | O esquema, a tabela, a coluna, a restrição ou o tipo de dados referenciado pelo erro, quando o Postgres tem um. |
funcname |
STRING | A função em que o erro ocorreu, se aplicável. |
filename / lineno |
STRING/LONG | O arquivo de origem do Postgres e a linha da qual o erro se originou. |
message |
STRING | O texto da mensagem de log. |
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 ao erro, se aplicável. |
statement |
STRING | A instrução que disparou essa entrada de log. Mascarado. Veja texto da declaração Mascarada. |
truncated_mask |
LONG | Indica quais campos, se houver, foram truncados antes de serem gravados. |
Note
Os campos estruturados schema_nametable_namee não column_name são preenchidos para cada tipo de erro. Um erro de análise "coluna não existe" simples (SQLSTATE 42703), por exemplo, deixa-os vazios mesmo que message nomeie a coluna diretamente. Não confie nesses campos que estão sendo preenchidos. Verifique message primeiro.
Métricas de computação
Uso de recursos de nível de computação: CPU, memória, E/S de disco e rede e o LFC (cache de arquivos local), o cache do lado da computação do Lakebase na frente do pageserver.
compute_counters
| Coluna | Tipo | Description |
|---|---|---|
backpressure_throttling_seconds |
DOUBLE | Tempo em que a camada de armazenamento gastou gravações de limitação nesse intervalo. Um valor diferente de zero significa que o volume de gravação excedeu o que o armazenamento pode absorver. |
host_busiest_cpu_seconds / host_cpu_seconds |
DOUBLE | CPU demorada, para o núcleo mais movimentado e no total. |
host_disk_read_bytes / host_disk_written_bytes |
DOUBLE | Volume de E/S de disco. |
host_network_receive_bytes / host_network_transmit_bytes |
DOUBLE | Volume de E/S de rede. |
lfc_evictions / lfc_hits / lfc_misses / lfc_writes |
LONG | Atividade de cache de arquivo local para esse intervalo. |
replica_lfc_redo_evictions |
LONG | Remoções de cache de arquivos locais causadas pela restauração da réplica, se essa computação for uma réplica de leitura. |
compute_gauges
| Coluna | Tipo | Description |
|---|---|---|
current_lsn |
LONG | A posição atual do log de gravação antecipada. |
replica_wal_replay_lsn / replica_wal_receive_lsn |
LONG | Wal reproduzirá e receberá posições, se essa computação for uma réplica de leitura. |
max_connections |
LONG | O limite de conexã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 de cache de arquivos local e uso atual. |
total_size_limit / total_size |
LONG | Capacidade de armazenamento geral e uso atual. |
replication_lag_bytes / replication_lag_time_ms |
LONG/DOUBLE | Retardo de replicação, se essa computação for uma réplica de leitura. |
host_logical_cpus / host_memory_total_bytes |
DOUBLE | A CPU e a memória provisionadas da computação. |
Métricas de banco de dados
Atividade por banco de dados: linhas alteradas, transações, sessões e integridade do vácuo. É aqui que os sinais de bloat de tabela e de vácuo automático residem.
database_counters
| Coluna | Tipo | Description |
|---|---|---|
datid / datname |
LONG/STRING | A ID e o nome do objeto do banco de dados. |
active_time_ms / idle_in_transaction_time_ms / session_time_ms |
DOUBLE | Tempo gasto ativo, ocioso em uma transação aberta e conectado em geral. |
deadlocks |
LONG | Número de deadlocks detectados. |
rows_deleted / rows_fetched / rows_inserted / rows_returned / rows_updated |
LONG | Atividade em nível de linha para o intervalo. |
sessions_abandoned / sessions_established / sessions_fatal / sessions_killed |
LONG | Contagens do ciclo de vida da sessão. |
shared_blks_hit / shared_blks_read |
LONG | Atividade de cache de buffer compartilhado. |
xact_commit / xact_rollback |
LONG | Transações confirmadas e revertidas. |
database_gauges
| Coluna | Tipo | Description |
|---|---|---|
datid / datname |
LONG/STRING | A ID e o nome do objeto do banco de dados. |
numbackends |
LONG | Número atual de conexões com esse banco de dados. |
size |
LONG | O tamanho do banco de dados no disco. |
oldest_frozen_xid_age / oldest_mxid_age |
LONG | ID da transação e idade de ID multixact da linha descongelada mais antiga. Valores crescentes são o sinal mais antigo de vácuo ficando para trás, bem antes que o bloat se torne visível no tamanho da tabela. |
Limitações
Note
As senhas são redigidas conforme uma declaração é capturada, então uma captura CREATE ROLE lê PASSWORD '***'. A redação depende da detecção da senha na instrução, e uma instrução mal formada pode passar despercebida.
O Azure Databricks recomenda os roles OAuth, que autenticam identidades do Azure Databricks com tokens e não deixam senha para digitar.
As seguintes limitações se aplicam:
COPYAs operações não são registradas no histórico do plano de consulta.Uma consulta executada dentro de uma função ou procedimento PL/pgSQL não é capturada na telemetria de nível de consulta, a menos que também seja executada como uma instrução de nível superior. O próprio rastreamento de instruções do Postgres conta apenas instruções de nível superior por padrão.
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." Faça uma cruzada de referência com o ID na interface do Lakebase se precisar confirmar a qual branch ou endpoint uma linha de insight ou tabela se refere.Os GUCs que habilitam a captura de telemetria podem não se propagar automaticamente para uma computação existente. Se a telemetria não aparecer após a pré-visualização ser ativada, conecte-se ao projeto e verifique:
SHOW neon_monitor.log_capture_enabled; SHOW databricks.o11y_exporter_enabled;Ambos devem retornar
on. Se qualquer uma das opções retornaroff, reinicie o endpoint de computação.
Configurações legadas de observabilidade
Antes da telemetria migrar para as tabelas de sistema, você podia criar uma configuração de observabilidade que capturasse a telemetria em um catálogo e esquema no seu próprio Catálogo Unity e fornecia dashboards pré-construídos. As configurações existentes continuam funcionando, e seus painéis continuam disponíveis. Você não pode mais criar novas configurações de observabilidade, e a captura para tabelas de sistema não cria dashboards.
Próximas Etapas
- Detectar problemas com Insights: o agente que revisa essa telemetria em um cronograma.
- Investigue e corrija problemas com o Genie: faça perguntas sobre essa telemetria com suas próprias palavras.
- Referência de tabela do sistema Lakebase: onde essas tabelas se situam entre as outras tabelas do sistema.