Monitorizar fluxos DLT
Este artigo descreve o uso de funcionalidades integradas de monitorização e observabilidade para pipelines DLT. Esses recursos suportam tarefas como:
- Observação do progresso e do estado das atualizações do pipeline. Consulte Quais detalhes do pipeline estão disponíveis na interface do usuário?.
- Alertar para eventos no pipeline, como o sucesso ou a falha das atualizações do pipeline. Consulte Adicionar notificações por e-mail para eventos de pipeline.
- Visualização de métricas para fontes de streaming como Apache Kafka e Auto Loader (Public Preview). Consulte Ver métricas de streaming.
- Extração de informações detalhadas sobre atualizações de pipeline, como linhagem de dados, métricas de qualidade de dados e uso de recursos. Consulte O que é o log de eventos DLT?.
- Definição de ações personalizadas a serem executadas quando eventos específicos ocorrerem. Consulte Definir monitorização personalizada de pipelines DLT com ganchos de evento.
Para inspecionar e diagnosticar o desempenho da consulta, consulte Histórico de consultas do Access para pipelines DLT. Esta funcionalidade encontra-se na Pré-visualização Pública.
Adicionar notificações por e-mail para eventos de pipeline
Você pode configurar um ou mais endereços de e-mail para receber notificações quando ocorrer o seguinte:
- Uma atualização de pipeline é concluída com êxito.
- Uma atualização do pipeline falha, seja com um erro recuperável ou irrecuperável. Selecione esta opção para receber uma notificação para todas as falhas de pipeline.
- Uma atualização de pipeline falha com um erro não recorrível (fatal). Selecione esta opção para receber uma notificação somente quando ocorrer um erro não recorrível.
- Um único fluxo de dados falha.
Para configurar notificações por e-mail quando você criar ou editar um pipeline:
- Clique Adicionar notificação.
- Insira um ou mais endereços de e-mail para receber notificações.
- Clique na caixa de seleção para cada tipo de notificação para enviar para os endereços de e-mail configurados.
- Clique Adicionar notificação.
Quais detalhes do pipeline estão disponíveis na interface do usuário?
O gráfico de pipeline aparece assim que uma atualização de um pipeline é iniciada com êxito. As setas representam dependências entre conjuntos de dados em seu pipeline. Por predefinição, a página de detalhes do pipeline mostra a atualização mais recente para a tabela, mas você pode selecionar atualizações mais antigas em um menu suspenso.
Os detalhes incluem o ID do pipeline, o código-fonte, o custo de computação, a edição do produto e o canal configurado para o pipeline.
Para ver uma vista tabular dos conjuntos de dados, clique no separador Lista. A vista Lista permite que veja todos os conjuntos de dados no seu pipeline representados como uma linha numa tabela e é útil quando o DAG do pipeline é demasiado grande para ser visualizado na vista Gráfico. Você pode controlar os conjuntos de dados exibidos na tabela usando vários filtros, como nome, tipo e status do conjunto de dados. Para voltar para a visualização do DAG, clique em Gráfico.
O Executar como utilizador é o proprietário do pipeline e as atualizações do pipeline são executadas com as permissões deste utilizador. Para alterar o usuário run as
, clique em Permissões e altere o proprietário do pipeline.
Como você pode visualizar os detalhes do conjunto de dados?
Clicar em um conjunto de dados no gráfico de pipeline ou na lista de conjuntos de dados mostra detalhes sobre o conjunto de dados. Os detalhes incluem o esquema do conjunto de dados, métricas de qualidade de dados e um link para o código-fonte que define o conjunto de dados.
Ver histórico de atualizações
Para visualizar o histórico e o estado das atualizações do pipeline, clique no menu suspenso de histórico de atualizações na barra superior.
Selecione a atualização no menu suspenso para visualizar um gráfico, os detalhes e os eventos dessa atualização. Para regressar à atualização mais recente, clique Mostrar a atualização mais recente.
Ver métricas de streaming
Importante
A observabilidade de streaming para DLT está em Public Preview.
Você pode visualizar métricas de streaming das fontes de dados suportadas pelo Spark Structured Streaming, como Apache Kafka, Amazon Kinesis, Auto Loader e tabelas Delta, para cada fluxo de streaming em seu pipeline de DLT. As métricas são exibidas como gráficos no painel direito da interface de utilizador DLT e incluem segundos de atraso, bytes de atraso, registos de atraso e ficheiros de atraso. 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 estão limitados às últimas 48 horas a partir da hora atual.
As tabelas no seu pipeline com métricas de streaming disponíveis exibem o ícone de gráfico DLT ao visualizar o DAG do pipeline na visualização de gráfico da interface do utilizador. Para exibir as métricas de streaming, clique no
para exibir o gráfico de métricas de streaming no separador Fluxos no painel direito. Você também pode aplicar um filtro para exibir apenas tabelas com métricas de streaming clicando em Lista e, em seguida, clicando em Possui métricas de streaming.
Cada fonte de streaming suporta apenas métricas específicas. As métricas não suportadas por uma fonte de streaming não estão disponíveis para visualização na interface do usuário. A tabela a seguir mostra as métricas disponíveis para fontes de streaming suportadas:
fonte | bytes em atraso | Registos de pendências | segundos de atraso acumulado | Arquivos de pendências |
---|---|---|---|---|
Kafka | ✓ | ✓ | ||
Cinesis | ✓ | ✓ | ||
Delta; | ✓ | ✓ | ||
Carregador Automático | ✓ | ✓ | ||
Google Pub/Sub | ✓ | ✓ |
O que é o log de eventos DLT?
O registo de eventos DLT contém todas as informações relacionadas a um pipeline, incluindo logs de auditoria, verificações de qualidade de dados, progresso do pipeline e proveniência de dados. Você pode usar o log de eventos para rastrear, entender e monitorar o estado de seus pipelines de dados.
Você pode visualizar as entradas de log de eventos na interface do usuário DLT, na API DLT ou através de consulta direta ao log de eventos. Esta seção se concentra em consultar o log de eventos diretamente.
Você também pode definir ações personalizadas a serem executadas quando os eventos são registados, como por exemplo o envio de alertas, com hooks de eventos .
Importante
Não elimines o log de eventos, o catálogo pai ou o esquema onde o log de eventos é publicado. A exclusão do log de eventos pode resultar na falha na atualização do pipeline durante execuções futuras.
Esquema do log de eventos
A tabela a seguir descreve o esquema do log de eventos. Alguns desses campos contêm dados JSON que exigem análise para executar algumas consultas, como o campo details
. O Azure Databricks dá suporte ao operador :
para analisar campos JSON. Consulte :
(sinal de dois pontos) operador.
Campo | Descrição |
---|---|
id |
Um identificador exclusivo para o registro do log de eventos. |
sequence |
Um documento JSON contendo metadados para identificar e ordenar eventos. |
origin |
Um documento JSON contendo metadados para a origem do evento, por exemplo, o provedor de nuvem, a região do provedor de nuvem, user_id , pipeline_id ou pipeline_type para mostrar onde o pipeline foi criado, DBSQL ou WORKSPACE . |
timestamp |
A hora em que o evento foi gravado. |
message |
Uma mensagem legível por humanos descrevendo o evento. |
level |
O tipo de evento, por exemplo, INFO , WARN , ERROR ou METRICS . |
maturity_level |
A estabilidade do esquema de eventos. Os valores possíveis são: - STABLE : O esquema é estável e não será alterado.- NULL : O esquema é estável e não será alterado. O valor pode ser NULL se o registro tiver sido criado antes da adição do campo maturity_level (release 2022.37).- EVOLVING : O esquema não é estável e pode mudar.- DEPRECATED : O esquema foi preterido e o tempo de execução DLT pode parar de produzir esse evento a qualquer momento. |
error |
Se ocorreu um erro, detalhes descrevendo o erro. |
details |
Um documento JSON contendo detalhes estruturados do evento. Este é o campo principal usado para analisar eventos. |
event_type |
O tipo de evento. |
Consultar o registo de eventos
Observação
Esta seção descreve o comportamento padrão e a sintaxe para trabalhar com logs de eventos para pipelines configurados com o Unity Catalog e o modo de publicação padrão.
- Para entender o comportamento dos pipelines do Unity Catalog que utilizam o modo de publicação herdado, consulte Trabalho com log de eventos para pipelines no modo de publicação herdado do Unity Catalog.
- Para obter o comportamento e a sintaxe para pipelines de metastore do Hive, consulte Trabalhar com log de eventos para pipelines de metastore do Hive.
Por padrão, a DLT grava o log de eventos em uma tabela Delta oculta no catálogo e esquema padrão configurados para o pipeline. Embora oculta, a tabela ainda pode ser consultada por todos os usuários suficientemente privilegiados. Por padrão, somente o proprietário do pipeline pode consultar a tabela de log de eventos.
Por defeito, o nome do log de eventos oculto é formatado como event_log_{pipeline_id}
, onde o ID do pipeline é o UUID atribuído pelo sistema, onde as barras são substituídas por sublinhados.
Você pode interagir com a configuração JSON para publicar o log de eventos. Ao publicar um log de eventos, você especifica o nome para o 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 o local do esquema para quaisquer consultas do Auto Loader no pipeline. O Databricks recomenda a criação de uma exibição sobre a tabela de log de eventos antes de modificar os privilégios, pois algumas configurações de computação podem permitir que os usuários obtenham acesso aos metadados do esquema se a tabela do log de eventos for compartilhada diretamente. A seguinte sintaxe de exemplo cria uma vista numa tabela de log de eventos e é utilizada nas consultas de log de eventos de exemplo 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 é denominada uma atualização de . Muitas vezes, você deseja extrair informações para a atualização mais recente. Execute a consulta a seguir para localizar o identificador da atualização mais recente e salvá-lo no modo de exibição latest_update
temporário. Esse modo de exibição é usado nas consultas de log de eventos de exemplo 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;
No Unity Catalog, as visualizações suportam consultas de streaming. O exemplo a seguir usa Structured Streaming para consultar uma vista definida sobre uma tabela de log de eventos.
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 Avançada da configuração do pipeline. Opcionalmente, você pode especificar um novo nome de tabela, catálogo e esquema para o log de eventos.
Consultar informações de linhagem do log de eventos
Os eventos que contêm informações sobre linhagem têm o tipo de evento flow_definition
. O objeto details:flow_definition
contém o output_dataset
e input_datasets
que definem cada relação no gráfico.
Você pode usar a seguinte consulta para extrair os conjuntos de dados de entrada e saída para ver 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
output_dataset |
input_datasets |
---|---|
customers |
null |
sales_orders_raw |
null |
sales_orders_cleaned |
["customers", "sales_orders_raw"] |
sales_order_in_la |
["sales_orders_cleaned"] |
Qualidade dos dados de consulta a partir do registo de eventos
Se você definir expectativas em conjuntos de dados em seu pipeline, as métricas de qualidade de 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
dataset |
expectation |
passing_records |
failing_records |
---|---|---|---|
sales_orders_cleaned |
valid_order_number |
4083 | 0 |
Consultar eventos do Carregador Automático a partir do registo de eventos
DLT gera eventos quando Auto Loader processa arquivos. Para eventos do Auto Loader, o event_type
é operation_progress
e o details:operation_progress:type
é ou AUTO_LOADER_LISTING
ou AUTO_LOADER_BACKFILL
. O objeto details:operation_progress
também inclui campos status
, duration_ms
, auto_loader_details:source_path
e auto_loader_details:num_files_listed
.
O exemplo a seguir consulta eventos do Auto Loader para a atualização mais recente:
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')
Monitore a lista de pendências de dados consultando o log de eventos
A DLT rastreia a quantidade de dados presentes na lista de pendências no objeto details:flow_progress.metrics.backlog_bytes
. Os eventos que contêm métricas de lista de pendências têm o tipo de evento flow_progress
. O exemplo a seguir consulta métricas de lista de pendências para a última atualização de 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
Observação
As métricas da lista de pendências podem não estar disponíveis, dependendo do tipo de fonte de dados do pipeline e da versão do Databricks Runtime.
Monitore eventos de dimensionamento automático aprimorados a partir do log de eventos para pipelines sem servidor habilitado
Para pipelines DLT que não usam computação sem servidor, o log de eventos captura redimensionamentos de cluster quando o dimensionamento automático avançado está habilitado em seus pipelines. Os eventos que contêm informações sobre o dimensionamento automático avançado têm o tipo de evento autoscale
. As informações de solicitação de redimensionamento do cluster são armazenadas no objeto details:autoscale
. O exemplo a seguir consulta as solicitações de redimensionamento de cluster de dimensionamento automático avançado para a última atualização de 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 de recursos de computação
cluster_resources
eventos fornecem métricas sobre o número de slots de tarefas no cluster, quanto esses slots de tarefa são utilizados e quantas tarefas estão esperando para serem agendadas.
Quando o dimensionamento automático avançado está habilitado, cluster_resources
eventos também contêm métricas para o algoritmo de dimensionamento automático, incluindo latest_requested_num_executors
e optimal_num_executors
. Os eventos também mostram o status do algoritmo como 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 dimensionamento automático para fornecer uma imagem geral do dimensionamento automático aprimorado.
O exemplo a seguir consulta o histórico de tamanho da fila de tarefas para a última atualização de 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 de 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 por métricas disponíveis apenas para pipelines de dimensionamento automático aprimorados, incluindo o número de executores solicitados pelo algoritmo na solicitação mais recente, o número ideal de executores recomendado pelo algoritmo com base nas métricas mais recentes e o estado do algoritmo de dimensionamento automático:
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
Auditar pipelines de DLT
Você pode usar registros de log de eventos DLT e outros logs de auditoria do Azure Databricks para obter uma imagem completa de como os dados estão sendo atualizados na DLT.
A DLT usa as credenciais do proprietário do pipeline para executar atualizações. Você pode alterar as credenciais usadas atualizando o proprietário do pipeline. A DLT regista o utilizador para ações no âmbito do pipeline, incluindo criação de pipeline, edições na configuração e ativação de atualizações.
Consulte os eventos do Catálogo Unity para obter uma referência dos eventos de auditoria do Catálogo Unity.
Consultar ações do usuário no log de eventos
Você pode usar o log de eventos para auditar eventos, por exemplo, ações do usuário. 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 construir um log de auditoria de eventos do usuário. Para criar a vista event_log_raw
utilizada nesta consulta, veja Consultar o registo de eventos.
SELECT timestamp, details:user_action:action, details:user_action:user_name FROM event_log_raw WHERE event_type = 'user_action'
timestamp |
action |
user_name |
---|---|---|
2021-05-20T19:36:03.517+0000 | START |
user@company.com |
2021-05-20T19:35:59.913+0000 | CREATE |
user@company.com |
2021-05-27T00:35:51.971+0000 | START |
user@company.com |
Informações sobre o tempo de execução
Você pode exibir informações de tempo de execução para uma atualização de pipeline, por exemplo, a versão do Databricks Runtime para a atualização:
SELECT details:create_update:runtime_version:dbr_version FROM event_log_raw WHERE event_type = 'create_update'
dbr_version |
---|
11.0 |