169 lines
7.3 KiB
Markdown
169 lines
7.3 KiB
Markdown
# 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) |