From 9aacc861f6e98216d6405389342945ea813cadb5 Mon Sep 17 00:00:00 2001 From: Maksim Totmin Date: Wed, 8 Apr 2026 17:43:33 +0700 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20ASCII-=D1=81=D1=85=D0=B5=D0=BC=D1=8B=20=D0=B2=20?= =?UTF-8?q?README=20=E2=80=94=20=D1=80=D0=BE=D0=B2=D0=BD=D1=8B=D0=B5=20?= =?UTF-8?q?=D0=B1=D0=BB=D0=BE=D0=BA=D0=B8,=20=D0=B0=D0=BA=D1=82=D1=83?= =?UTF-8?q?=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D0=B5=20=D0=BD=D0=B0=D0=B7=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - заменил Unicode-рамки на ASCII для корректного отображения - переименовал Zabbix Sender в Data Exporter - добавил цепочку JSON files -> Zabbix Agent -> Zabbix Server - исправил блок-схему цикла: экспорт в файлы вместо отправки --- README.md | 140 +++++++++++++++++++++++++++--------------------------- 1 file changed, 70 insertions(+), 70 deletions(-) diff --git a/README.md b/README.md index b1e85a9..6e561f4 100644 --- a/README.md +++ b/README.md @@ -43,26 +43,26 @@ ## Архитектура ``` -┌──────────────────────────────────────────────────────────────────┐ -│ Airflow DAG Monitor │ -│ │ -│ ┌─────────┐ ┌──────────┐ ┌──────────────┐ ┌────────┐ │ -│ │ Airflow │───>│ Analyzer │───>│ActionHandler │───>│ Zabbix │ │ -│ │ Client │ │ │ │ │ │ Sender │ │ -│ └─────────┘ └──────────┘ └──────────────┘ └────────┘ │ -│ │ │ │ │ -│ v v v │ -│ ┌──────────────────────────────────────────────────────────┐ │ -│ │ State Manager │ │ -│ │ (retry counts, alert flags) │ │ -│ └──────────────────────────────────────────────────────────┘ │ -└──────────────────────────────────────────────────────────────────┘ - │ │ - v v - ┌─────────┐ ┌──────────────┐ - │ Airflow │ │Zabbix Server │ - │ API │ │ Dashboard │ - └─────────┘ └──────────────┘ ++------------------------------------------------------------------+ +| Airflow DAG Monitor | +| | +| +----------+ +----------+ +--------------+ +----------+ | +| | Airflow |-->| Analyzer |-->| ActionHandler |-->| Data | | +| | Client | | | | | | Exporter | | +| +----------+ +----------+ +--------------+ +----------+ | +| | | | | | +| v v v v | +| +--------------------------------------------------------+ | +| | State Manager | | +| | (retry counts, alert flags) | | +| +--------------------------------------------------------+ | ++------------------------------------------------------------------+ + | | + v v + +---------+ +----------+ +---------+ +----------------+ + | Airflow | | JSON | | Zabbix | | Zabbix Server | + | API | | files |-->| Agent |-->| Dashboard | + +---------+ +----------+ +---------+ +----------------+ ``` --- @@ -377,14 +377,14 @@ usage: python -m airflow_monitor [-h] [--config CONFIG] [--discover] [--dry-run] локальный Zabbix Agent, который уже подключён к серверу (напрямую или через Zabbix Proxy). ``` -┌──────────────────┐ файлы ┌──────────────┐ сеть ┌──────────────┐ -│ airflow-monitor │ ──────────────> │ Zabbix Agent │ ────────────> │Zabbix Server │ -│ (systemd) │ /var/lib/... │ UserParameter│ │ Dashboard │ -└──────────────────┘ └──────────────┘ └──────────────┘ - или - ┌──────────────┐ - │ Zabbix Proxy │ - └──────────────┘ ++------------------+ файлы +--------------+ сеть +----------------+ +| airflow-monitor |------------>| Zabbix Agent |------------>| Zabbix Server | +| (systemd) | /var/lib/.. | UserParameter| | Dashboard | ++------------------+ +--------------+ +----------------+ + или + +--------------+ + | Zabbix Proxy | + +--------------+ ``` 1. Монитор пишет результаты в файлы `/var/lib/airflow-monitor/` @@ -541,48 +541,48 @@ zabbix_agentd -t airflow.monitor.alive ### Цикл мониторинга ``` - ┌─────────────────────┐ - │ Загрузка состояния │ - └──────────┬──────────┘ - v - ┌─────────────────────────────┐ - │ Получение списка DAG-ов │ - │ GET /api/v1/dags │ - └──────────────┬──────────────┘ - v - ┌─────────────────────────────┐ - │ Для каждого DAG: │ - │ GET /api/v1/dags/{id}/runs │ - │ (фильтр: running, failed) │ - └──────────────┬──────────────┘ - v - ┌───────────────────────┐ - │ Анализ: есть проблемы?│ - └───────┬───────┬───────┘ - нет │ │ да - v v - ┌────┐ ┌──────────────────┐ - │Done│ │ Перезапуск (1 раз)│ - └────┘ └────────┬─────────┘ - v - ┌─────────────────────┐ - │ Ожидание 2 мин │ - └──────────┬──────────┘ - v - ┌─────────────────────┐ - │ Повторная проверка │ - └───────┬──────┬──────┘ - ОК │ │ Проблема - v v - ┌────┐ ┌──────────────────┐ - │Done│ │ Алерт в Zabbix │ - └────┘ └──────────────────┘ - │ - v - ┌─────────────────────┐ - │ Heartbeat + cleanup │ - │ Сохранение состояния │ - └─────────────────────┘ + +------------------------+ + | Загрузка состояния | + +-----------+------------+ + v + +----------------------------+ + | Получение списка DAG-ов | + | GET /api/v1/dags | + +-----------+----------------+ + v + +----------------------------+ + | Для каждого DAG: | + | GET /api/v1/dags/{id}/runs | + | (фильтр: running, failed) | + +-----------+----------------+ + v + +--------------------+ + | Анализ: проблемы? | + +---+------------+---+ + нет | | да + v v + +------+ +-----------------+ + | Done | | Перезапуск (x1) | + +------+ +--------+--------+ + v + +-------------------+ + | Ожидание 2 мин | + +--------+----------+ + v + +-------------------+ + | Повторная проверка | + +----+----------+---+ + ОК | | Проблема + v v + +------+ +------------------+ + | Done | | Экспорт в файлы | + +------+ | для Zabbix Agent | + +--------+---------+ + v + +-------------------+ + | Heartbeat+cleanup | + | Сохранение состоян.| + +-------------------+ ``` ### Обработка ошибок