Riferimento alle tabelle del sistema di allerta

Importante

Questa tabella di sistema si trova in versione di anteprima pubblica.

Questa pagina include informazioni sulle tabelle del sistema di allarme, inclusa una panoramica dello schema di ciascuna tabella. Usa queste tabelle per interrogare direttamente in SQL gli avvisi del tuo spazio di lavoro e la loro cronologia di valutazione, così puoi controllare le definizioni degli avvisi, analizzare le tendenze di valutazione e monitorare i carichi di lavoro degli avvisi su larga scala.

Lo system.alert schema contiene due tabelle:

  • system.alert.alerts: La configurazione di ogni avviso, inclusa la sua definizione, il calendario, le soglie di valutazione, gli abbonati e i timestamp del ciclo di vita.
  • system.alert.alert_evaluation_history: Una riga per ogni valutazione dell'allerta, che cattura lo stato valutato, i valori dei risultati, lo stato della consegna delle notifiche e i dettagli dell'errore.

Requirements

Di default, solo gli utenti con ruoli sia di account admin che di metastore hanno accesso alle tabelle del sistema di avviso. Per condividere i dati di una tabella con un utente o un gruppo, Databricks raccomanda di creare una visuale dinamica per ogni utente o gruppo. Vedere Creare una visualizzazione dinamica.

Schema della tabella di configurazione degli allarmi

La system.alert.alerts tabella è una tabella delle dimensioni che cambia lentamente. Ogni riga cattura la configurazione di un avviso in un determinato momento, quindi un singolo avviso ha più righe quando la sua configurazione cambia.

Percorso della tabella: Questa tabella di sistema si trova in system.alert.alerts.

La system.alert.alerts tabella usa lo schema seguente:

Nome della colonna Tipo di dati Description Esempio
account_id string ID dell'account. 23e22ba4-87b9-4cc2
-9770-d10b894b7118
workspace_id string L'ID dello spazio di lavoro dove è definito l'avviso. 1234567890123456
alert_id string ID dell'avviso. 2762099691916865
display_name string Nome visualizzato dell'avviso. Test Alert
owned_by string Il nome utente del proprietario dell'allerta. Imposta se Unavailable l'utente è stato eliminato. example@databricks.com
compute struct Una struct che rappresenta la risorsa di calcolo collegata all'allarme. Il type valore è o WAREHOUSE oppure SERVERLESS_COMPUTE. {
type: WAREHOUSE,
cluster_id: NULL,
warehouse_id: 802f6d5283291c0d
}
run_as string L'ID dell'utente o del principale servizio le cui credenziali vengono utilizzate per eseguire l'allarme. 2967555311742259
schedule struct Una struct che rappresenta il programma dell'avviso, inclusi il suo stato di pausa, il cron schedule e il fuso orario. {
pause_status: UNPAUSED,
quartz_cron_schedule: 0 0 10 * * ?,
timezone_id: UTC
}
evaluation_source struct Una struct che rappresenta la colonna sorgente del risultato della query utilizzata per valutare l'allarme, inclusa l'aggregazione ad esso applicata. {
aggregation: SUM,
display: x,
name: x
}
evaluation_comparison_operator string L'operatore veniva utilizzato per confrontare il valore sorgente con la soglia durante la valutazione. Ad esempio: GREATER_THAN, LESS_THANe EQUAL. LESS_THAN
evaluation_threshold struct Una struct che rappresenta la soglia con cui il valore sorgente viene confrontato. La soglia è o un valore statico o un'altra colonna. {
value: {
double_value: 1.25
}
}
evaluation_empty_result_state string Lo stato dell'avviso riporta quando la query restituisce un risultato vuoto. I valori possibili sono OK, TRIGGERED e ERROR. OK
notify_on_ok booleano Se notificare gli abbonati quando l'avviso torna nello OK stato. true
retrigger_seconds int Il numero di secondi che l'avviso aspetta dopo essere stato attivato prima di potersi attivare di nuovo. Se 0, l'allarme non si attiva di nuovo. 0
subscriptions array Un insieme di abbonati che ricevono la notifica di avviso. Ogni abbonato è identificato tramite un'email utente o un ID di destinazione delle notifiche. [
{
user_email: example@databricks.com,
destination_id: null
}
]
change_time Timbro data/ora L'ultima volta che la configurazione è stata cambiata. Le informazioni sul fuso orario vengono registrate alla fine del valore con +00:00 la rappresentazione dell'UTC. 2023-01-01T01:01:01.123+00:00
create_time Timbro data/ora L'ora in cui è stato creato l'allarme. Le informazioni sul fuso orario vengono registrate alla fine del valore con +00:00 la rappresentazione dell'UTC. 2023-01-01T01:01:01.123+00:00
delete_time Timbro data/ora L'orario in cui l'allarme è stato cancellato definitivamente. Gli avvisi spostati nella spazzatura non vengono registrati. Le informazioni sul fuso orario vengono registrate alla fine del valore con +00:00 la rappresentazione dell'UTC. 2023-01-01T01:01:01.123+00:00

Schema della tabella della storia della valutazione degli allerti

La system.alert.alert_evaluation_history tabella registra una riga per ogni valutazione dell'allerta, catturando lo stato e le statistiche correlate.

Percorso della tabella: Questa tabella di sistema si trova in system.alert.alert_evaluation_history.

La system.alert.alert_evaluation_history tabella usa lo schema seguente:

