Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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:
COPYAs 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 devolveroff, 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
- Detetar problemas com o Insights: o agente que revê esta telemetria num calendário.
- Investigue e resolva problemas com o Genie: faça perguntas sobre esta telemetria com as suas próprias palavras.
- Referência da tabela do sistema Lakebase: onde estas tabelas se situam entre as outras tabelas do sistema.