Monitorar pipelines Delta Live Tables
Este artigo descreve como o senhor pode usar o recurso de monitoramento integrado e observabilidade para o pipeline Delta Live Tables, incluindo linhagem de dados, histórico de atualizações e relatórios de qualidade de dados.
Você pode revisar a maioria dos dados de monitoramento manualmente por meio da IU de detalhes do pipeline. Algumas tarefas são mais fáceis de realizar consultando os metadados logs de eventos. Consulte O que são os logs de eventos do Delta Live Tables?.
Quais detalhes do pipeline estão disponíveis na IU?
O gráfico do pipeline é exibido assim que uma atualização de um pipeline é iniciada com sucesso. As setas representam dependências entre dataset no seu pipeline. Por default, a página de detalhes do pipeline mostra a atualização mais recente da tabela, mas você pode selecionar atualizações mais antigas em um menu suspenso.
Os detalhes exibidos incluem o ID do pipeline, a biblioteca de origem, o custo do compute, a edição do produto e o canal configurado para o pipeline.
Para ver uma tabular view do dataset, clique na Lista tab. A de lista view permite que você veja todos os dataset em seu pipeline representados como uma linha em uma tabela e é útil quando o DAG do pipeline é muito grande para ser visualizado na de gráfico view. Você pode controlar o dataset exibido na tabela usando vários filtros, como nome, tipo e status do dataset . Para voltar à visualização do DAG, clique em gráficos.
A execução como usuário é 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 Permissões e altere o proprietário do pipeline.
Como você pode visualizar os detalhes do conjunto de dados?
Clicar em um dataset no gráfico do pipeline ou na lista dataset exibe detalhes sobre o dataset. Os detalhes incluem o esquema dataset , métricas de qualidade de dados e um link para o código-fonte que define o dataset.
Ver histórico de atualização
Para view a história e o status das atualizações do pipeline, clique no menu suspenso atualizar história na barra superior.
Para view o gráfico, os detalhes e os eventos de uma atualização, selecione a atualização no menu suspenso. Para retornar à atualização mais recente, clique em Mostrar a atualização mais recente.
Receba notificações para eventos de pipeline
Para receber notificações em tempo real para eventos de pipeline, como conclusão bem-sucedida de uma atualização de pipeline ou falha de uma atualização de pipeline, adicione Adicionar notificações por email para eventos de pipeline ao criar ou editar um pipeline.
O que são os logs de eventos do Delta Live Tables?
O log de eventos Delta Live Tables contém todas as informações relacionadas a um pipeline, incluindo logs de auditoria, verificações de qualidade de dados, progresso do pipeline e linhagem de dados. Você pode usar os logs de eventos para rastrear, entender e monitorar o estado de seu pipeline de dados.
É possível acessar as entradas do evento view log na interface de usuário Delta Live Tables, no site Delta Live Tables APIou consultando diretamente o evento log. Esta seção se concentra na consulta direta ao log de eventos.
Você também pode definir ações customizadas para execução quando eventos forem logs, por exemplo, envio de alerta, com event hooks.
Esquema logs de eventos
A tabela a seguir descreve o esquema logs de eventos. Alguns desses campos contêm dados JSON que requerem análise para realizar alguma query, como o campo details
. Databricks oferece suporte ao operador :
para analisar campos JSON. Veja : (sinal de dois pontos) operador.
Campo |
Descrição |
---|---|
|
Um identificador exclusivo para o registro logs de eventos. |
|
Um documento JSON contendo metadados para identificar e ordenar eventos. |
|
Um documento JSON contendo metadados para a origem do evento, por exemplo, o provedor clouds , a região do provedor clouds , |
|
A hora em que o evento foi registrado. |
|
Uma mensagem legível por humanos descrevendo o evento. |
|
O tipo de evento, por exemplo, |
|
Se ocorreu um erro, detalhes descrevendo o erro. |
|
Um documento JSON contendo detalhes estruturados do evento. Este é o campo principal usado para analisar eventos. |
|
O tipo de evento. |
|
A estabilidade do esquema de eventos. Os valores possíveis são:
|
Consultando os logsde eventos
A localização dos logs de eventos e a interface para query os logs de eventos dependem se o seu pipeline está configurado para usar o Hive metastore ou Unity Catalogs.
Hive metastore
Se seu pipeline publicar tabelas no Hive metastore, os logs de eventos serão armazenados em /system/events
no local storage
. Por exemplo, se você configurou o pipeline storage
como /Users/username/data
, os logs de eventos são armazenados no caminho /Users/username/data/system/events
no DBFS.
Se você não configurou a configuração storage
, o local default logs de eventos é /pipelines/<pipeline-id>/system/events
no DBFS. Por exemplo, se o ID do pipeline for 91de5e48-35ed-11ec-8d3d-0242ac130003
, o local de armazenamento será /pipelines/91de5e48-35ed-11ec-8d3d-0242ac130003/system/events
.
Você pode criar uma view para simplificar a consulta dos logs de eventos. O exemplo a seguir cria uma view temporária chamada event_log_raw
. Esta view é usada no exemplo query logs de eventos incluído nestes artigos:
CREATE OR REPLACE TEMP VIEW event_log_raw AS SELECT * FROM delta.`<event-log-path>`;
Substitua <event-log-path>
pelo local logs de eventos.
Cada instância de uma execução de pipeline é chamada de atualização. Muitas vezes você deseja extrair informações para a atualização mais recente. execute a query a seguir para localizar o identificador da atualização mais recente e salve-o na view temporária latest_update_id
. Esta view é usada no exemplo query logs de eventos incluído nestes artigos:
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;
Você pode query os logs in um Databricks Notebook ou no editor SQL. Use um Notebook ou o editor SQL para executar a query logs eventos de exemplo.
Unity Catalog
Se seu pipeline publica tabelas para Unity Catalogs, você deve usar a função de valor de tabela event_log
(TVF) para buscar os logs de eventos para o pipeline. Você recupera os logs de eventos de um pipeline passando a ID do pipeline ou um nome de tabela para o TVF. Por exemplo, para recuperar os registros logs de eventos para o pipeline com ID 04c78631-3dd7-4856-b2a6-7d84e9b2638b
:
SELECT * FROM event_log("04c78631-3dd7-4856-b2a6-7d84e9b2638b")
Para recuperar os registros logs de eventos para o pipeline que criou ou possui a tabela my_catalog.my_schema.table1
:
SELECT * FROM event_log(TABLE(my_catalog.my_schema.table1))
Para chamar o TVF, você deve usar clusters compartilhados ou um armazém SQL. Por exemplo, você pode usar um Notebook anexado a clusters compartilhados ou usar o editor SQL conectado a um SQL warehouse.
Para simplificar a consulta de eventos para um pipeline, o proprietário do pipeline pode criar uma view sobre o event_log
TVF. O exemplo a seguir cria uma view dos logs de eventos de um pipeline. Essa view é usada na query logs de eventos de exemplo incluída neste artigo.
Observação
O TVF event_log
pode ser chamado apenas pelo proprietário do pipeline e uma view criada sobre o TVF event_log
pode ser query apenas pelo proprietário do pipeline. A view não pode ser compartilhada com outros usuários.
CREATE VIEW event_log_raw AS SELECT * FROM event_log("<pipeline-ID>");
Substitua <pipeline-ID>
pelo identificador exclusivo do pipeline Delta Live Tables. Você pode encontrar o ID no painel de detalhes do pipeline na IU do Delta Live Tables.
Cada instância de uma execução de pipeline é chamada de atualização. Muitas vezes você deseja extrair informações para a atualização mais recente. execute a query a seguir para localizar o identificador da atualização mais recente e salve-o na view temporária latest_update_id
. Esta view é usada no exemplo query logs de eventos incluído nestes artigos:
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;
Consultar informações de linhagem dos logsde eventos
Eventos contendo informações sobre linhagem possuem o tipo de evento flow_definition
. O objeto details:flow_definition
contém o output_dataset
e input_datasets
que definem cada relacionamento no gráfico.
Você pode usar a seguinte query para extrair o dataset de entrada e saída para ver a informação 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 dos logsde eventos
Se você definir expectativas no dataset em seu pipeline, as métricas de qualidade de dados serão armazenadas no objeto details:flow_progress.data_quality.expectations
. Eventos contendo informações sobre qualidade de dados possuem o tipo de evento flow_progress
. O exemplo a seguir query 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 |
Monitorelogs de dados de volta consultando os logsde eventos
Delta Live Tables rastreia quantos dados estão presentes no backlog 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 query métricas de 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
Observação
As métricas de backlog podem não estar disponíveis dependendo do tipo de fonte de dados do pipeline e da versão do Databricks Runtime.
Monitorar eventos de autoescala aprimorada do evento log para pipeline sem serverless ativado
Para o pipeline DLT que não usa serverless compute, o evento log captura cluster redimensiona quando a escala automática aprimorada está ativada em seu pipeline. Os eventos que contêm informações sobre o Enhanced autoscale têm o tipo de evento autoscale
. As informações da solicitação de redimensionamento do cluster são armazenadas no objeto details:autoscale
. O exemplo a seguir consulta as solicitações de redimensionamento do Enhanced autoscale cluster para a última atualização do 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
Monitore a utilização de recursos de computação
cluster_resources
os eventos fornecem métricas sobre o número de slots de tarefa nos clusters, quanto esses slots de tarefa são utilizados e quantas tarefas estão esperando para serem agendadas.
Quando autoscale aprimorado está ativado, os eventos cluster_resources
também contêm métricas para o algoritmo autoscale , incluindo latest_requested_num_executors
e optimal_num_executors
. Os eventos também mostram o status do algoritmo como estados diferentes, como CLUSTER_AT_DESIRED_SIZE
, SCALE_UP_IN_PROGRESS_WAITING_FOR_EXECUTORS
e BLOCKED_FROM_SCALING_DOWN_BY_CONFIGURATION
. Esta informação pode ser view em conjunto com os eventos autoscale para fornecer uma visão geral da autoscale aprimorada.
O exemplo a seguir query o histórico do tamanho da fila de tarefas para a última atualização do 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 query o histórico de utilização para a última atualização do 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 query o histórico de contagem do executor, acompanhado de métricas disponíveis apenas para pipelines de autoscale aprimorado, 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 autoscale :
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 Delta Live Tables
Você pode usar os registros de log de eventos do Delta Live Tables e outros logs de auditoria do Databricks para obter uma visão completa de como os dados estão sendo atualizados no Delta Live Tables.
Delta Live Tables usa as credenciais do proprietário do pipeline para atualizações de execução. Você pode alterar as credenciais usadas atualizando o proprietário do pipeline. Delta Live Tables registra o usuário para ações no pipeline, incluindo criação de pipeline, edições na configuração e atualizações de acionamento.
Consulte Eventos do Unity Catalog para obter uma referência dos eventos de auditoria do Unity Catalog.
Consultar ações do usuário nos logsde eventos
Você pode usar os logs de eventos para auditar eventos, por exemplo, ações do usuário. Eventos contendo informações sobre ações do usuário possuem o tipo de evento user_action
.
informações sobre a ação são armazenadas no objeto user_action
no campo details
. Use a query a seguir para construir logs de auditoria de eventos do usuário. Para criar a view event_log_raw
usada nesta consulta, consulte Consultando os logsde eventos.
SELECT timestamp, details:user_action:action, details:user_action:user_name FROM event_log_raw WHERE event_type = 'user_action'
|
|
|
---|---|---|
2021-05-20T19:36:03.517+0000 |
|
|
2021-05-20T19:35:59.913+0000 |
|
|
2021-05-27T00:35:51.971+0000 |
|
|