- автообнаружение Docker Airflow через docker inspect и .env - мониторинг failed и long-running DAG-запусков с автоматическим retry - экспорт данных в файлы для Zabbix Agent через UserParameter - офлайн-сборка ZIP-архива для закрытых контуров - Zabbix шаблоны для 5.x (XML) и 6.x+ (YAML) - systemd сервис с graceful shutdown и lock file
33 lines
2.2 KiB
Plaintext
33 lines
2.2 KiB
Plaintext
# =============================================================================
|
|
# Zabbix Agent UserParameter — Airflow DAG Monitor
|
|
#
|
|
# Устанавливается в /etc/zabbix/zabbix_agentd.conf.d/airflow-monitor.conf
|
|
# Zabbix agent читает файлы, записанные сервисом airflow-monitor,
|
|
# и передаёт данные на Zabbix Server/Proxy через стандартный канал агента.
|
|
#
|
|
# Файлы данных:
|
|
# /var/lib/airflow-monitor/problems.json — JSON массив проблемных DAG-ов
|
|
# /var/lib/airflow-monitor/heartbeat — epoch timestamp последнего цикла
|
|
# /var/lib/airflow-monitor/status.json — статус монитора (JSON)
|
|
# =============================================================================
|
|
|
|
# Список проблемных DAG-ов (JSON text)
|
|
# Zabbix item: type=Zabbix agent, key=airflow.dag.problems, type of info=Text
|
|
UserParameter=airflow.dag.problems,cat /var/lib/airflow-monitor/problems.json 2>/dev/null || echo '[]'
|
|
|
|
# Количество проблемных DAG-ов (для простых триггеров)
|
|
# Zabbix item: type=Zabbix agent, key=airflow.dag.problems.count, type of info=Numeric (unsigned)
|
|
UserParameter=airflow.dag.problems.count,python3 -c "import json,sys; print(len(json.load(open('/var/lib/airflow-monitor/problems.json'))))" 2>/dev/null || echo 0
|
|
|
|
# Heartbeat — epoch timestamp последнего успешного цикла
|
|
# Zabbix item: type=Zabbix agent, key=airflow.monitor.heartbeat, type of info=Numeric (unsigned)
|
|
UserParameter=airflow.monitor.heartbeat,cat /var/lib/airflow-monitor/heartbeat 2>/dev/null || echo 0
|
|
|
|
# Статус монитора (JSON: cycle_count, dag_count, issue_count, cycle_time)
|
|
# Zabbix item: type=Zabbix agent, key=airflow.monitor.status, type of info=Text
|
|
UserParameter=airflow.monitor.status,cat /var/lib/airflow-monitor/status.json 2>/dev/null || echo '{}'
|
|
|
|
# Проверка что сервис запущен (1 = работает, 0 = остановлен)
|
|
# Zabbix item: type=Zabbix agent, key=airflow.monitor.alive, type of info=Numeric (unsigned)
|
|
UserParameter=airflow.monitor.alive,systemctl is-active airflow-monitor >/dev/null 2>&1 && echo 1 || echo 0
|