Серверное оборудование для бизнеса — надёжные решения для любых задач Подробнее →
Статья

Как я написала систему мониторинга на 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 для деплоя

Уроки

  1. Не переусложняйте MVP — 50 строк кода уже приносят пользу
  2. Python идеален для мониторинга — быстро пишется, легко расширяется
  3. Используйте asyncio для I/O-bound задач — параллельные проверки в 10x быстрее

Код open-source — спрашивайте ссылку!

Для ответа вы можете авторизоваться