Slepoy • сис.админ © 2025-2026.

SLEPOY • сис.админ

Как развернуть систему сбора логов сетевого оборудования Mikrotik (Grafana + Loki)

Когда сеть растет, бегать по SSH или Winbox к каждому роутеру для просмотра логов становится невозможно. Пришло время внедрять современные инструменты.

В основе системы сбора и анализа логов лежат три компонента: Promtail (сборщик), Loki (хранилище/агрегатор) и Grafana (интерфейс для просмотра). Они работают в тесной связке.

  1. Grafana — это основной инструмент для визуализации, где строят графики и дашборды.
  2. Loki — это база данных для логов от тех же разработчиков. Она работает по принципу Prometheus (популярного инструмента для метрик), но хранит тексты логов, индексируя только их метки для быстроты.
  3. Promtail — это сборщик, который следит за лог-файлами, добавляет к ним нужные метки и отправляет данные в Loki.

Приложение (Пишет логи в файл) -> Promtail (Читает файлы, добавляет метки) -> Loki (Хранит логи) <- Grafana (Визуализирует полученные данные)

Установить docker и docker-compose вы можете по этой статье.

Шаг 1. Подготавливаем файлы конфига

Создаём директории:

Code
sudo mkdir -p /opt/logging/data_loki
sudo mkdir /opt/logging/promtail

Конфигурация содержит 3 сервиса: Loki, Promtail и Grafana Создаём файл compose:

Code
services:
  loki:
    container_name: loki
    image: grafana/loki:3.4.2
    command: "-config.file=/etc/loki/config.yaml"
    volumes:
      - ./data_loki/config.yaml:/etc/loki/config.yaml:ro
      - ./data_loki/storage:/loki/storage
    restart: unless-stopped
    networks:
      GrafanaLoki:
        ipv4_address: 192.168.10.50
  promtail:
    image: grafana/promtail:3.4.2
    command: "-config.file=/mnt/config/config.yaml"
    volumes:
      - ./promtail/config.yaml:/mnt/config/config.yaml:ro
      - /var/run/docker.sock:/var/run/docker.sock
      - ./data_promtail/positions:/var/log/positions
    restart: unless-stopped
    ports:
      - "1514:1514/udp"
    networks:
      GrafanaLoki:
        ipv4_address: 192.168.10.60
  grafana:
    image: grafana/grafana-oss:11.5.2
    container_name: grafana
    restart: unless-stopped
    volumes:
      - ./data_grafana:/var/lib/grafana
    networks:
      GrafanaLoki:
        ipv4_address: 192.168.10.70
networks:
  GrafanaLoki:
    external: true
    name: GrafanaLoki

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

  1. Первый вариант подразумевает использование плагина Loki Docker Plugin, который обеспечивает прямую доставку логов в Loki.
  2. Второй подход (реализованный в нашем случае) основан на настройке сбора логов на хостах через Docker-сокет.

Процес создания файла конфига promtail:

Code
# Создание файла конфигурации
sudo nano /opt/promtail/config.yaml

# Сбор логов с Docker контейнеров
  - job_name: docker-logs
    docker_sd_configs:
      - host: unix:///var/run/docker.sock
    relabel_configs:
      - source_labels: [__meta_docker_container_name]
        target_label: container
      - source_labels: [__meta_docker_container_log_stream]
        target_label: stream
# Сбор логов из файлов (например, системные логи)
  - job_name: system-logs
    static_configs:
      - targets:
          - localhost
        labels:
          job: varlogs
          __path__: /var/log/*.log
# Сбор логов Микротик через Syslog
  - job_name: syslog
    syslog:
      listen_address: 0.0.0.0:1514
      listen_protocol: udp
      syslog_format: rfc3164
      labels:
        job: syslog
      use_incoming_timestamp: false
    relabel_configs:
      - source_labels: ['__syslog_message_hostname']
        target_label: host
      - source_labels: ['__syslog_message_hostname']
        target_label: instance
      - source_labels: ['__syslog_message_app_name']
        target_label: application
      - source_labels: ['__syslog_message_severity']
        target_label: level
      - source_labels: ['__syslog_message_hostname']
        target_label: routerboard

Процес создания файла конфига loki:

Code
# Создание файла конфигурации
sudo nano opt/data_loki/config.yaml

#Конфигурация Loki
auth_enabled: false
server:
  http_listen_port: 3100
  grpc_listen_port: 9096
common:
  instance_addr: 127.0.0.1
  path_prefix: /loki
  storage:
    filesystem:
      chunks_directory: /loki/storage/chunks
      rules_directory: /loki/storage/rules
  replication_factor: 1
  ring:
    kvstore:
      store: inmemory  
storage_config:
  tsdb_shipper:
    active_index_directory: /loki/storage/index
    cache_location: /loki/storage/tsdb-cache
  filesystem:
    directory: /loki/storage/chunks
schema_config:
  configs:
    - from: 2026-03-13
      store: tsdb
      object_store: filesystem
      schema: v13
      index:
        prefix: index_
        period: 24h
ruler:
  alertmanager_url: http://localhost:9093

Шаг 2. Создание сети для Docker

Для создания собственной сети Docker с заданными диапазонами адресов используйте команду docker network create с флагами --subnet и --gateway, либо настройте сеть в docker-compose.yml. Это позволяет изолировать контейнеры и назначать им статические IP.

Code
docker network create \
  --driver bridge \
  --subnet 192.168.10.0/24 \
  --gateway 192.168.10.1 \
  GrafanaLoki

Шаг 3. Запуск сервиса

Читаем конфигурацию сервисов, создаем и запускаем контейнеры согласно конфигурации:

Code
sudo docker-compose up -d

Открываем графану по IP-адресу сервера, порт 3000, рекомендую сразу выпустить сертификат и пустить через Nginx Proxy Reverse пароль и логин по умолчанию admin:admin

Переходим на вкладку: Connection -> Data sources -> Добавляем Loki в URL прописываем - http://192.168.10.50:3100 адресс сервиса описанный ранее в конфигурации

Шаг 4. Настройка Dashboard Grafana и Mikrotik

Dashboard используемый в шпаргалке: https://slepoy.site/files/Mikrotik-1773382968348.json Существует масса готовых Dashboard для mikrotik например:

  1. https://grafana.com/grafana/dashboards/14420-mikrotik-monitoring/
  2. https://grafana.com/grafana/dashboards/13679-mikrotik-mktxp-exporter/
  3. https://grafana.com/grafana/dashboards/18460-mikrotik-dashboard/

Настройка MikroTik выполняется в два этапа. В первую очередь необходимо настроить параллельную отправку всех системных журналов (логов) на удаленный сервер (Action Remote):

Второй этап — настройка параметров удаленного сервера непосредственно на MikroTik. В поле Remote Address необходимо указать данные вашего сервера, все остальные параметры выставляем как на картинке:

После этого все логи с каждого настроенного оборудования MikroTik станут доступны непосредственно в дашборде Grafana:

❝ Все глаза смотрят, но немногие из них наблюдают, и ничтожное меньшинство способно видеть. ❞ - Альберт Санчес Пиньоль

MikrotikLinuxBash

Статистика

Дата публикации: 16 часов назад

Дата редактирования: 16 часов назад

Количество просмотров: 183

Количество показов: 258

Количество лайков: 0

Закладки: 0