Partilhar via


Monitorize os pipelines Delta Live Tables

Este artigo descreve o uso de recursos internos de monitoramento e observabilidade para pipelines Delta Live Tables. Esses recursos suportam tarefas como:

Para inspecionar e diagnosticar o desempenho da consulta, consulte Histórico de consultas do Access para pipelines do Delta Live Tables. Esta funcionalidade está em 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 de pipeline falha, seja com um erro retryable ou não retryable. 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 ao criar ou editar um pipeline:

  1. Clique em Adicionar notificação.
  2. Insira um ou mais endereços de e-mail para receber notificações.
  3. Clique na caixa de seleção para cada tipo de notificação para enviar para os endereços de e-mail configurados.
  4. Clique em Adicionar notificação.

Quais detalhes do pipeline estão disponíveis na interface do usuário?

O gráfico de pipeline é exibido assim que uma atualização de um pipeline é iniciada com êxito. As setas representam dependências entre conjuntos de dados em seu pipeline. Por padrã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 exibição tabular de conjuntos de dados, clique na guia Lista . O modo de exibição Lista permite que você veja todos os conjuntos de dados em seu pipeline representados como uma linha em uma tabela e é útil quando o DAG do pipeline é muito grande para ser visualizado no modo de exibição 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 usuário Executar como é o proprietário do pipeline e as atualizações do pipeline são executadas com as permissões desse usuário. Para alterar o run as usuário, 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 exibe 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 exibir o histórico e o status das atualizações de pipeline, clique no menu suspenso histórico de atualizações na barra superior.

Selecione a atualização no menu suspenso para visualizar o gráfico, os detalhes e os eventos de uma atualização. Para regressar à atualização mais recente, clique em Mostrar a atualização mais recente.

O que é o log de eventos Delta Live Tables?

O registo de eventos do Delta Live Tables contém todas as informações relacionadas com um pipeline, incluindo registos de auditoria, verificações de qualidade de dados, progresso do pipeline e linhagem de dados. Pode utilizar o registo de eventos para controlar, compreender e monitorizar o estado dos seus pipelines de dados.

Pode ver entradas de registos de eventos na interface de utilizador do Delta Live Tables, na API do Delta Live Tables ou ao consultar diretamente o registo 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 registrados, por exemplo, enviando alertas, com ganchos de eventos.

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 details campo. 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, , ou pipeline_type para mostrar onde o pipeline foi criado, ou DBSQL WORKSPACE. pipeline_id
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, , WARNERROR, ou METRICS.
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.
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 foi criado antes do maturity_level campo ser adicionado (versão 2022.37).
- EVOLVING: O esquema não é estável e pode mudar.
- DEPRECATED: O esquema foi preterido e o tempo de execução do Delta Live Tables pode parar de produzir esse evento a qualquer momento.

Consultando o log de eventos

O local do log de eventos e a interface para consultar o log de eventos dependem se o pipeline está configurado para usar o metastore do Hive ou o Unity Catalog.

Metastore do Hive

Se o pipeline publicar tabelas no metastore do Hive, o log de eventos será armazenado no /system/events storage local. Por exemplo, se você tiver configurado sua configuração de pipeline storage como /Users/username/data, o log de eventos será armazenado no /Users/username/data/system/events caminho no DBFS.

Se você não tiver configurado a storage configuração, o local padrão do log de eventos estará /pipelines/<pipeline-id>/system/events no DBFS. Por exemplo, se o ID do seu pipeline for 91de5e48-35ed-11ec-8d3d-0242ac130003, o local de armazenamento será /pipelines/91de5e48-35ed-11ec-8d3d-0242ac130003/system/events.

Você pode criar um modo de exibição para simplificar a consulta ao log de eventos. O exemplo a seguir cria um modo de exibição temporário chamado event_log_raw. Esse modo de exibição é usado nas consultas de log de eventos de exemplo incluídas neste artigo:

CREATE OR REPLACE TEMP VIEW event_log_raw AS SELECT * FROM delta.`<event-log-path>`;

Substitua <event-log-path> pelo local do log 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 consulta a seguir para localizar o identificador da atualização mais recente e salvá-lo no latest_update_id modo de exibição 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;

Você pode consultar o log de eventos em um bloco de anotações do Azure Databricks ou no editor SQL. Use um bloco de anotações ou o editor SQL para executar as consultas de log de eventos de exemplo.

Catálogo Unity

Se o pipeline publicar tabelas no Unity Catalog, você deverá usar a função com valor de event_log tabela (TVF) para buscar o log de eventos para o pipeline. Você recupera o log de eventos de um pipeline passando a ID do pipeline ou um nome de tabela para o TVF. Por exemplo, para recuperar os registros de log 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 do log 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 um cluster compartilhado ou um SQL warehouse. Por exemplo, você pode usar um bloco de anotações anexado a um cluster compartilhado 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 exibição sobre o event_log TVF. O exemplo a seguir cria uma exibição sobre o log de eventos para um pipeline. Esse modo de exibição é usado nas consultas de log de eventos de exemplo incluídas neste artigo.

Nota

O event_log TVF pode ser chamado apenas pelo proprietário do pipeline e uma visão criada sobre o event_log TVF pode ser consultada apenas pelo proprietário do pipeline. A vista não pode ser partilhada com outros utilizadores.

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 Detalhes do pipeline na interface do usuário 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 consulta a seguir para localizar o identificador da atualização mais recente e salvá-lo no latest_update_id modo de exibição 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;

Consultar informações de linhagem do log de eventos

Os eventos que contêm informações sobre linhagem têm o tipo flow_definitionde evento . O details:flow_definition objeto contém o output_dataset e input_datasets definindo 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"]

Consultar a qualidade dos dados a partir do registo de eventos

Se você definir expectativas em conjuntos de dados em seu pipeline, as métricas de qualidade de details:flow_progress.data_quality.expectations dados serão armazenadas no objeto. Os eventos que contêm informações sobre a qualidade dos dados têm o tipo flow_progressde evento . O exemplo a seguir consulta as métricas de qualidade de dados para a última atualização de 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

Monitore a lista de pendências de dados consultando o log de eventos

O Delta Live Tables controla a quantidade de dados presentes na lista de pendências no details:flow_progress.metrics.backlog_bytes objeto. Os eventos que contêm métricas de lista de pendências têm o tipo flow_progressde evento . 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

Nota

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 do log de eventos para pipelines sem habilitação sem servidor

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 autoscalede evento . As informações de solicitação de redimensionamento do details:autoscale cluster são armazenadas no objeto. 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 Os 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 os 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_EXECUTORSe 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 Delta Live Tables

Pode utilizar registos de eventos do Delta Live Tables e outros registos de auditoria do Azure Databricks para obter uma imagem completa de como os dados estão a ser atualizados no Delta Live Tables.

O Delta Live Tables utiliza as credenciais do proprietário do pipeline para executar atualizações. Pode alterar as credenciais utilizadas ao atualizar o proprietário do pipeline. O Delta Live Tables regista o utilizador para ações no pipeline, incluindo a criação de pipelines, edições à configuração e acionamento de atualizações.

Consulte Eventos do Catálogo Unity para obter uma referência dos eventos de auditoria do Catálogo Unity.

Consultar ações de utilizador no registo 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 as ações do usuário têm o tipo user_actionde evento .

As informações sobre a ação são armazenadas no user_action objeto no details campo. Use a consulta a seguir para construir um log de auditoria de eventos do usuário. Para criar o event_log_raw modo de exibição usado nessa consulta, consulte Consultando o log 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