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

7.3 KiB
Raw Permalink Blame History

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 установка и настройка Promtail
  • grafana развёртывание Grafana, импорт дашбордов
  • loki настройка Loki
  • node_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 и настроен соответствующий источник данных.


Связанные разделы: