Pular para o conteúdo principal

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:

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:

  1. Clique em Adicionar notificação .
  2. Digite um ou mais endereços email para receber notificações.
  3. Clique na caixa de seleção de cada tipo de notificação a ser enviada para os endereços email configurados.
  4. 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

info

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 Ícone do gráfico DLT ao visualizar o pipeline DAG na UI gráfica view. Para view a transmissão métrica, clique em Ícone do gráfico DLT 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.

important

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

id

Um identificador exclusivo para o registro do log de eventos.

sequence

Um documento JSON que contém 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 mudará. - NULL: O esquema é estável e não mudará. O valor pode ser NULL se o registro tiver sido criado antes da adição do campo maturity_level (versão 2022.37). - EVOLVING: O esquema não é estável e pode mudar. - DEPRECATED: O esquema está obsoleto e o tempo de execução da DLT pode parar de produzir esse evento a qualquer momento.

error

Se ocorreu um erro, detalhes descrevendo o erro.

details

Um documento JSON que contém detalhes estruturados do evento. Esse é o campo principal usado para analisar eventos.

event_type

O tipo de evento.

Consultar o evento log

nota

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.

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:

JSON
{
"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.

SQL
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:

SQL
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:

Python
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:

SQL
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"]

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:

SQL
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 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:

SQL
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:

SQL
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
nota

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:

SQL
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:

SQL
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:

SQL
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:

SQL
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.

SQL
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-20T 19:36:03.517 +0000

START

user@company.com

2021-05-20T 19:35:59.913 +0000

CREATE

user@company.com

2021-05-27T 00:35:51.971 +0000

START

user@company.com

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:

SQL
SELECT details:create_update:runtime_version:dbr_version FROM event_log_raw WHERE event_type = 'create_update'

dbr_version

11.0