Monitorování kanálů Delta Live Tables

Tento článek popisuje, jak můžete používat integrované funkce monitorování a pozorovatelnosti pro kanály Delta Live Tables, včetně rodokmenu dat, historie aktualizací a generování sestav kvality dat.

Většinu dat monitorování můžete zkontrolovat ručně prostřednictvím uživatelského rozhraní podrobností kanálu. Některé úlohy se snadněji provádějí dotazováním metadat protokolu událostí. Podívejte se, co je protokol událostí Delta Live Tables?

Jaké podrobnosti kanálu jsou k dispozici v uživatelském rozhraní?

Graf kanálu se zobrazí, jakmile se úspěšně spustí aktualizace kanálu. Šipky představují závislosti mezi datovými sadami v kanálu. Ve výchozím nastavení se na stránce podrobností kanálu zobrazuje nejnovější aktualizace tabulky, ale starší aktualizace můžete vybrat z rozevírací nabídky.

Zobrazené podrobnosti zahrnují ID kanálu, zdrojové knihovny, náklady na výpočetní prostředky, edici produktu a kanál nakonfigurovaný pro kanál.

Pokud chcete zobrazit tabulkové zobrazení datových sad, klikněte na kartu Seznam . Zobrazení Seznam umožňuje zobrazit všechny datové sady v kanálu reprezentované jako řádek v tabulce a je užitečné, když je daG kanálu příliš velký, aby se vizualizoval v zobrazení Graph . Datové sady zobrazené v tabulce můžete řídit pomocí více filtrů, jako je název datové sady, typ a stav. Pokud chcete přepnout zpět na vizualizaci DAG, klikněte na Graf.

Uživatel Spustit jako je vlastník kanálu a aktualizace kanálu se spouštějí s oprávněními tohoto uživatele. Pokud chcete uživatele změnit run as , klikněte na Oprávnění a změňte vlastníka kanálu.

Jak můžete zobrazit podrobnosti datové sady?

Kliknutím na datovou sadu v grafu kanálu nebo seznamu datových sad zobrazíte podrobnosti o datové sadě. Podrobnosti zahrnují schéma datové sady, metriky kvality dat a odkaz zpět na zdrojový kód, který datovou sadu definuje.

Zobrazení historie aktualizací

Pokud chcete zobrazit historii a stav aktualizací kanálu, klikněte na rozevírací nabídku historie aktualizací v horním panelu.

Pokud chcete zobrazit graf, podrobnosti a události aktualizace, vyberte aktualizaci v rozevírací nabídce. Pokud se chcete vrátit k nejnovější aktualizaci, klikněte na Zobrazit nejnovější aktualizaci.

Získání oznámení pro události kanálu

Pokud chcete dostávat oznámení o událostech kanálu v reálném čase, jako je úspěšné dokončení aktualizace kanálu nebo selhání aktualizace kanálu, přidejte při vytváření nebo úpravách kanálu Přidat e-mailová oznámení pro události kanálu.

Co je protokol událostí Delta Live Tables?

Protokol událostí Delta Live Tables obsahuje všechny informace související s kanálem, včetně protokolů auditu, kontrol kvality dat, průběhu kanálu a rodokmenu dat. Protokol událostí můžete použít ke sledování, pochopení a monitorování stavu datových kanálů.

Položky protokolu událostí můžete zobrazit v uživatelském rozhraní Delta Live Tables, v rozhraní API Delta Live Tables nebo přímým dotazem na protokol událostí. Tato část se zaměřuje na přímé dotazování protokolu událostí.

Můžete také definovat vlastní akce, které se mají spustit, když se události zaprotokolují, například odesílání upozornění pomocí volání událostí.

Schéma protokolu událostí

Následující tabulka popisuje schéma protokolu událostí. Některá z těchto polí obsahují data JSON, která vyžadují analýzu některých dotazů, například details pole. Azure Databricks podporuje operátora : parsování polí JSON. Viz : (dvojtečka) – operátor.

Pole Popis
id Jedinečný identifikátor záznamu protokolu událostí.
sequence Dokument JSON obsahující metadata pro identifikaci a uspořádání událostí
origin Dokument JSON obsahující metadata pro původ události, například poskytovatele cloudu, oblast poskytovatele cloudu, user_idnebo pipeline_idpipeline_type pro zobrazení místa vytvoření kanálu nebo DBSQLWORKSPACE.
timestamp Čas, kdy byla událost zaznamenána.
message Člověkem čitelná zpráva popisující událost.
level Typ události, INFOnapříklad , , WARNERROR, nebo METRICS.
error Pokud došlo k chybě, podrobnosti popisující chybu.
details Dokument JSON obsahující strukturované podrobnosti události. Toto je primární pole používané k analýze událostí.
event_type Typ události.
maturity_level Stabilita schématu událostí. Možné hodnoty:

* STABLE: Schéma je stabilní a nezmění se.
* NULL: Schéma je stabilní a nezmění se. Hodnota může být NULL v případě, že byl záznam vytvořen před přidáním maturity_level pole (verze 2022.37).
* EVOLVING: Schéma není stabilní a může se změnit.
* DEPRECATED: Schéma je zastaralé a modul runtime Delta Live Tables může kdykoli ukončit vytváření této události.

Dotazování protokolu událostí

Umístění protokolu událostí a rozhraní pro dotazování protokolu událostí závisí na tom, jestli je váš kanál nakonfigurovaný tak, aby používal metastore Hive nebo Katalog Unity.

Metastore Hive

Pokud váš kanál publikuje tabulky do metastoru Hive, protokol událostí se uloží do storage/system/events umístění. Pokud jste například nakonfigurovali nastavení kanálu storage jako /Users/username/data, protokol událostí je uložen v cestě /Users/username/data/system/events v DBFS.

Pokud jste nenakonfigurovali storage nastavení, výchozí umístění protokolu událostí je /pipelines/<pipeline-id>/system/events v DBFS. Pokud je například ID vašeho kanálu 91de5e48-35ed-11ec-8d3d-0242ac130003, umístění úložiště je /pipelines/91de5e48-35ed-11ec-8d3d-0242ac130003/system/events.

Můžete vytvořit zobrazení pro zjednodušení dotazování protokolu událostí. Následující příklad vytvoří dočasné zobrazení s názvem event_log_raw. Toto zobrazení se používá v ukázkových dotazech protokolu událostí, které jsou součástí tohoto článku:

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

Nahraďte <event-log-path> umístěním protokolu událostí.

Každá instance spuštění kanálu se nazývá aktualizace. Často chcete extrahovat informace pro nejnovější aktualizaci. Spuštěním následujícího dotazu vyhledejte identifikátor poslední aktualizace a uložte ho v dočasném latest_update_id zobrazení. Toto zobrazení se používá v ukázkových dotazech protokolu událostí, které jsou součástí tohoto článku:

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;

Protokol událostí můžete dotazovat v poznámkovém bloku Azure Databricks nebo v editoru SQL. Pomocí poznámkového bloku nebo editoru SQL spusťte ukázkové dotazy protokolu událostí.

Katalog Unity

Pokud kanál publikuje tabulky do katalogu Unity, musíte k načtení protokolu událostí pro kanál použít event_logfunkci TVF (Table Valued Function ). Protokol událostí kanálu načtete předáním ID kanálu nebo názvu tabulky do TVF. Pokud například chcete načíst záznamy protokolu událostí pro kanál s ID 04c78631-3dd7-4856-b2a6-7d84e9b2638b:

SELECT * FROM event_log("04c78631-3dd7-4856-b2a6-7d84e9b2638b")

Načtení záznamů protokolu událostí pro kanál, který vytvořil nebo vlastní tabulku my_catalog.my_schema.table1:

SELECT * FROM event_log(TABLE(my_catalog.my_schema.table1))

Pokud chcete volat TVF, musíte použít sdílený cluster nebo SQL Warehouse. Můžete například použít poznámkový blok připojený ke sdílenému clusteru nebo použít editor SQL připojený ke službě SQL Warehouse.

Pokud chcete zjednodušit dotazování událostí kanálu, může vlastník kanálu vytvořit zobrazení přes event_log TVF. Následující příklad vytvoří zobrazení protokolu událostí pro kanál. Toto zobrazení se používá v ukázkových dotazech protokolu událostí, které jsou součástí tohoto článku.

Poznámka:

TVF event_log může volat pouze vlastník kanálu a zobrazení vytvořené přes event_log TVF může dotazovat pouze vlastník kanálu. Zobrazení nelze sdílet s ostatními uživateli.

CREATE VIEW event_log_raw AS SELECT * FROM event_log("<pipeline-ID>");

Nahraďte <pipeline-ID> jedinečným identifikátorem kanálu Delta Live Tables. ID najdete na panelu podrobností kanálu v uživatelském rozhraní Delta Live Tables.

Každá instance spuštění kanálu se nazývá aktualizace. Často chcete extrahovat informace pro nejnovější aktualizaci. Spuštěním následujícího dotazu vyhledejte identifikátor poslední aktualizace a uložte ho v dočasném latest_update_id zobrazení. Toto zobrazení se používá v ukázkových dotazech protokolu událostí, které jsou součástí tohoto článku:

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;

Dotazování informací o rodokmenu z protokolu událostí

Události obsahující informace o rodokmenu mají typ flow_definitionudálosti . Objekt details:flow_definition obsahuje output_dataset a input_datasets definuje jednotlivé relace v grafu.

