Skip to main content

Мониторинг логов Mikrotik: Документация

1. Введение​

Цель документа​

Данная документация описывает решение для централизованного сбора, хранения и визуализации логов с сетевого оборудования Mikrotik. Документ предназначен для системных администраторов и инженеров, которые хотят понять архитектуру и принципы работы стека мониторинга.

Для кого предназначено​

  • Системные администраторы, обслуживающие сетевую инфраструктуру
  • IT-специалисты, внедряющие системы мониторинга
  • Инженеры, работающие с Mikrotik и Proxmox

Общая схема решения​

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│ Mikrotik │ │ Mikrotik │ │ Mikrotik │
│ Router 1 │ │ Router 2 │ │ Router N │
└────────┬────────┘ └────────┬────────┘ └────────┬────────┘
│ │ │
│ Syslog (UDP 514) │ │
└───────────────────────┼───────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ Ubuntu Server VM │
│ (Proxmox кластер) │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Docker Compose │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────────────┐ │ │
│ │ │ Alloy │────▶│ Loki │────▶│ Grafana │ │ │
│ │ │ :514/udp│ │ :3100 │ │ :3000 │ │ │
│ │ └─────────┘ └─────────┘ └─────────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘

2. Инфраструктура​

2.1 Proxmox кластер​

Proxmox VE (Virtual Environment) — это платформа виртуализации с открытым исходным кодом, объединяющая технологии KVM (для виртуальных машин) и LXC (для контейнеров) под единым веб-интерфейсом управления.

Принцип работы кластера​

Proxmox кластер состоит из нескольких физических серверов (нод), объединённых в единую систему управления. Ключевые принципы работы:

  • Кворум — механизм голосования, определяющий работоспособность кластера. Для принятия решений требуется большинство голосов (50% + 1). При потере кворума кластер блокирует операции записи для защиты данных от split-brain.

  • Corosync — отвечает за коммуникацию между нодами, отслеживает их состояние и обеспечивает синхронизацию конфигурации кластера.

  • Распределённое хранилище — кластер может использовать общие хранилища (Ceph, NFS, iSCSI), что позволяет мигрировать виртуальные машины между нодами без простоя.

Роль виртуализации в данном решении​

Виртуальная машина с Ubuntu Server размещена на Proxmox кластере, что обеспечивает:

  • Изоляцию сервиса мониторинга от других систем
  • Возможность быстрого восстановления из снапшота
  • Гибкое распределение ресурсов (CPU, RAM, диск)
  • Высокую доступность при использовании HA-функций Proxmox

2.2 Ubuntu Server VM​

В качестве операционной системы для стека мониторинга выбрана Ubuntu Server 24.04 LTS. Основные причины выбора:

  • Долгосрочная поддержка (LTS) — обновления безопасности на 5 лет
  • Широкая совместимость с Docker и современными инструментами
  • Минимальное потребление ресурсов в серверной редакции
  • Обширная документация и сообщество

Виртуальная машина размещена на одной из нод Proxmox кластера и получает ресурсы согласно выделенной конфигурации.


3. Архитектура стека​

3.1 Push-модель сбора логов​

Существует два основных подхода к сбору логов:

МодельОписаниеИнициатор
PushИсточник сам отправляет логи на серверКлиент (Mikrotik)
PullСервер периодически опрашивает источникиСервер мониторинга

Почему Mikrotik использует Push​

Mikrotik RouterOS поддерживает протокол Syslog для отправки логов. Это классический Push-подход, при котором роутер самостоятельно отправляет события на указанный syslog-сервер по протоколу UDP или TCP.

Настройка на стороне Mikrotik минимальна:

/system logging action
add name=remote remote=<IP сервера> remote-port=514 target=remote

/system logging
add action=remote topics=critical,error,warning,info

Преимущества Push-модели​

  • Простота настройки — достаточно указать IP-адрес сервера
  • Мгновенная доставка — события отправляются сразу при возникновении
  • Независимость от сервера — роутер работает автономно, даже если сервер недоступен
  • Низкая нагрузка на роутер — не требуется агент или дополнительное ПО

Ограничения​

  • UDP не гарантирует доставку — логи могут теряться при сетевых проблемах
  • Нет подтверждения получения — отправитель не знает, дошло ли сообщение
  • Безопасность — syslog по умолчанию передаётся в открытом виде

