7.8 KiB
7.8 KiB
created, updated, tags, parent, status, priority
| created | updated | tags | parent | status | priority | ||||
|---|---|---|---|---|---|---|---|---|---|
| 2024-12-19 | 2024-12-19 |
|
Second Mind Pipeline/index | планирование | высокий |
📊 Мониторинг и алерты Second Mind Pipeline
🎯 Цели мониторинга
Основные метрики
- Доступность сервисов (uptime)
- Время отклика веб-сайта
- Успешность сборки Quartz
- Использование ресурсов VPS
- Работоспособность webhook'ов
Критические события
- Падение любого из сервисов
- Ошибки в процессе сборки
- Превышение времени сборки
- Проблемы с Git репозиторием
- Переполнение дискового пространства
🔧 Инструменты мониторинга
Prometheus + Grafana
# Добавить в docker-compose.yml
prometheus:
image: prom/prometheus:latest
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
grafana:
image: grafana/grafana:latest
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin123
ports:
- "3001:3000"
volumes:
- grafana_data:/var/lib/grafana
Node Exporter для системных метрик
node-exporter:
image: prom/node-exporter:latest
ports:
- "9100:9100"
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
Cadvisor для контейнеров
cadvisor:
image: gcr.io/cadvisor/cadvisor:latest
ports:
- "8080:8080"
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
📈 Ключевые метрики
Доступность сервисов
- Gitea: HTTP 200 на
/api/v1/version - Notes site: HTTP 200 на главной странице
- Webhook: HTTP 200 на
/health - Nginx: Статус процесса
Производительность
- Время сборки Quartz: от webhook до готового сайта
- Время отклика сайта: TTFB (Time To First Byte)
- Пропускная способность: requests/second
- Размер сайта: количество страниц и объем
Системные ресурсы
- CPU usage: по контейнерам и общий
- Memory usage: RAM и swap
- Disk usage: свободное место
- Network I/O: входящий/исходящий трафик
Бизнес-метрики
- Частота обновлений: commits в день/неделю
- Количество заметок: общее и новых
- Посещаемость сайта: уникальные посетители
- Время работы без сбоев: MTBF
🚨 Алерты и уведомления
Критические алерты
# Prometheus alerting rules
groups:
- name: second-mind-critical
rules:
- alert: ServiceDown
expr: up == 0
for: 1m
labels:
severity: critical
annotations:
summary: "Service {{ $labels.instance }} is down"
- alert: HighErrorRate
expr: rate(nginx_http_requests_total{status=~"5.."}[5m]) > 0.1
for: 2m
labels:
severity: critical
annotations:
summary: "High error rate on {{ $labels.instance }}"
Предупреждения
- Высокое использование CPU (>80% в течение 5 минут)
- Низкое свободное место (<1GB)
- Длительная сборка (>60 секунд)
- Высокое время отклика (>500ms)
Каналы уведомлений
- Telegram бот для критических алертов
- Email для еженедельных отчетов
- Grafana Dashboard для визуального мониторинга
- Slack webhook (если используется)
📱 Telegram интеграция
Создание бота для алертов
# Создать бота через @BotFather
# Получить токен и chat_id
Настройка Alertmanager
# alertmanager.yml
global:
telegram_api_url: "https://api.telegram.org"
route:
group_by: ['alertname']
receiver: 'telegram-alerts'
receivers:
- name: 'telegram-alerts'
telegram_configs:
- bot_token: 'YOUR_BOT_TOKEN'
chat_id: YOUR_CHAT_ID
message: |
🚨 {{ .GroupLabels.alertname }}
{{ range .Alerts }}
• {{ .Annotations.summary }}
{{ end }}
📊 Dashboard'ы Grafana
Главный dashboard
- System Overview: CPU, Memory, Disk, Network
- Services Status: все сервисы и их статус
- Build Pipeline: статистика сборок
- Website Performance: время отклика, ошибки
Детальные dashboard'ы
- Git Activity: commits, webhook calls
- Quartz Performance: время сборки, размер выходных файлов
- Nginx Analytics: access logs, top pages
- Container Resources: детализация по контейнерам
🔍 Логирование
Централизованный сбор логов
# Добавить в docker-compose.yml
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
ELK Stack (опционально)
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.5.0
environment:
- discovery.type=single-node
- xpack.security.enabled=false
logstash:
image: docker.elastic.co/logstash/logstash:8.5.0
volumes:
- ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf
kibana:
image: docker.elastic.co/kibana/kibana:8.5.0
ports:
- "5601:5601"
🏥 Health Checks
Встроенные health checks
# В docker-compose.yml для каждого сервиса
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
Внешний мониторинг
- UptimeRobot для проверки доступности извне
- StatusCake как альтернатива
- Pingdom для детального анализа
📋 Checklist внедрения
Фаза 1: Базовый мониторинг
- Настроить Prometheus
- Добавить основные метрики
- Создать простые алерты
- Настроить Telegram уведомления
Фаза 2: Расширенная аналитика
- Развернуть Grafana
- Создать dashboard'ы
- Настроить детальные алерты
- Добавить логирование
Фаза 3: Оптимизация
- Настроить внешний мониторинг
- Внедрить ELK (при необходимости)
- Автоматизировать отчетность
- Создать runbook'и для инцидентов
🎯 Следующие шаги
- Начать с Prometheus + Node Exporter
- Добавить базовые алерты через Telegram
- Создать простой Grafana dashboard
- Постепенно расширять покрытие метрик
Связано с: Second Mind Pipeline/index Приоритет: Высокий | Срок: 2 недели