Привет всем,
На одном из проектов в Hetzner у меня есть хост с proxmox. В качестве фаервола/маршрутизатора на хосте трудится небольшая виртуалка с RouterOS.
Поступила задача снимать метрики с этого облачного микрота, поэтому в данной заметке покажу как все настроить. Наверное к лучшему, что нечего костылить не придется и прикручивается достаточно нативно =)
Настройка на RouterOS
Экспортер, который мы установим позже снимает метрики с устройства за счет запросов на его API. Поэтому предварительно нужно создать read-only пользователя c доступом к микроту. Также нужно включить сервис, отвечающий за API. (По умолчанию я выключаю все, что не использую)
Любым доступным методом подключаемся к нашему устройству, я буду настраивать через winbox.
Далее для настройки сервера переходим в раздел - IP
-> Services
:
Выбираем сервис API
, и двойным нажатием проваливаемся в его настройки.
В поле available from
указываем адрес сервера, с которого экспортер будет стучатся на микрот. Сохраяем настройки и включаем сервис.
Итак, теперь прежде чем добавить нового пользователя создаем группу. Идем в раздел - System
-> Users
, в новом окне во вкладке Groups
добавляем группу:
В окне добавления группы выбираем политики - api
и read
:
Ну и наконец в соседнем разделе добавляем пользователя: Тут все просто, указываем имя пользователя и его группу. Группу указываем ту, что добавили ранее. Ну и задаем пользователю пароль.
В зависимости от политик вашего фаервола, возможно дополнительно потребуется добавить разрешающее правило. У меня почти весь трафик из локального сегмента разрешен. Поэтому этот этап я пропускаю.
Настройка 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
На этой ссылке находим дашборд для графаны и добавляем его.