Nome della colonna Tipo di dati Description Esempio
account_id string ID dell'account. 23e22ba4-87b9-4cc2
-9770-d10b894b7118
workspace_id string L'ID dello spazio di lavoro dove è definito l'avviso. 1234567890123456
alert_id string L'ID dell'allarme valutato. Si unisce a alert_id in system.alert.alerts. 2762099691916865
job_id string L'ID del lavoro che ha eseguito l'allarme. Si unisce a job_id in system.lakeflow.jobs. NULL quando l'avviso viene eseguito secondo un proprio programma invece che come parte di un lavoro. Usa un LEFT JOIN quando fai una query contro system.lakeflow.jobs. 906851285941474
task_key string La chiave di riferimento per il compito all'interno del lavoro. Si unisce a task_key in system.lakeflow.job_tasks. NULL quando l'avviso viene eseguito secondo un proprio programma invece che come parte di un lavoro. Usa un LEFT JOIN quando fai una query contro system.lakeflow.job_tasks. evaluate_alert
alert_run_id string L'ID della valutazione dell'allerta. 4104302562320643
evaluated_state string Lo stato valutato dell'allarme. I valori possibili sono OK, TRIGGERED e ERROR. TRIGGERED
evaluated_source_result struct Una struct che rappresenta il valore sorgente prodotto dalla valutazione. {
double_value: 1.25
}
evaluated_threshold_result struct Una struct che rappresenta il valore di soglia della valutazione, o il valore statico impostato nella configurazione di allerta. {
double_value: 1.25
}
error_code string Il codice di errore se la valutazione è fallita con un errore. INTERNAL_ERROR
error_message string Il messaggio di errore visibile all'utente se la valutazione è fallita con un errore. Query execution failed
notified_subscriptions array Una serie di abbonati che sono stati notificati con successo. Ogni abbonato è identificato tramite un'email utente o un ID di destinazione delle notifiche. [
{
user_email: example@databricks.com,
destination_id: null
}
]
failed_subscriptions array Una serie di abbonati le cui notifiche non sono state inviate. Ogni abbonato è identificato tramite un'email utente o un ID di destinazione delle notifiche. [
{
user_email: example@databricks.com,
destination_id: null
}
]
start_time Timbro data/ora L'orario in cui iniziò la valutazione. Le informazioni sul fuso orario vengono registrate alla fine del valore con +00:00 la rappresentazione dell'UTC. 2023-01-01T01:01:01.123+00:00
end_time Timbro data/ora L'orario in cui la valutazione è terminata. Le informazioni sul fuso orario vengono registrate alla fine del valore con +00:00 la rappresentazione dell'UTC. 2023-01-01T01:01:01.123+00:00

Interrogazioni di esempio

Le seguenti query di esempio mostrano modi comuni per analizzare la configurazione degli allarmi e la cronologia delle valutazioni. Ogni query utilizza marker di parametri nominati per gli ID di avviso e workspace, quindi ti vengono chiesti i valori quando esegui la query.

Trova la valutazione più recente per un avviso

Questa query restituisce l'ultima configurazione di un avviso specifico insieme alla sua valutazione più recente.

SELECT
  c.alert_id,
  c.display_name,
  c.compute,
  c.schedule.quartz_cron_schedule AS schedule,
  c.evaluation_comparison_operator AS operator,
  c.evaluation_threshold.value.double_value AS threshold,
  c.change_time AS config_last_updated,
  e.evaluated_state,
  e.start_time AS evaluation_time,
  e.end_time,
  TIMESTAMPDIFF(SECOND, e.start_time, e.end_time) AS eval_duration_seconds
FROM (
  SELECT *
  FROM system.alert.alerts
  WHERE alert_id = :your_alert_id
    AND delete_time IS NULL
  ORDER BY change_time DESC
  LIMIT 1
) c
LEFT JOIN (
  SELECT *
  FROM system.alert.alert_evaluation_history
  WHERE alert_id = :your_alert_id
  ORDER BY start_time DESC
  LIMIT 1
) e ON TRUE;

Trova quali avvisi si sono attivati maggiormente negli ultimi sette giorni

Questa query conta quante volte ogni avviso è stato attivato in uno spazio di lavoro negli ultimi sette giorni.

SELECT
  alert_id,
  COUNT(*) AS trigger_count_7d
FROM system.alert.alert_evaluation_history
WHERE workspace_id = :your_workspace_id
  AND start_time >= CURRENT_DATE() - INTERVAL 7 DAY
  AND evaluated_state = 'TRIGGERED'
GROUP BY alert_id
ORDER BY trigger_count_7d DESC;

Monitora come lo stato di un allarme è cambiato nel tempo

Questa query riassume il conteggio giornaliero di ciascuno stato valutato per un allarme specifico negli ultimi 30 giorni. Usalo per costruire una dashboard che monitori l'affidabilità degli allarmi.

SELECT
  DATE_TRUNC('day', start_time) AS eval_day,
  COUNT_IF(evaluated_state = 'OK') AS ok_count,
  COUNT_IF(evaluated_state = 'TRIGGERED') AS triggered_count,
  COUNT_IF(evaluated_state = 'ERROR') AS error_count
FROM system.alert.alert_evaluation_history
WHERE alert_id = :your_alert_id
  AND start_time >= CURRENT_DATE() - INTERVAL 30 DAY
GROUP BY 1
ORDER BY eval_day ASC;

Elenca gli avvisi attivi in uno spazio di lavoro

Questa query restituisce l'ultima configurazione di ogni avviso che non viene eliminata né messa in pausa in uno spazio di lavoro.

WITH latest AS (
  SELECT
    *,
    ROW_NUMBER() OVER (PARTITION BY alert_id ORDER BY change_time DESC) AS rn
  FROM system.alert.alerts
  WHERE workspace_id = :your_workspace_id
    AND delete_time IS NULL
)
SELECT
  alert_id,
  display_name,
  compute,
  schedule.quartz_cron_schedule AS cron_schedule,
  schedule.pause_status
FROM latest
WHERE rn = 1
  AND schedule.pause_status != 'PAUSED';