Статья
Как я написала систему мониторинга на Python за выходные
▶ Показать содержание 6 разделов~1 мин
Привет! Я Вера Кузнецова, Python-разработчик. Специализируюсь на автоматизации инфраструктуры и DevOps-тулинге. Расскажу про свой pet-project, который вырос в production-решение.
Начиналось как скрипт на 50 строк, а стало системой мониторинга для 200 серверов.
Предыстория
В компании был Zabbix, но он не покрывал кастомные метрики нашего приложения. Нужно было что-то своё, быстро.
День 1: MVP
# Простейший чекер
import requests
import smtplib
services = ["http://app1:8080/health", "http://app2:8080/health"]
for url in services:
try:
r = requests.get(url, timeout=5)
if r.status_code != 200:
send_alert(f"{url} returned {r.status_code}")
except Exception as e:
send_alert(f"{url} is DOWN: {e}")
День 2: Структура
- Добавила конфиг в YAML
- Метрики в InfluxDB через line protocol
- Алерты в Telegram через бота
- Scheduler через APScheduler
Через месяц
- 50 кастомных проверок
- Dashboard на Grafana
- Дежурные получают алерты с контекстом
- Авто-рестарт сервисов при определённых условиях
Стек
- Python 3.11 + asyncio
- InfluxDB для метрик
- Redis для состояний
- FastAPI для API алертов
- Docker Compose для деплоя
Уроки
- Не переусложняйте MVP — 50 строк кода уже приносят пользу
- Python идеален для мониторинга — быстро пишется, легко расширяется
- Используйте asyncio для I/O-bound задач — параллельные проверки в 10x быстрее
Код open-source — спрашивайте ссылку!
11