3.2 Компоненты стека​

Grafana Alloy​

Alloy — это сборщик телеметрии от Grafana Labs, пришедший на смену Promtail и Grafana Agent. В данном решении Alloy выполняет роль syslog-сервера:

  • Принимает syslog-сообщения по UDP (порт 514) и TCP (порт 1514)
  • Парсит сообщения формата RFC3164 (BSD Syslog)
  • Извлекает метаданные: hostname, severity, facility, app_name
  • Пересылает структурированные логи в Loki

Grafana Loki​

Loki — это система хранения логов, оптимизированная для работы с Grafana. Ключевые особенности:

  • Индексация только по меткам — в отличие от Elasticsearch, Loki не индексирует содержимое логов, что значительно снижает требования к ресурсам
  • Горизонтальное масштабирование — архитектура позволяет добавлять ноды по мере роста объёма данных
  • Совместимость с Prometheus — использует похожий язык запросов (LogQL)
  • Сжатие данных — эффективное хранение с настраиваемым retention

Grafana​

Grafana — платформа визуализации и аналитики. Предоставляет:

  • Веб-интерфейс для просмотра и поиска логов
  • Конструктор dashboard-ов с разнообразными панелями
  • Систему алертинга на основе условий
  • Управление пользователями и правами доступа

3.3 Поток данных​

Mikrotik Router
│
│ 1. Syslog UDP/TCP (RFC3164)
│ <134>Dec 26 15:00:00 RouterName topic: message
▼
┌─────────────┐
│ Alloy │
│ │ 2. Парсинг syslog:
│ - Приём │ - Извлечение hostname
│ - Парсинг │ - Определение severity
│ - Relabel │ - Извлечение app_name (topic)
└──────┬──────┘
│
│ 3. HTTP POST /loki/api/v1/push
│ Структурированные логи с метками
▼
┌─────────────┐
│ Loki │
│ │ 4. Хранение:
│ - Индекс │ - Индексация по меткам
│ - Chunks │ - Сжатие в chunks
│ - Retention│ - Применение retention policy
└──────┬──────┘
│
│ 5. LogQL запросы
│
▼
┌──────────────┐
│ Grafana │ 6. Визуализация:
│ │ - Dashboard-ы
│ - Explore │ - Панели и графики
│ - Dashboards│ - Поиск по логам
│ - Alerts │ - Алерты
└──────────────┘

4. Docker Compose​

Почему Docker​

Контейнеризация через Docker выбрана по следующим причинам:

  • Изоляция — каждый компонент работает в своём окружении
  • Воспроизводимость — одинаковое поведение на любой системе
  • Простота обновления — смена версии сводится к изменению тега образа
  • Управление зависимостями — все зависимости упакованы в образ

Обзор сервисов​

Стек состоит из трёх контейнеров, описанных в docker-compose.yml:

СервисОбразПортыНазначение
alloygrafana/alloy:v1.5.1514/udp, 1514/tcp, 12345Приём syslog
lokigrafana/loki:3.3.23100Хранение логов
grafanagrafana/grafana:11.4.03000Веб-интерфейс

Сетевое взаимодействие контейнеров​

                    ┌─────────────────────────────────┐
Внешняя сеть │ Docker Network (bridge) │
│ │
UDP 514 ─────────┼──▶ alloy:514 │
TCP 1514 ────────┼──▶ alloy:1514 │
│ │ │
│ │ http://loki:3100 │
│ ▼ │
│ loki:3100 │
│ ▲ │
│ │ http://loki:3100 │
HTTP 3000 ───────┼──▶ grafana:3000 ───────────────┘│
│ │
└─────────────────────────────────┘

Docker Compose автоматически создаёт внутреннюю сеть, в которой контейнеры обращаются друг к другу по имени сервиса (alloy, loki, grafana). Внешний доступ осуществляется только через опубликованные порты.


5. Заключение​

Что получили​

Развёрнутый стек обеспечивает:

  • Централизованный сбор логов со всех Mikrotik устройств в сети
  • Долгосрочное хранение с настраиваемым retention (по умолчанию 30 дней)
  • Удобный поиск по содержимому и фильтрация по меткам
  • Визуализацию через готовые dashboard-ы в Grafana
  • Мониторинг событий — отслеживание падений L2TP туннелей, firewall событий, ошибок авторизации

Веб-интерфейс Grafana