четверг, 30 апреля 2020 г.

Мониторинг интерфейсов mikrotik с помощью mikrotik api, telegraf и grafana

 С чего началось... Меня попросили запилить мониторинг за народом, коий подключается по vpn к офису с использованием pptp (кто когда подключался, кто сколько прокачивал...). Самый первый и очевидный способ - полезть в snmp, да и запилить на нём, НО... Это же тебе надо знать заранее oid каждого интерфейса, а если мы говорим про vpn, то интерфейсы динамические... Вот заводишь ты новый vpn для кого то и потом его в мониторинге прописывать, нафиг... Гемор одним словом... А что если сделать так, чтобы в мониторинг всё попадало автоматом...
 



У меня напилена ^ вот такая вот конструкция по задумке (для тех, кто не знает что такое telegraf, influxdb и grafana - придётся малость погуглить/почитать отдельно, в рамках этой статьи я не буду разжёвывать...) . По задумке я хочу забирать состояние о имени динамического (а лучше о всех) интерфейса, его rx и tx в byte (мне этой инфы достаточно за уши). Итак реализация...

Для начала лезем в микротик, где создаём пользователя, а также включаем доступ к api микротика. Оговорюсь сразу - в случае если необходимо стучаться к микроту откуда то извне, то лучше подключить api-ssl, но тут я ограничусь использованием без него...

/user add name=apiuser password=StroNGp@5sW0rd! address=192.168.88.0/24 group=read
/ip service set api disabled=no address=192.168.88.0/24

address - это диапазон/отдельные ip адреса, с которых возможно стучаться к микроту...

Далее необходимо посадить скрипт на машинку, которая находится в пределах сети 192.168.88.0/24 и на которой установлен telegraf.

Для начала ставим:

sudo apt install python3-pip git
sudo -H pip3 install RouterOS-api

Стягиваем моего скрипта:

mkdir -p /opt/scripts/  && cd /opt/scripts/
git clone https://github.com/constantinekg/mikrotik-telegraf-interface-monitor/
cd mikrotik-telegraf-interface-monitor/
chmod +x mikrotik-interface-stat-getter.py

В конфиге телеграфа допрописываем:

[[inputs.exec]]
command = "/opt/scripts/mikrotik-telegraf-interface-monitor/mikrotik-int-stat-getter.py"
timeout = "5s"
data_format = "influx"


Далее идём в графану, к которой у нас уже подцеплен influxdb и добавляем новый график для начала для просмотра состояния наших pptp интерфейсов в какой нибудь дэшборд...



В опциях визуализации выставляемс:




В General прописываем имя графика - например office vpn on mikrotik, не забываем сохраниться и уаля...



До кучи подобавляю интерфейсы, кои физические (eth / wlan)... К примеру:



Обзываем его как надо, по аналогии с предыдущим выставляем его опции отображения и рисуется...



Красота... За сим всё... Можно ещё и алерты какие нибудь прикрутить, но это уже такое...

Комментариев нет:

Отправить комментарий