Привет всем,

На одном из проектов в Hetzner у меня есть хост с proxmox. В качестве фаервола/маршрутизатора на хосте трудится небольшая виртуалка с RouterOS.

Поступила задача снимать метрики с этого облачного микрота, поэтому в данной заметке покажу как все настроить. Наверное к лучшему, что нечего костылить не придется и прикручивается достаточно нативно =)

Настройка на RouterOS

Экспортер, который мы установим позже снимает метрики с устройства за счет запросов на его API. Поэтому предварительно нужно создать read-only пользователя c доступом к микроту. Также нужно включить сервис, отвечающий за API. (По умолчанию я выключаю все, что не использую)

Любым доступным методом подключаемся к нашему устройству, я буду настраивать через winbox. Далее для настройки сервера переходим в раздел - IP -> Services: mikrotik-exporter-setup.png

Выбираем сервис API, и двойным нажатием проваливаемся в его настройки. mikrotik-exporter-setup1.png В поле available from указываем адрес сервера, с которого экспортер будет стучатся на микрот. Сохраяем настройки и включаем сервис.

Итак, теперь прежде чем добавить нового пользователя создаем группу. Идем в раздел - System -> Users, в новом окне во вкладке Groups добавляем группу: mikrotik-exporter-setup1.png

В окне добавления группы выбираем политики - api и read: mikrotik-exporter-setup4.png

Ну и наконец в соседнем разделе добавляем пользователя: mikrotik-exporter-setup5.png Тут все просто, указываем имя пользователя и его группу. Группу указываем ту, что добавили ранее. Ну и задаем пользователю пароль.

В зависимости от политик вашего фаервола, возможно дополнительно потребуется добавить разрешающее правило. У меня почти весь трафик из локального сегмента разрешен. Поэтому этот этап я пропускаю.

Настройка Mikrotik Exporter

Подключаемся на сервер, где будет установлен exporter. И качаем туда последний релиз экспортера:

[root@mon ~]# cd /tmp/
[root@mon tmp]# wget https://github.com/nshttpd/mikrotik-exporter/releases/download/1.0.11/mikrotik-exporter_linux_amd64

Бинарь экспортера переносим в каталог испольняемых файлов:

[root@mon tmp]# mv mikrotik-exporter_linux_amd64 /usr/local/bin/mikrotik-exporter

Создадим каталог в etc, где будут храниться файлы конфигурации для экспортера:

[root@mon tmp]# mkdir /etc/mikrotik-exporter

Далее в этом каталоге создаем файл с описанием подключения к нашим устройствам:

[root@mon tmp]# vim /etc/mikrotik-exporter/config.yml
---
devices:
  - name: r1.mox.ru
    address: 10.8.5.254
    user: prometheus
    password: password

features:
  bgp: true
  dhcp: true
  dhcpv6: true
  dhcpl: true
  routes: true
  pools: true
  optics: true

Ну и пробуем запустить експортер с указанием созданного файла конфигурации:

[root@mon tmp]# mikrotik-exporter --config-file /etc/mikrotik-exporter/config.yml

В случаи если все настроено правильно, експортер будет поднят на порту - 9436. И если курлом постучатся на этот порт, в ответе на запрос вывалится множество метрик:

[root@mon ~]# curl http://localhost:9436/metrics

Отлично, на этом почти все. Что бы не запускать експортер не из под пользователя root, создадим системного локального пользователя:

[root@mon tmp]# useradd -U --system -c "Mikrotik exporter user" -s /bin/false mikrotik-exporter

Меняем овнера на файлах:

[root@mon tmp]# chown -R mikrotik-exporter:mikrotik-exporter /etc/mikrotik-exporter/
[root@mon tmp]# chown -R mikrotik-exporter:mikrotik-exporter /usr/local/bin/mikrotik-exporter

Ну и в конце пишем systemd-юнит для запуска сервиса:

[root@mon tmp]# vim /etc/systemd/system/mikrotik-exporter.service
---
[Unit]
Description=Mikrotik-Exporter
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=mikrotik-exporter
Group=mikrotik-exporter
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/local/bin/mikrotik-exporter --config-file /etc/mikrotik-exporter/config.yml
Restart=always

[Install]
WantedBy=multi-user.target

Перечитываем конфигурацию systemd, и запускаем сервис:

[root@mon ~]# systemctl daemon-reload
[root@mon ~]# systemctl enable --now mikrotik-exporter

Я предполагаю, что прометей у вас уже установлен. Открываем его конфигурационный файл и добавляем новую джобу:

[root@mon ~]# vim /etc/prometheus/prometheus.yml
---
  - job_name: 'mikrotik-exporter'
    scrape_interval: 30s
    static_configs:
      - targets:
        - 10.8.5.1
    metrics_path: /metrics
    params:
      module: [my_router]
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: localhost:9436

На этой ссылке находим дашборд для графаны и добавляем его. mikrotik-exporter.png