Monitorar o pipeline de DLT
Este artigo descreve o uso de monitoramento integrado e recurso de observabilidade para o pipeline de DLT. Esses recursos dão suporte a tarefas como as do senhor:
- Observar o progresso e o status das atualizações do pipeline. Consulte Quais detalhes do pipeline estão disponíveis na interface do usuário?
- Alertas sobre eventos do pipeline, como o sucesso ou a falha de atualizações do pipeline. Consulte Adicionar notificações email para eventos pipeline.
- Visualizando métricas para fontes de transmissão como Apache Kafka e Auto Loader (Public Preview). Ver view transmissão métricas.
- Extração de informações detalhadas sobre as atualizações do site pipeline, como linhagem de dados, métricas de qualidade de dados e uso de recursos. Consulte O que é o evento DLT log?.
- Definir ações personalizadas a serem tomadas quando eventos específicos ocorrerem. Consulte Definir monitoramento personalizado do pipeline DLT com ganchos de eventos.
Para inspecionar e diagnosticar o desempenho da consulta, consulte Histórico de consultas de acesso ao pipeline DLT. Esse recurso está em Public Preview.
Adicionar notificações email para eventos pipeline
O senhor pode configurar um ou mais endereços email para receber notificações quando ocorrer o seguinte:
- A atualização do pipeline foi concluída com êxito.
- Uma atualização de pipeline falha, seja com um erro que pode ser tentado ou não. Selecione essa opção para receber uma notificação de todas as falhas de pipeline.
- Uma atualização de pipeline falha com um erro fatal (não recuperável). Selecione essa opção para receber uma notificação somente quando ocorrer um erro que não pode ser repetido.
- Um único fluxo de dados falha.
Para configurar as notificações do email quando o senhor criar ou editar um pipeline:
- Clique em Adicionar notificação .
- Digite um ou mais endereços email para receber notificações.
- Clique na caixa de seleção de cada tipo de notificação a ser enviada para os endereços email configurados.
- Clique em Adicionar notificação .
Quais detalhes do pipeline estão disponíveis na interface do usuário?
O gráfico pipeline é exibido assim que uma atualização do site pipeline é iniciada com sucesso. As setas representam as dependências entre os conjuntos de dados em seu site pipeline. Em default, a página de detalhes pipeline mostra a atualização mais recente da tabela, mas o senhor pode selecionar atualizações mais antigas em um menu suspenso.
Os detalhes incluem o ID do pipeline, o código-fonte, o custo do compute, a edição do produto e o canal configurado para o pipeline.
Para ver uma tabela view do conjunto de dados, clique em List tab. O List view permite que o senhor veja todos os conjuntos de dados em seu pipeline representados como uma linha em uma tabela e é útil quando seu pipeline DAG é muito grande para ser visualizado no gráfico view. O senhor pode controlar o conjunto de dados exibido na tabela usando vários filtros, como dataset name, type e status. Para voltar à visualização do DAG, clique em gráfico .
O usuário execução as é o proprietário do pipeline e o pipeline atualiza a execução com as permissões desse usuário. Para alterar o usuário run as
, clique em Permissions (Permissões ) e altere o proprietário do pipeline.
Como o senhor pode view dataset detalhes?
Clicar em um dataset no pipeline gráfico ou na lista dataset mostra detalhes sobre o dataset. Os detalhes incluem o esquema dataset, as métricas de qualidade de dados e um link para o código-fonte que define o dataset.
view update história
Para view o histórico e o status das atualizações do pipeline, clique no menu suspenso histórico de atualizações na barra superior.
Selecione a atualização no menu suspenso para view o gráfico, os detalhes e os eventos de uma atualização. Para retornar à atualização mais recente, clique em Mostrar a atualização mais recente .
view transmissão métricas
Visualização
A observabilidade da transmissão para DLT está em pré-visualização pública.
O senhor pode view transmissão métricas da fonte de dados suportada pela Spark transmissão estruturada, como Apache Kafka, Amazon Kinesis, Auto Loader e Delta tabelas, para cada fluxo de transmissão em seu DLT pipeline. As métricas são exibidas como gráficos no painel direito da interface do usuário do DLT e incluem segundos de backlog, bytes de backlog, registros de backlog e arquivos de backlog. Os gráficos exibem o valor máximo agregado por minuto e uma dica de ferramenta mostra os valores máximos quando você passa o mouse sobre o gráfico. Os dados são limitados às últimas 48 horas a partir da hora atual.
As tabelas em seu pipeline com transmissão métricas disponíveis exibem o ícone ao visualizar o pipeline DAG na UI gráfica view. Para view a transmissão métrica, clique em
para exibir o gráfico de transmissão métrica em Flows tab no painel direito. O senhor também pode aplicar um filtro para view apenas tabelas com transmissão métricas clicando em List e, em seguida, em Has transmissão métricas .
Cada fonte de transmissão suporta apenas métricas específicas. As métricas não suportadas por uma fonte de transmissão não estão disponíveis para view na UI. A tabela a seguir mostra as métricas disponíveis para as fontes de transmissão suportadas:
Origem | bytes da lista de pendências | registros de pendências | segundos de atraso | arquivos de lista de pendências |
---|---|---|---|---|
Kafka | ✓ | ✓ | ||
Kinesis | ✓ | ✓ | ||
Delta | ✓ | ✓ | ||
Carregador automático | ✓ | ✓ | ||
Google Pub/Sub | ✓ | ✓ |
O que é o evento DLT log?
O evento DLT log contém todas as informações relacionadas a um pipeline, incluindo auditoria logs, verificações de qualidade de dados, pipeline progresso e linhagem de dados. O senhor pode usar o evento log para rastrear, entender e monitorar o estado do seu pipeline de dados.
O senhor pode acessar as entradas do evento view log na interface de usuário da DLT, na DLT APIou consultando diretamente o evento log. Esta seção se concentra na consulta direta ao log de eventos.
O senhor também pode definir ações personalizadas a serem executadas quando os eventos são registrados, por exemplo, enviar alertas, com ganchos de eventos.
Não exclua o log de eventos ou o catálogo ou esquema pai onde o log de eventos é publicado. A exclusão do evento log pode fazer com que o site pipeline não seja atualizado durante uma execução futura.
Evento log schema
A tabela a seguir descreve o esquema do evento log. Alguns desses campos contêm dados JSON que exigem análise para realizar algumas consultas, como o campo details
. A Databricks suporta o operador :
para analisar campos JSON. Consulte o operador:
(sinal de dois pontos).
campo | Descrição |
---|---|
| Um identificador exclusivo para o registro do log de eventos. |
| Um documento JSON que contém metadados para identificar e ordenar eventos. |
| Um documento JSON contendo metadados para a origem do evento, por exemplo, o provedor de nuvem, a região do provedor de nuvem, |
| A hora em que o evento foi gravado. |
| Uma mensagem legível por humanos descrevendo o evento. |
| O tipo de evento, por exemplo, |
| A estabilidade do esquema de eventos. Os valores possíveis são: - |
| Se ocorreu um erro, detalhes descrevendo o erro. |
| Um documento JSON que contém detalhes estruturados do evento. Esse é o campo principal usado para analisar eventos. |
| O tipo de evento. |
Consultar o evento log
Esta seção descreve o comportamento e a sintaxe do default para trabalhar com o evento logs para o pipeline configurado com o Unity Catalog e o modo de publicação default.
- Para obter o comportamento do pipeline Unity Catalog que usa o modo de publicação herdado, consulte Trabalhar com o evento log para o pipeline do modo de publicação herdado Unity Catalog.
- Para conhecer o comportamento e a sintaxe do pipeline Hive metastore, consulte Trabalhar com o evento log para o pipeline Hive metastore.
Em default, a DLT grava o evento log em uma tabela Delta oculta no catálogo default e no esquema configurado para pipeline. Embora oculta, a tabela ainda pode ser consultada por todos os usuários suficientemente privilegiados. Por default, somente o proprietário do pipeline pode consultar a tabela de eventos log.
Por default, o nome do evento oculto log é formatado como event_log_{pipeline_id}
, em que o ID pipeline é o UUID atribuído pelo sistema com tracejado substituído por sublinhado.
O senhor pode interagir com a configuração do JSON para publicar o evento log. Ao publicar um log de eventos, o senhor especifica o nome do log de eventos e, opcionalmente, pode especificar um catálogo e um esquema, como no exemplo a seguir:
{
"id": "ec2a0ff4-d2a5-4c8c-bf1d-d9f12f10e749",
"name": "billing_pipeline",
"event_log": {
"catalog": "catalog_name",
"schema": "schema_name",
"name": "event_log_table_name"
}
}
O local do log de eventos também serve como local do esquema para qualquer consulta do Auto Loader no pipeline. Databricks recomenda criar um view sobre a tabela log de eventos antes de modificar os privilégios, pois algumas configurações do compute podem permitir que os usuários obtenham acesso aos metadados do esquema se a tabela log de eventos for compartilhada diretamente. A sintaxe de exemplo a seguir cria um view em uma tabela de eventos log e é usada nas consultas de exemplo de eventos log incluídas neste artigo.
CREATE VIEW event_log_raw
AS SELECT * FROM catalog_name.schema_name.event_log_table_name;
Cada instância de uma execução de pipeline é chamada de atualização . O senhor geralmente deseja extrair informações para a atualização mais recente. Execute a consulta a seguir para encontrar o identificador da atualização mais recente e salve-o na pasta temporária latest_update
view. Esse view é usado no exemplo de consultas do evento log incluídas neste artigo:
CREATE OR REPLACE TEMP VIEW latest_update AS SELECT origin.update_id AS id FROM event_log_raw WHERE event_type = 'create_update' ORDER BY timestamp DESC LIMIT 1;
Em Unity Catalog, o senhor pode visualizar as consultas de transmissão de suporte. O exemplo a seguir usa a transmissão estruturada para consultar um view definido em cima de uma tabela de eventos log:
df = spark.readStream.table("event_log_raw")
O proprietário do pipeline pode publicar o log de eventos como uma tabela Delta pública, alternando a opção Publish event log to metastore
na seção Advanced (Avançado ) da configuração do pipeline. Opcionalmente, o senhor pode especificar um novo nome de tabela, catálogo e esquema para o log de eventos.
Consultar informações de linhagem do evento log
Os eventos que contêm informações sobre a linhagem têm o tipo de evento flow_definition
. O objeto details:flow_definition
contém os output_dataset
e input_datasets
que definem cada relacionamento no gráfico.
O senhor pode usar a seguinte consulta para extrair o conjunto de dados de entrada e saída para ver as informações de linhagem:
SELECT
details:flow_definition.output_dataset as output_dataset,
details:flow_definition.input_datasets as input_dataset
FROM
event_log_raw,
latest_update
WHERE
event_type = 'flow_definition'
AND
origin.update_id = latest_update.id
|
|
---|---|
|
|
|
|
|
|
|
|
Consultar a qualidade dos dados do evento log
Se o senhor definir expectativas sobre o conjunto de dados no site pipeline, as métricas de qualidade dos dados serão armazenadas no objeto details:flow_progress.data_quality.expectations
. Os eventos que contêm informações sobre a qualidade dos dados têm o tipo de evento flow_progress
. O exemplo a seguir consulta as métricas de qualidade de dados para a última atualização do pipeline:
SELECT
row_expectations.dataset as dataset,
row_expectations.name as expectation,
SUM(row_expectations.passed_records) as passing_records,
SUM(row_expectations.failed_records) as failing_records
FROM
(
SELECT
explode(
from_json(
details :flow_progress :data_quality :expectations,
"array<struct<name: string, dataset: string, passed_records: int, failed_records: int>>"
)
) row_expectations
FROM
event_log_raw,
latest_update
WHERE
event_type = 'flow_progress'
AND origin.update_id = latest_update.id
)
GROUP BY
row_expectations.dataset,
row_expectations.name
|
|
|
|
---|---|---|---|
|
| 4083 | 0 |
Consultar eventos Auto Loader a partir do evento log
O DLT gera eventos quando o Auto Loader processa arquivos. Para eventos do Auto Loader, o event_type
é operation_progress
e o details:operation_progress:type
é AUTO_LOADER_LISTING
ou AUTO_LOADER_BACKFILL
. O objeto details:operation_progress
também inclui os campos status
, duration_ms
, auto_loader_details:source_path
e auto_loader_details:num_files_listed
.
O exemplo a seguir consulta os eventos do Auto Loader para a última atualização:
SELECT
timestamp,
details:operation_progress.status,
details:operation_progress.type,
details:operation_progress:auto_loader_details
FROM
event_log_raw,
latest_update
WHERE
event_type like 'operation_progress'
AND
origin.update_id = latest.update_id
AND
details:operation_progress.type in ('AUTO_LOADER_LISTING', 'AUTO_LOADER_BACKFILL')
Monitorar o backlog de dados consultando o log de eventos
O DLT rastreia a quantidade de dados presente na lista de pendências no objeto details:flow_progress.metrics.backlog_bytes
. Os eventos que contêm métricas de backlog têm o tipo de evento flow_progress
. O exemplo a seguir consulta as métricas do backlog para a última atualização do pipeline:
SELECT
timestamp,
Double(details :flow_progress.metrics.backlog_bytes) as backlog
FROM
event_log_raw,
latest_update
WHERE
event_type ='flow_progress'
AND
origin.update_id = latest_update.id
As métricas de backlog podem não estar disponíveis dependendo do tipo de fonte de dados do pipelinee da versão do Databricks Runtime.
Monitorar eventos de autoescala aprimorados do evento log para pipeline sem serverless ativado
Para o pipeline DLT que não usa serverless compute, o evento log captura o redimensionamento do clustering quando a autoescala aprimorada está ativada em seu pipeline. Os eventos que contêm informações sobre a escala automática aprimorada têm o tipo de evento autoscale
. As informações da solicitação de redimensionamento do clustering são armazenadas no objeto details:autoscale
. O exemplo a seguir consulta as solicitações de redimensionamento do clustering de autoescala aprimorado para a última atualização do site pipeline:
SELECT
timestamp,
Double(
case
when details :autoscale.status = 'RESIZING' then details :autoscale.requested_num_executors
else null
end
) as starting_num_executors,
Double(
case
when details :autoscale.status = 'SUCCEEDED' then details :autoscale.requested_num_executors
else null
end
) as succeeded_num_executors,
Double(
case
when details :autoscale.status = 'PARTIALLY_SUCCEEDED' then details :autoscale.requested_num_executors
else null
end
) as partially_succeeded_num_executors,
Double(
case
when details :autoscale.status = 'FAILED' then details :autoscale.requested_num_executors
else null
end
) as failed_num_executors
FROM
event_log_raw,
latest_update
WHERE
event_type = 'autoscale'
AND
origin.update_id = latest_update.id
Monitorar a utilização do recurso compute
cluster_resources
Os eventos fornecem métricas sobre o número de slots de tarefa no clustering, o quanto esses slots de tarefa são utilizados e quantas tarefas estão esperando para serem agendadas.
Quando a escala automática aprimorada está ativada, os eventos cluster_resources
também contêm métricas para o algoritmo de escala automática, incluindo latest_requested_num_executors
e optimal_num_executors
. Os eventos também mostram o status do algoritmo em diferentes estados, como CLUSTER_AT_DESIRED_SIZE
, SCALE_UP_IN_PROGRESS_WAITING_FOR_EXECUTORS
e BLOCKED_FROM_SCALING_DOWN_BY_CONFIGURATION
.
Essas informações podem ser visualizadas em conjunto com os eventos de autoescala para fornecer uma visão geral da autoescala aprimorada.
O exemplo a seguir consulta o histórico do tamanho da fila da tarefa para a última atualização do site pipeline:
SELECT
timestamp,
Double(details :cluster_resources.avg_num_queued_tasks) as queue_size
FROM
event_log_raw,
latest_update
WHERE
event_type = 'cluster_resources'
AND
origin.update_id = latest_update.id
O exemplo a seguir consulta o histórico de utilização da última atualização do site pipeline:
SELECT
timestamp,
Double(details :cluster_resources.avg_task_slot_utilization) as utilization
FROM
event_log_raw,
latest_update
WHERE
event_type = 'cluster_resources'
AND
origin.update_id = latest_update.id
O exemplo a seguir consulta o histórico de contagem do executor, acompanhado de métricas disponíveis apenas para o pipeline de autoescala aprimorado, incluindo o número de executores solicitados pelo algoritmo na última solicitação, o número ideal de executores recomendados pelo algoritmo com base nas métricas mais recentes e o estado do algoritmo de autoescala:
SELECT
timestamp,
Double(details :cluster_resources.num_executors) as current_executors,
Double(details :cluster_resources.latest_requested_num_executors) as latest_requested_num_executors,
Double(details :cluster_resources.optimal_num_executors) as optimal_num_executors,
details :cluster_resources.state as autoscaling_state
FROM
event_log_raw,
latest_update
WHERE
event_type = 'cluster_resources'
AND
origin.update_id = latest_update.id
Auditoria do pipeline de DLT
É possível usar os registros de log de eventos do DLT e outros logs de auditoria do Databricks para obter uma visão completa de como os dados estão sendo atualizados no DLT.
A DLT usa as credenciais do proprietário do pipeline para executar atualizações. O senhor pode alterar as credenciais usadas atualizando o proprietário do pipeline. A DLT registra o usuário para ações no pipeline, incluindo a criação do pipeline, edições na configuração e acionamento de atualizações.
Consulte Eventos do Unity Catalog para obter uma referência dos eventos de auditoria do Unity Catalog.
Consultar as ações do usuário no evento log
O senhor pode usar o log de eventos para auditar eventos, por exemplo, ações de usuários. Os eventos que contêm informações sobre ações do usuário têm o tipo de evento user_action
.
As informações sobre a ação são armazenadas no objeto user_action
no campo details
. Use a consulta a seguir para criar um log de auditoria de eventos de usuários. Para criar o event_log_raw
view usado nesta consulta, consulte Consultar o evento log.
SELECT timestamp, details:user_action:action, details:user_action:user_name FROM event_log_raw WHERE event_type = 'user_action'
|
|
|
---|---|---|
2021-05-20T 19:36:03.517 +0000 |
|
|
2021-05-20T 19:35:59.913 +0000 |
|
|
2021-05-27T 00:35:51.971 +0000 |
|
|
Runtime informações
O senhor pode view informações de tempo de execução para uma atualização pipeline, por exemplo, a versão Databricks Runtime da atualização:
SELECT details:create_update:runtime_version:dbr_version FROM event_log_raw WHERE event_type = 'create_update'
|
---|
11.0 |