/home/compose/pro-4gain-zabbix/sm2c-cloud-zabbixservice-zabbix-bootstrap.ymlПолная архитектура (proxy на nugush, web-checks через NAT-hairpinning, шаблон
forGain Website by HTTP, SLA, Telegram через nginx-gateway, конфликт переменнойzabbix:↔zbx_host:) — Архитектура мониторинга Zabbix.
ansible (см. inventory/group_vars/all.yml :: zabbix_api_login_user/pass)В compose-стеке: zabbix-server, zabbix-web, postgres+timescale, grafana (см. grafana).
zabbix-agent2 ставится через роль sm2c-cloud-zabbix-agent на: cloud + cloud_guests + proxmox. Active mode — хосты пушат в zabbix-server:10051. Шаблоны должны быть ... by Zabbix agent active.
Server= в конфиге агента включает 172.16.0.0/12 чтобы zabbix-server из docker-контейнера (172.21.0.3) мог делать passive availability check.
Два zabbix-proxy (роль sm2c-cloud-zabbix-proxy, PSK):
mirkwood.4gain.pro — default proxy для firefly-hosted web-services (19 шт). Mirkwood в одной AS-зоне с firefly, public канал mirkwood→firefly стабилен (нет RKN-флаппинга). Канал proxy↔server (:10051) через AWG mesh (Server=10.9.0.191, mirkwood — server того же mesh).nugush.4gain.pro — backup proxy + nginx-gateway для Telegram. Peer mesh 10.9.0.199 через awg1 на mirkwood. Канал proxy↔server тоже через mesh.Принцип распределения: «опрашиваем сервис с другого хоста». Firefly-hosted (19 шт) → mirkwood proxy. Mirkwood-hosted (dep816.ru) → server-direct (proxy: ""). Это даёт независимое определение проблем.
Раньше (до 2026-04-30) канал к firefly:10051 через публичный TCP страдал от RKN/DPI флаппинга — каждые 5–10 сек connection timed out → restored, item'ы устаревали на 20+ часов. После переноса proxy↔server на mesh (UDP с обфускацией, MTU 1420) — стабильно.
Подробно — zabbix-monitoring-architecture.
web_services[] в group_vars/all.yml → роль sm2c-zabbix-web-service создаёт synthetic-хосты с default monitored_by: proxy + proxy: mirkwood.4gain.pro (override'ится per-host через proxy: поле — например dep816 имеет proxy: "" для server-direct мониторинга). Кастомный template forGain Website by HTTP. См. WEB Ресурсы.
sm2c-zabbix-host читает zbx_host: из host_vars/<host>.yml и регистрирует в Zabbix через community.zabbix.zabbix_host. Переменная переименована с zabbix: на zbx_host: — был конфликт с переменной стека.
Telegram через nginx-gateway на nugush: https://nugush.4gain.pro/tg-out/bot<token>/sendMessage. Прямого доступа из docker-контейнера на firefly до api.telegram.org нет (RF block). Webhook media-type создаётся playbook'ом service-zabbix-alerts-telegram.yml. Группа: chat_id -518879777.
Service-tree + 2 SLA создаются playbook'ом service-zabbix-sla.yml через uri-API (модуль zabbix_sla в community.zabbix отсутствует).
zabbix-proxy 1:6.0.45 (epoch=1) — оверрайдил установку 7.0. Фикс в роли: dnf config-manager --setopt=epel.exclude='zabbix*' --save.ansible_python_interpreter: python3.11 ансибл-модуль dnf ломается (binding только под систёмный 3.6) — в роли используется command: dnf install.find(...,"regexp","^(200|302)$")=0), иначе строка vs число.cd ansible/playbooks
ansible-playbook -c ssh service-zabbix-bootstrap.yml # стек + agent2 на всех хостах
ansible-playbook -c ssh service-zabbix-proxy-bootstrap.yml # proxy на nugush
ansible-playbook -c ssh service-zabbix-templates-import.yml # импорт template
ansible-playbook -c ssh service-zabbix-web-services.yml # synthetic web-host'ы
ansible-playbook -c ssh service-zabbix-inventory.yml # регистрация всех хостов
ansible-playbook -c ssh service-zabbix-alerts-telegram.yml # Telegram media-type
ansible-playbook -c ssh service-zabbix-sla.yml # service-tree + SLA
Changelog
interface.dns synthetic-host'ов теперь = proxy-хост (динамически через _ws_proxy в роли); раньше было захардкожено nugush.4gain.pro и после смены default proxy на mirkwood cert/DNS items не работали (claude/forGain)Server=10.9.0.191 в proxy и agent2). Лечение от RKN/DPI флаппинга (claude/forGain)