Pomocí následujícího dotazu můžete extrahovat vstupní a výstupní datové sady a zobrazit informace o rodokmenu:

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
1 customers null
2 sales_orders_raw null
3 sales_orders_cleaned ["customers", "sales_orders_raw"]
4 sales_order_in_la ["sales_orders_cleaned"]

Dotazování na kvalitu dat z protokolu událostí

Pokud definujete očekávání u datových sad ve vašem kanálu, metriky kvality dat se v objektu details:flow_progress.data_quality.expectations ukládají. Události obsahující informace o kvalitě dat mají typ flow_progressudálosti . Následující příklad dotazuje metriky kvality dat pro poslední aktualizaci kanálu:

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
0 sales_orders_cleaned valid_order_number 4083 0

Monitorování backlogu dat dotazováním protokolu událostí

Delta Live Tables sleduje, kolik dat je v backlogu objektu details:flow_progress.metrics.backlog_bytes . Události obsahující metriky backlogu mají typ flow_progressudálosti . Následující příklad dotazuje metriky backlogu pro poslední aktualizaci kanálu:

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

Poznámka:

Metriky backlogu nemusí být dostupné v závislosti na typu zdroje dat kanálu a verzi Databricks Runtime.

Monitorování rozšířených událostí automatického škálování z protokolu událostí

Protokol událostí zaznamenává změny velikosti clusteru, když je ve vašich kanálech povolené rozšířené automatické škálování. Události obsahující informace o rozšířeném automatickém škálování mají typ autoscaleudálosti . Informace o změně velikosti žádosti clusteru jsou uloženy v objektu details:autoscale . Následující příklad dotazuje žádosti o změnu velikosti clusteru s rozšířeným automatickým škálováním pro poslední aktualizaci kanálu:

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

Monitorování využití výpočetních prostředků

cluster_resources události poskytují metriky o počtu slotů úloh v clusteru, o tom, kolik těchto slotů úloh se využívá a kolik úkolů čeká na naplánování.

Pokud je povolené rozšířené automatické škálování, cluster_resources události obsahují také metriky pro algoritmus automatického škálování, včetně latest_requested_num_executorsa optimal_num_executors. Události také zobrazují stav algoritmu jako různé stavy, jako CLUSTER_AT_DESIRED_SIZEje , SCALE_UP_IN_PROGRESS_WAITING_FOR_EXECUTORSa BLOCKED_FROM_SCALING_DOWN_BY_CONFIGURATION. Tyto informace lze zobrazit ve spojení s událostmi automatického škálování a poskytnout tak celkový přehled o rozšířeném automatickém škálování.

Následující příklad dotazuje historii velikosti fronty úloh pro poslední aktualizaci kanálu:

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

Následující příklad dotazuje historii využití poslední aktualizace kanálu:

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

Následující příklad dotazuje historii počtu exekutorů, doprovázené metrikami dostupnými pouze pro kanály rozšířeného automatického škálování, včetně počtu exekutorů požadovaných algoritmem v nejnovějším požadavku, optimálního počtu exekutorů doporučených algoritmem na základě nejnovějších metrik a stavu algoritmu automatického škálování:

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

Audit kanálů Delta Live Tables

Pomocí záznamů protokolu událostí Delta Live Tables a dalších protokolů auditu Azure Databricks můžete získat úplný přehled o tom, jak se data aktualizují v Delta Live Tables.

Delta Live Tables používají ke spouštění aktualizací přihlašovací údaje vlastníka kanálu. Použité přihlašovací údaje můžete změnit aktualizací vlastníka kanálu. Delta Live Tables zaznamenávají uživatele pro akce v kanálu, včetně vytvoření kanálu, úpravy konfigurace a aktivace aktualizací.

Referenční informace o událostech auditování katalogu Unity najdete v tématu Události katalogu Unity.

Dotazování uživatelských akcí v protokolu událostí

Protokol událostí můžete použít k auditování událostí, například akcí uživatelů. Události obsahující informace o akcích uživatele mají typ user_actionudálosti .

Informace o akci jsou uloženy v user_action objektu details v poli. Pomocí následujícího dotazu vytvořte protokol auditu uživatelských událostí. Pokud chcete vytvořit event_log_raw zobrazení použité v tomto dotazu, přečtěte si téma Dotazování protokolu událostí.

SELECT timestamp, details:user_action:action, details:user_action:user_name FROM event_log_raw WHERE event_type = 'user_action'
timestamp action user_name
0 2021-05-20T19:36:03.517+0000 START user@company.com
2 2021-05-20T19:35:59.913+0000 CREATE user@company.com
3 2021-05-27T00:35:51.971+0000 START user@company.com

Informace o modulu runtime

Můžete zobrazit informace o modulu runtime pro aktualizaci kanálu, například verzi Databricks Runtime pro aktualizaci:

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