Найти тему
It_live

Мониторинг Dude Mikrotik. Функции и скрипты по простому

Это еще одна старая статья, которая тем не менее актуальна, из списка тех, что я переношу сюда из своего профиля на хабре. По прошествии времени с ее написания могу точно сказать, что большую часть всего что делают функции и скрипты в этой статье, намного быстрее и сильно проще делает zabbix. А теперь еще и с оповещениями в телеграмм, сказка. Но сам синтаксис и что с его помощью можно сделать вполне рабочие. А для мониторинга устройств mikrotik, мне все таки удобнее Dude.

Начали.

Я видел в интернете много инструкций по dude от Mikrotik, но не смог найти информацию как правильно писать и использовать скрипты и функции. Теперь частично разобравшись, готов с вами поделится. Здесь не будет описания установки и минимальной настройки dude, для этого есть много подробных инструкций. А также, я не буду рассказывать почему использую именно dude, это статья не для этого. Вперед.

Имею в наличии стену мониторинга, не закончена, мониторов будет девять. Доделаем, сделаю отдельную статью.

-2

Я начал собирать необходимые мне карты. В какой-то из инструкций по dude я увидел, что теоретически можно организовать мониторинг жестких дисков на серверах с использованием SNMP. На этом примере мы и будем разбирать скрипт.

Вот это конечный результат.

-3

Я буду писать небольшими кусками, а для тех, кто «блин не жуй, где конечный результат?» внизу полные скрипты для мониторинга.

И так логика такая, мы проверяем наличие диска по OID, если он существует, получаем объем, занятое пространство, вычисляем свободное и, если оно меньше заданного начинаем алармить.
С простого. А самый простой способ для проверки объема вставить нашему серверу напрямую команду проверки диска. Сейчас наш сервер имеет вот такой вид.

-4

Вставить команду можно нажав правой кнопкой мыши по нашему серверу, выбрать из представленного “Appearance”, в открытом окне нас интересует поле “Label”. Вставим в него команду. Для того чтобы все работало правильно, необходимо в начале и в конце команды поставить квадратные скобки [ ].

Используем вот такую команду [oid(«1.3.6.1.2.1.25.2.3.1.5.1»)*oid(«1.3.6.1.2.1.25.2.3.1.4.1»)/1024/1024/1024]. На выходе получаем вот такую картинку

-5

Если по-простому, то oid это имя, присвоенное какому-то железу по его типу. Если по совсем правильному то вот — Как читать MIB и OID.

С этим разобрались. Теперь, полученные цифры, это объем диска в ГБ без округления.
Теперь нам нужно добавить условия. У микротика это работает так: if(условие)=значение, сделать это, иначе сделать вот это. В нашем случае пишем так:

[if(oid(«1.3.6.1.2.1.25.2.3.1.5.1»)=0,«1»,oid(«1.3.6.1.2.1.25.2.3.1.5.1»)
*oid(«1.3.6.1.2.1.25.2.3.1.4.1»)/1024/1024/1024)]

Получаем такую строку если oid = 0, т.е диск отсутствует или пуст вывести 1, иначе получить объем диска. Вместо 1 может быть что угодно, но для примера нужно так. Продолжим. В следующем коде добавлен только round для округления.

Код с добавленным round

[if(oid("1.3.6.1.2.1.25.2.3.1.5.1")=0,"1",
round(oid("1.3.6.1.2.1.25.2.3.1.5.1")*oid("1.3.6.1.2.1.25.2.3.1.4.1")/1024/1024/1024))]

-6

Для объединения команд у микротика используется concatenate. Применение очень неожиданное, все-таки ни excel, но получилось работать только с ним. Если у кого-то получиться сделать тоже самое более простым кодом пишите, будет интересно обсудить. PS: только сначала ознакомьтесь с полученным результатом до конца, чтобы не было недопонимания.

-7

Этим кодом мы объединили всю доступную информацию по памяти на диске. Объем/занято/свободно в ГБ. Вроде очевидно, вроде понятно, но как быть с остальными дисками? Добавлять код для каждого диска? Дисков может быть много, да и ни для того мы работаем, чтобы руками это все писать каждый раз. Я использовал функции. Вначале столкнулся с проблемами, при добавлении кода подряд можно добавить не более 10 раз в одной функции, тапками не кидаем, цикл микротику не знаком, к сожалению. Нас спасет конкатенация. Во вкладке functions создадим новую, выглядит она вот так:

В функцию код добавляется без квадратных скобок. Таким образом прибавляя по единице к oid мы проверим все теоретически возможные диски в системе. Тут следует уточнить, что буквы дисков написаны по стандартной очередности, если у вас буква первого диска будет W, то для этого железа все придется делать вручную, ну или отдельную функцию My_Funny_Computer. В примере начало пути, каждый допилит под себя. Ок, проверим. Берем имя созданной функции, заключаем в квадратные скобки, в конец ставим круглые и добавляем вместо кода во вкладку Label. Пример [About_PC()]

-8
-9

Теперь мы можем смотреть и наслаждаться, но задача у нас иная, автоматизировать процесс.
Для этого нам нужна функция, которая будет проверять диски и отдавать инфу зонду проверки. Делаем функцию, назову Monitor_Disc_Serv суть ее такая: если oid не равен 0 проверим диск и если памяти более 50 гб вернем 1, иначе 0.

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

-10

В поле Type выбираем Function, объявляя, что будем обрабатывать значение, полученное из функции.

Monitor_Disc_Serv() = 1 во вкладке Available значит что если функция Monitor_Disc_Serv возвращает 1, все хорошо.

Error срабатывает если Available выдает ошибку, т.е. всегда когда ее значение не равно 1.
Для правильной работы зонда пишем все прозрачно и очевидно: if(Monitor_Disc_Serv()=1,"",«Что-то случилось») если функция возвращает 1 то ничего делать не нужно, иначе вывести строчку в аларм. Теперь дальше, чтобы это все работало нам необходимо добавить настроенный зонд нашему серверу. Для этого откроем настройки, вкладку Services и добавим зонд:

-11

У меня он уже сработал, вот так выглядит аларм настроенный у меня, вы же можете поставить не 50гб а столько, сколько нужно.

-12

В итоге у нас получилось две функции. Первая для просмотра места на диске в реальном времени и вторая для передачи информации зонду. А также один зонд.

Далее можно прикрутить смс или почтовое оповещение, писк, крики чаек над морем (не проверял, кто сделает пишите будет интересно). Я думаю, что сюда можно добавить что-то еще, но самое основное здесь уже есть. Дальше мы с ребятами планируем повесить остальные мониторы, настроить все экраны для dude, и добавить на часть этих мониторов Zabbix. Про пк который потянул девять мониторов, шкаф для его сборки и что из этого вообще получилось расскажу в когда закончим. Пока переезд серверной, и я дописал эту статью, пока что-то помню.

Всем удачи.

Как обещал.

Функция для просмотра места на диске в реальном времени

Функция для передачи в зонд

Функция для CentOS в тестовом режиме

#системное администрирование #сетевое администрирование #linux #mikrotik #мониторинг #dude