7.3 KiB
08. Мониторинг и логирование
Обзор
Для централизованного мониторинга и сбора логов используется стек:
- VictoriaMetrics – хранилище временных рядов (метрики)
- Grafana – визуализация и дашборды
- Loki – хранение логов
- Promtail – сбор и отправка логов
- Node Exporter – системные метрики на всех хостах
- cAdvisor – метрики Docker-контейнеров (включён на некоторых хостах)
- Proxmox VE Exporter – сбор метрик гипервизора
Все компоненты работают на хосте manage (192.168.1.208) в Docker-контейнерах, за исключением Node Exporter и Promtail, которые установлены на каждом хосте.
Структура сбора данных
graph LR
subgraph Хосты
NE[Node Exporter :9100]
PT[Promtail :9080]
CA[cAdvisor :8080]
end
NE --> VM[VictoriaMetrics :8428]
CA --> VM
PT --> Loki[Loki :3100]
VM --> Grafana[Grafana :45132]
Loki --> Grafana
Proxmox[Proxmox VE Exporter] --> VM
08. Мониторинг и логирование
Метрики
Node Exporter
Установлен на всех хостах (включая Proxmox). Собирает:
- Загрузка CPU, память, диски, сеть
- uptime, количество процессов
- метрики ядра (TCP, UDP, etc.)
Порт: 9100
cAdvisor
Собирает метрики Docker-контейнеров:
- CPU, память, сеть, диски на уровне контейнера
- количество контейнеров, их статусы
Порт: 8080
Включён на хостах: gateway, data, media, photo, talk, games, manage (фактически везде, где есть Docker, хотя в Ansible роль cadvisor закомментирована – уточнить)
Proxmox VE Exporter
Собирает метрики гипервизора:
- состояние ВМ и LXC (CPU, память, диски, сеть)
- нагрузка на хранилища
- статус кластера
Порт: 9223
Запущен на хосте olimp (Proxmox). Аутентификация через API-токен (пользователь pve_exporter@pve).
VictoriaMetrics
Хранилище временных рядов. Принимает метрики от:
- Node Exporter (все хосты)
- cAdvisor (хосты с Docker)
- Proxmox VE Exporter
- vmagent (если используется)
Порт: 8428
Запущен на хосте manage в Docker-контейнере.
Логи
Promtail
Установлен на каждом хосте, где есть сервисы. Собирает логи:
- системные логи (syslog, auth)
- логи Docker-контейнеров (через драйвер
json-file) - логи приложений (например, NPM, Jellyfin) из файлов
Конфигурация Promtail находится в /etc/promtail/promtail.yaml на каждом хосте. Отправляет логи в Loki по порту 3100.
Loki
Хранилище логов на хосте manage. Retention: 30 дней. Доступен для запросов из Grafana.
Порт: 3100
Запущен в Docker-контейнере.
Визуализация (Grafana)
Grafana доступна по домену mon.zailon.ru. Используются дашборды:
- Node Exporter Full – системные метрики всех хостов
- Docker Monitoring – метрики контейнеров (cAdvisor)
- Proxmox – состояние ВМ и хранилищ
- Loki Logs – просмотр логов
- NPM – статистика запросов (если настроен сбор логов NPM)
Доступ
- Администратор:
admin/ пароль (хранится в Ansible Vault) - URL:
https://mon.zailon.ru
Алерты
Алерты настроены через Grafana Alerting. Основные правила:
| Условие | Действие |
|---|---|
| Высокая загрузка CPU (>90% в течение 15 мин) | Уведомление в Telegram (если настроено) |
| Недоступность хоста (Node Exporter down) | Уведомление |
| Ошибки 5xx в NPM > 10 за 5 мин | Уведомление |
| Низкое свободное место на диске (<10%) | Уведомление |
Конкретные правила могут уточняться.
Настройка через Ansible
Все компоненты мониторинга управляются Ansible. Роли:
promtail– установка и настройка Promtailgrafana– развёртывание Grafana, импорт дашбордовloki– настройка Lokinode_exporter– установка Node Exporter (входит в рольbase_setup)cadvisor– развёртывание cAdvisor (закомментирована)
Переменные заданы в group_vars/all.yml:
monitoring_ports:
node_exporter: 9100
cadvisor: 8080
proxmox_exporter: 9223
vmagent: 8429
victoriametrics: 8428
loki: 3100
promtail: 9080
grafana_admin_password: "{{ vault_grafana_admin_password }}"
loki_retention_days: 30
Проблемы и рекомендации
🔴 cAdvisor не включён на всех хостах
В плейбуке olimp-deploy.yml роль cadvisor закомментирована. Если нужны метрики контейнеров на всех хостах, следует её включить.
🟡 Отсутствие алертов на логи
Настроены только метрики. Желательно добавить алерты на появление в логах критических событий (например, error, panic, failed). Это можно сделать через Loki Alerting.
🟢 Мониторинг роутера и внешних устройств
Сейчас собираются метрики только с серверов. Хорошо бы добавить мониторинг роутера (SNMP) и умных устройств (например, через ping).
🟠 Настройка дашбордов
Проверьте, что все дашборды корректно отображают данные. Для NPM нужно убедиться, что логи попадают в Loki и настроен соответствующий источник данных.
Связанные разделы: