Telemetria do Lakebase nas tabelas do sistema
Beta
Esse recurso está em Beta. Para usá-lo, um administrador do workspace deve ativar Observabilidade do Lakebase em tabelas do sistema na página Pré-visualizações . Consulte Gerenciar prévias do Databricks.
O Lakebase captura sua telemetria de observabilidade no esquema system.lakebase, começando com sinais avançados do Postgres. A captura é automática. Com essa visualização habilitada, a telemetria é direcionada a essas tabelas enquanto o compute de um projeto é executado. Não há configuração para criar, nenhum destino para escolher e nenhuma credencial para fornecer. Percepções e Genie leem as mesmas tabelas, e você pode consultar com qualquer ferramenta do Databricks.
Os nomes de tabelas e colunas podem mudar antes da disponibilidade geral.
Requisitos
- A pré-visualização de Observabilidade do Lakebase nas Tabelas do Sistema está habilitada para seu workspace.
- Um projeto do Lakebase no AWS ou no Azure. Consulte Obter um banco de dados Postgres.
O que é capturado
O Lakebase registra os sinais necessários para explicar um banco de dados lento ou com falhas, nas seguintes tabelas:
O que é capturado | Nome da tabela |
|---|---|
Sessões ativas e eventos de espera |
|
Planos de query e estatísticas de execução por query |
|
Alterações de esquema: o que mudou, quando e por quem |
|
Estatísticas do banco de dados: tamanho, linhas lidas e modificadas, e contagens de sessão |
|
Uso de recursos de compute: CPU, memória, cache, conexões |
|
Mensagens de log brutas do Postgres, incluindo o erro por trás de uma falha |
|
Os registros são retidos por 7 dias. O restante desta página documenta cada coluna em cada tabela. Para saber onde essas tabelas se situam entre as outras tabelas do sistema, consulte a referência da tabela do sistema do Lakebase.
Acesso
The system.lakebase tables are governed by Unity Catalog. Users with both the account admin and metastore admin roles can read the telemetry and gerenciar access to it. See Manage privileges in Unity Catalog.
O acesso se aplica no nível do esquema, portanto, um usuário que pode ler system.lakebase vê a telemetria de cada projeto na account.
Texto da instrução mascarado
As colunas que contêm o texto da instrução retornam <REDACTED>, a menos que você seja um administrador de account ou membro do grupo no nível da account databricks_pii_access. Um administrador de conta cria e gerencia esse grupo. Consulte Create and gerenciar the databricks_pii_access group e Access masked statement text.
Colunas comuns a cada tabela
Cada tabela abaixo inclui estas colunas, que identificam a origem de uma linha:
Coluna | Tipo | Descrição |
|---|---|---|
| String | O projeto Lakebase de onde a linha veio. |
| String | O branch de onde a linha veio. |
| String | O Endpoint de compute de onde a linha veio. |
| String | A instância de compute específica. Isso muda quando um compute escala para zero e é retomado. |
| Timestamp | Quando a linha foi registrada. |
| String | O modo do compute no momento, por exemplo, leitura-gravação ou somente leitura. |
Tabelas com nomes que terminam em _counters também incluem uma coluna previous_ts, marcando o início do intervalo em que os valores de uma linha se acumularam. Estes são valores cumulativos para esse intervalo, não leituras pontuais. Tabelas que terminam em _gauges são leituras pontuais, em vez disso, e não possuem previous_ts.
As tabelas abaixo listam apenas as colunas além destas comuns.
Atividade da sessão
Um Snapshot de cada back-end ativo, amostrado continuamente. Este é o mesmo padrão que as Percepções de Desempenho da AWS ou o Histórico de Sessão Ativa (ASH) da Oracle: se uma sessão estiver fazendo algo, incluindo esperar, ela aparece aqui.
active_session_history
Coluna | Tipo | Descrição |
|---|---|---|
| Long | Posição ordinal desta amostra dentro de seu lote. |
| Long | O ID do processo do back-end. |
| Long | ID do objeto do banco de dados. |
| Long | O ID do objeto da função de conexão. |
| Long | Identifica a query em execução. Corresponde a |
| Long | Codificação interna do evento de espera. |
| String | A categoria do evento de espera, por exemplo |
| String | O evento de espera específico, por exemplo |
| Long | O estado do backend, por exemplo, ativo ou parado. |
| Long | O tipo de processo de back-end. |
| Long | Há quanto tempo a transação atual está aberta. |
| Long | Por quanto tempo a query atual está em execução. |
| Long | O PID de uma sessão bloqueando esta, se houver. |
| Long | O PID do líder da query paralela, se este backend for um worker paralelo. |
| Long | Sinalizadores de status internos. |
| Long | Links para um formato de plano específico em |
| Long | Um hash do nome do aplicativo de conexão. |
Eventos de espera.
Contagens e tempo de eventos de espera agregados, complementando a view por amostra em active_session_history.
wait_event_counters
Coluna | Tipo | Descrição |
|---|---|---|
| Long | Codificação interna do evento de espera. |
| String | A categoria do evento de espera. |
| String | O evento de espera específico. |
| Long | Quantas vezes este evento de espera ocorreu no intervalo. |
| double | Tempo total gasto neste evento de espera durante o intervalo. |
Planos de query
Um registro por execução de planos de query, incluindo o plano completo e as estatísticas de armazenamento específicas do Neon. Esta é a tabela mais detalhada, e tipicamente onde uma investigação de query lenta termina.
plan_history
Coluna | Tipo | Descrição |
|---|---|---|
| Long | Posição ordinal desta linha dentro de seu lote. |
| Booleana | Se o plano inclui estatísticas reais de execução ( |
| Booleana | Se o plano inclui estatísticas de uso de buffer. |
| String | Hash que identifica o texto da query. |
| Long | Identifica a query. Corresponde a |
| double | Quanto tempo a query levou para ser execução. |
| double | O custo estimado do planejador para a query. |
| Long | A contagem estimada de linhas do planejador. |
| Long | A contagem real de linhas retornadas. |
| Long | Identifica este formato de plano específico. Corresponde a |
| double | Tempo gasto em espera por bloqueios. |
| double | Tempo gasto no planejamento da query, separado da execução. |
| Long | Atividade de cache de buffer compartilhado para esta execução. |
| Long | Atividade de buffer local, para tabelas temporárias. |
| Long | Atividade de arquivo temporário, por exemplo, de uma classificação grande ou hash. |
| Long | Número de solicitações de página enviadas para o pageserver. |
| Long | Número de páginas servidas a partir do cache local de arquivos em vez do pageserver. |
| Long | Tempo gasto esperando solicitações de página do pageserver, em microssegundos. |
| Long | O ID do processo de backend que executou esta query. |
| Long | Número de vezes que esta execução aguardou um bloqueio. |
| Long | Os IDs de objeto da função de conexão e do banco de dados. |
| String | O texto de query. Mascarado. Consulte Masked statement text. |
| String | The full query plan, as JSON. Masked. See Masked statement text. |
| String | Os nomes da função de conexão e da base de dados. |
| String | O nome do aplicativo de conexão e o endereço do cliente. |
| String | Eventos de espera observados durante esta execução. |
| String | Vincule os parâmetros usados na query, se houver. Mascarado. Ver Texto da instrução mascarado. |
| String | PIDs de sessões que bloquearam esta execução, se houver. |
| String | Identificadores internos do Neon para a branch, o endpoint e a linha do tempo. |
| double | Tempo de CPU consumido por esta execução, dividido em tempo de usuário e de sistema. |
| Long | Trocas de contexto durante esta execução. |
| STRING / STRING / LONG / STRING | Identificadores de rastreamento no estilo OpenTelemetry, se a query fazia parte de uma solicitação rastreada. |
| Long | Identificador interno da linha do tempo. |
| Booleana | Se os dados desta linha (por exemplo, um plano grande) foram truncados antes de serem gravados. |
Estatísticas da query
Estatísticas agregadas por query, obtidas da extensão padrão pg_stat_statements.
pg_stat_statements_counters
Coluna | Tipo | Descrição |
|---|---|---|
| Long | Os IDs de objeto da função de conexão e do banco de dados. |
| Long | Identifica a query. Corresponde a |
| Booleana | Se esta linha é para uma instrução de nível superior, em oposição a uma aninhada dentro de uma função ou procedimento PL/pgSQL. Consulte a limitação do PL/pgSQL. |
| String | O texto de query. Mascarado. Consulte Masked statement text. |
| Long | Número de vezes que esta query foi executada no intervalo. |
| Long | Número de vezes que esta query foi planejada no intervalo. |
| Long | Total de linhas retornadas ou afetadas. |
| double | Tempo total gasto executando e planejando esta query no intervalo. |
| Long | Atividade de cache de buffer compartilhada. |
| Long | Atividade de buffer local, para tabelas temporárias. |
| Long | Atividade de arquivos temporários. |
| Long | Volume do log de transações gerado por esta query. |
| Misto | Estatísticas de compilação JIT (just-in-time), se JIT foi usado para esta query. |
Alterações de esquema
Alterações de esquema: o que mudou, quando e por quem. Isso é o que o Genie lê para rastrear um incidente de volta a uma alteração de esquema, seja de uma implantação ou de uma edição manual.
ddl_history
Coluna | Tipo | Descrição |
|---|---|---|
| Long | Posição ordinal desta linha dentro de seu lote. |
| String | O tipo de comando DDL, por exemplo |
| String | O tipo e o nome do objeto que mudou. |
| String | O esquema do Postgres ao qual o objeto pertence. |
| String | A instrução DDL completa. Mascarado. Consulte Texto da instrução mascarado. |
| double | Quanto tempo a instrução DDL levou para ser executada. |
| LONG / STRING | O ID e o nome do objeto da função de conexão. |
| String | O nome do aplicativo de conexão. |
| Long | O ID do processo de backend que executou a instrução. |
| Long | ID do objeto do banco de dados. |
| String | O caminho de busca da sessão na época. |
| String | Uma representação estruturada e analisada da instrução DDL. Mascarado. Consulte Texto da instrução mascarado. |
A captura DDL tem uma lacuna real: uma alteração feita no momento em que um compute é retomado de uma escala para zero pode ser perdida. Se uma alteração de esquema não aparecer aqui, mesmo que você saiba que ela aconteceu, essa é a razão mais provável. Consulte Limitações.
Logs do Postgres
Mensagens de log brutas do Postgres, incluindo o erro específico por trás de uma falha.
logs_do_postgres
Coluna | Tipo | Descrição |
|---|---|---|
| Long | Posição ordinal desta linha dentro de seu lote. |
| Long | Codificação de nível de log interno. |
| String | A gravidade do log, por exemplo |
| String | O código de erro SQLSTATE do Postgres, por exemplo |
| Long | O ID do processo de backend e o PID do seu líder de query paralela, se aplicável. |
| LONG / STRING | O ID e o nome do objeto da função de conexão. |
| LONG / STRING | O ID e o nome do objeto do banco de dados. |
| String | O nome do aplicativo de conexão e o endereço do cliente. |
| String | O esquema, tabela, coluna, restrição ou tipo de dados referenciado pelo erro, quando o Postgres tem um. |
| String | A função em que o erro ocorreu, se aplicável. |
| STRING/LONG | O arquivo de origem do Postgres e a linha de onde o erro se originou. |
| String | O texto da mensagem de log. |
| String | Detalhes adicionais, uma correção sugerida e o contexto do erro, quando o Postgres os tiver. |
| String | Uma query gerada internamente relacionada ao erro, se aplicável. |
| String | O comando que Trigger esta entrada de Logs. Mascarado. Consulte Texto da instrução mascarada. |
| Long | Indica quais campos, se houver, foram truncados antes de serem gravados. |
Os campos estruturados schema_name, table_name e column_name não são preenchidos para cada tipo de erro. Um erro de análise simples de "coluna não existe" (SQLSTATE 42703), por exemplo, os deixa vazios, mesmo que message nomeie a coluna diretamente. Não confie que esses campos sejam preenchidos. Verifique message primeiro.
Métricas de compute
Uso de recurso em nível de compute: CPU, memória, disco e E/S de rede, e o cache de arquivo local (LFC), o cache do Lakebase do lado do compute na frente do pageserver.
compute_counters
Coluna | Tipo | Descrição |
|---|---|---|
| double | Tempo que a camada de armazenamento levou para limitar as gravações neste intervalo. Um valor diferente de zero significa que o volume de gravação ultrapassou a capacidade de absorção do armazenamento. |
| double | Tempo de CPU consumido, para o núcleo mais ocupado e no total. |
| double | Volume de E/S de disco. |
| double | Volume de E/S de rede. |
| Long | Atividade do cache de arquivo local para este intervalo. |
| Long | Evicções de cache de arquivo local causadas pela repetição de réplica, se este compute for uma réplica de leitura. |
compute_gauges
Coluna | Tipo | Descrição |
|---|---|---|
| Long | A posição atual do log write-ahead. |
| Long | Replay de WAL e posições de recebimento, se este compute for uma réplica de leitura. |
| Long | O limite de conexão configurado. |
| Long | Tamanho estimado do conjunto de trabalho nos últimos 5, 15 e 60 minutos. |
| Long | Capacidade e uso atual do cache de arquivo local. |
| Long | Capacidade geral de armazenamento e uso atual. |
| long / double | Atraso de replicação, se este compute for uma réplica de leitura. |
| double | A CPU e a memória provisionadas do compute. |
Métricas de banco de dados
Atividade por banco de dados: linhas alteradas, transações, sessões e integridade do vacuum. É aqui que residem o inchaço da tabela e os sinais de autovacuum.
database_counters
Coluna | Tipo | Descrição |
|---|---|---|
| LONG / STRING | O ID e o nome do objeto do banco de dados. |
| double | Tempo gasto ativo, parado em uma transação aberta, e conectado em geral. |
| Long | Número de impasses detectados. |
| Long | Atividade em nível de linha para o intervalo. |
| Long | Contagens do ciclo de vida da sessão. |
| Long | Atividade de cache de buffer compartilhada. |
| Long | Transações confirmadas e revertidas. |
database_gauges
Coluna | Tipo | Descrição |
|---|---|---|
| LONG / STRING | O ID e o nome do objeto do banco de dados. |
| Long | Número atual de conexões para esta base de dados. |
| Long | O tamanho da base de dados em disco. |
| Long | ID da transação e idade do ID de multixact da linha mais antiga não congelada. Valores crescentes são o primeiro sinal de atraso do vacuum, muito antes que o inchaço se torne visível no tamanho da tabela. |
Limitações
As senhas são mascaradas quando um comando é capturado, portanto, um CREATE ROLE capturado aparece como PASSWORD '***'. A ocultação depende da detecção da senha no comando, e um comando malformado pode escapar da detecção.
O Databricks recomenda funções do OAuth, que autenticam identidades do Databricks com tokens e não deixam nenhuma senha para digitar.
Aplicam-se as seguintes limitações:
-
COPYas operações não são capturadas no histórico do plano de query. -
Uma query executada dentro de uma função ou procedimento PL/pgSQL não é capturada na telemetria de nível de query, a menos que também seja executada como uma instrução de nível superior. O acompanhamento de instruções do próprio Postgres conta apenas instruções de nível superior por default.
-
Branches e endpoints aparecem na telemetria e nas percepções pelo ID interno (por exemplo,
br-odd-mud-y2icrn1h), e não por um nome de exibição como "production". Cross-reference the ID in the Lakebase UI if you must confirm which branch or endpoint an insight or table row refers to. -
Os GUCs que habilitam a captura de telemetria podem não se propagar automaticamente para um compute existente. Se a telemetria não aparecer após a ativação da pré-visualização, conecte-se ao projeto e verifique:
SQLSHOW neon_monitor.log_capture_enabled;
SHOW databricks.o11y_exporter_enabled;Ambos devem retornar
on. Se qualquer um deles retornaroff, reinicie o endpoint de compute.
Legacy observability configurations
Antes de a telemetria ser movida para as tabelas do sistema, você podia criar uma configuração de observabilidade que capturava a telemetria em um catálogo e em um esquema no seu próprio Unity Catalog e fornecia painéis pré-criados. As configurações existentes continuam funcionando e seus painéis permanecem disponíveis. Não é mais possível criar novas configurações de observabilidade, e a captura para tabelas do sistema não cria painéis.
Próximos passos
- Detect issues with percepções : o agente que analisa essa telemetria de acordo com uma programação.
- Investigate and fix issues with Genie : faça perguntas sobre esta telemetria com suas próprias palavras.
- Lakebase system table reference : onde essas tabelas se encontram entre as outras tabelas do sistema.