Monitorování kanálů Delta Live Tables

Tento článek popisuje použití integrovaných funkcí monitorování a pozorovatelnosti pro kanály Delta Live Tables. Tyto funkce podporují například tyto úlohy:

Přidání e-mailových oznámení pro události kanálu

Můžete nakonfigurovat jednu nebo více e-mailových adres pro příjem oznámení, když dojde k následujícímu:

  • Aktualizace kanálu se úspěšně dokončí.
  • Aktualizace kanálu selže, a to buď s možností opakování, nebo chybou, která se neopakuje. Tuto možnost vyberte, pokud chcete dostávat oznámení o všech selháních kanálu.
  • Aktualizace kanálu selže s chybou, která se neopakuje (závažná). Tuto možnost vyberte, pokud chcete dostávat oznámení pouze v případě, že dojde k neopakovatelné chybě.
  • Jeden tok dat selže.

Konfigurace e-mailových oznámení při vytváření nebo úpravě kanálu:

  1. Klikněte na Přidat oznámení.
  2. Zadejte jednu nebo více e-mailových adres pro příjem oznámení.
  3. Kliknutím na zaškrtávací políčko u každého typu oznámení odešlete na nakonfigurované e-mailové adresy.
  4. Klikněte na Přidat oznámení.

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.

Podrobnosti zahrnují ID kanálu, zdrojový kód, 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 na zdrojový kód definující datovou sadu.

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.

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

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 DBSQL WORKSPACE.
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_log funkci 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
customers null
sales_orders_raw null
sales_orders_cleaned ["customers", "sales_orders_raw"]
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
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í pro kanály bez povolení bez serveru

U kanálů DLT, které nepoužívají bezserverové výpočetní prostředky, zachytává protokol událostí změnu 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 rozšířené žádosti o změnu velikosti clusteru automatického škálování 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 je možné zobrazit ve spojení s událostmi automatického škálování a poskytnout tak celkový přehled o vylepš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 rozšířené kanály 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
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

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
11.0