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:
- Sledování průběhu a stavu aktualizací kanálu Podívejte se , jaké podrobnosti kanálu jsou k dispozici v uživatelském rozhraní?.
- Upozorňovánínach Viz Přidání e-mailových oznámení pro události kanálu.
- Extrahování podrobných informací o aktualizacích kanálu, jako jsou rodokmen dat, metriky kvality dat a využití prostředků Podívejte se, co je protokol událostí Delta Live Tables?
- Definování vlastníchakcích Viz Definování vlastního monitorování kanálů dynamických tabulek Delta pomocí hooků událostí.
Informace o kontrole a diagnostice výkonu dotazů najdete v historii dotazů Accessu pro kanály delta živých tabulek. Tato funkce je ve verzi Public Preview.
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:
- Klikněte na Přidat oznámení.
- Zadejte jednu nebo více e-mailových adres pro příjem oznámení.
- Kliknutím na zaškrtávací políčko u každého typu oznámení odešlete na nakonfigurované e-mailové adresy.
- 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_id nebo pipeline_id pipeline_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, INFO například , , WARN ERROR , 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_definition
udá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_progress
udá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_progress
udá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 autoscale
udá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_executors
a optimal_num_executors
. Události také zobrazují stav algoritmu jako různé stavy, jako CLUSTER_AT_DESIRED_SIZE
je , SCALE_UP_IN_PROGRESS_WAITING_FOR_EXECUTORS
a 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_action
udá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 |