Docs/docs/08-monitoring.md
Administrator 0d8e11aa30 Update 3 files
- /README.md
- /docs/08-monitoring.md
- /docs/09-ansible.md
2026-03-20 16:18:15 +05:00

169 lines
7.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 08. Мониторинг и логирование
## Обзор
Для централизованного мониторинга и сбора логов используется стек:
- **VictoriaMetrics** хранилище временных рядов (метрики)
- **Grafana** визуализация и дашборды
- **Loki** хранение логов
- **Promtail** сбор и отправка логов
- **Node Exporter** системные метрики на всех хостах
- **cAdvisor** метрики Docker-контейнеров (включён на некоторых хостах)
- **Proxmox VE Exporter** сбор метрик гипервизора
Все компоненты работают на хосте `manage` (192.168.1.208) в Docker-контейнерах, за исключением Node Exporter и Promtail, которые установлены на каждом хосте.
## Структура сбора данных
```mermaid
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` установка и настройка Promtail
- `grafana` развёртывание Grafana, импорт дашбордов
- `loki` настройка Loki
- `node_exporter` установка Node Exporter (входит в роль `base_setup`)
- `cadvisor` развёртывание cAdvisor (закомментирована)
Переменные заданы в `group_vars/all.yml`:
```yaml
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 и настроен соответствующий источник данных.
---
**Связанные разделы:**
- [Проксирование и SSL (NPM)](07-proxy-ssl.md)
- [Управление конфигурацией (Ansible)](09-ansible.md)
- [Безопасность](10-security.md)