Я познакомился с очень простым и любопытным мониторингом. Его отличает скорость и простота настройки, а так же необычный плиточный дашборд, который идеально подходит под некоторые задачи. Речь пойдет про бесплатный Monitoror. Я расскажу, как его установить и покажу примеры некоторых проверок.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Введение
Меня зацепил этот мониторинг простотой настройки и легковесностью. Он состоит из одного бинарника и пары конфигов. При этом способен неплохо решать некоторые задачи, затрачивая минимум ресурсов и времени на настройку. Официальный сайт - https://monitoror.com. Там есть хорошая документация, которой достаточно для того, чтобы самому быстро разобраться и настроить мониторинг с помощью Monitoror.
Интерфейс Monitoror состоит из плиток и выводит текстовую информацию. Ничего другого он не умеет. Когда всё в порядке, плитка зелёного цвета. Когда возникает проблема - становится красной. Оповещения Monitoror слать не умеет. То есть это только Dashboard.
Подобная система мониторинга идеально подходит, когда вам нужно получать какую-то информацию по API, либо делать простейшие проверки сайта на предмет открытого tcp порта, кода ответа веб сервера или времени отклика на ping. Все эти проверки настраиваются очень просто и быстро.
Сразу скажу, что никакого уникального функционала Monitoror не дает. Все, что он умеет, можно реализовать в Zabbix, похожие дашборды можно собрать в Grafana. Разница лишь в том, что там вы провозитесь значительно дольше. Это при условии, что вы знакомы с этими продуктами. Если нет, то потратите кучу времени на изучение. Monitoror настроить в разы проще и дальше я покажу это на примерах.
Установка Monitoror
Установить Monitoror не составляет никаких проблем. Он состоит из одного бинарника. Достаточно его просто скачать, сделать исполняемым и запустить. Заберём свежую версию с github:
# curl -sL -o monitoror $(curl -s https://api.github.com/repos/monitoror/monitoror/releases/latest | grep 'browser_download_url.*monitoror-linux-amd64' | cut -d: -f2,3 | tr -d \")
Делаем файл исполняемым и запускаем:
# chmod +x monitoror # ./monitoror
Вот и вся установка. Ну как, ощутили простоту? :) Теперь можно сходить в браузер и проверить, что Monitoror запустился. По умолчанию он слушает порт 8080.
В консоли увидите следующий вывод.
А браузер вас встретить страничкой Welcome.
Установка закончена, можно переходить к настройке. Только перед этим еще один маленький нюанс. Чтобы запустить monitoror в фоне, добавьте к запуску бинарника символ &.
# ./monitoror &
Настройка Monitoror
В браузере вам будет показан тестовый конфиг, который вы можете применить. В качестве примера предлагается настроить мониторинг локального порта 8080 и количество звёздочек в публичном репозитории проекта на Github. Вот пример этого конфига:
{ "version": "2.0", "columns": 2, "tiles": [ { "type": "PORT", "label": "Welcome config example", "params": { "hostname": "127.0.0.1", "port": 8080 } }, { "type": "HTTP-RAW", "label": "Monitoror stars", "params": { "url": "https://github.com/monitoror/monitoror", "regex": "(\\d+) users starred" } } ] }
Используется формат json, так что готовьтесь к тому, что он попьет вашей кровушки, если вам не часто приходится работать с этим форматом. Без привычки не получается сходу без ошибок писать конфиги. Но это дело поправимое. Давайте применим этот конфиг. Для этого создаем файл config.json и кладём его в ту же директорию, что и бинарник, который запустили. В данном конфиге будут настройки веб интерфейса. А есть еще настройки самого сервера. Он хранятся в файле .env. Именно так, env с точкой в начале. Его тоже надо создать в директории с бинарником. Добавим в него только один параметр, который будет указывать на конфиг веб интерфейса.
MO_CONFIG="./config.json"
Теперь остановите работу бинарника в конcоли, нажав ctrl + c и запустите снова. Увидите такую картину.
Ровно 2 плитки по числу настроенных проверок. Все возможные проверки описаны в документации - https://monitoror.com/documentation/#monitorables. Перечислю основные:
- Доступность хоста с помощью ping.
- Наличие открытого порта TCP.
- Коды ответа веб сервера.
- Анализ содержимого сайта.
- Интеграция с некоторыми сервисами: Azure Devops, Github, Gitlab, Jenkins, Pingdom, Travis CI.
Покажу на примере, как настроить мониторинг сайта. Будем его пинговать, проверять открытый 443-й порт и код ответа. Для примера возьмём yandex.ru. Рисуем конфиг.
{ "version": "2.0", "columns": 2, "tiles": [ { "type": "PORT", "label": "HTTPS PORT yandex.ru", "params": { "hostname": "yandex.ru", "port": 443 } }, { "type": "PING", "label": "PING yandex.ru", "params": { "hostname": "yandex.ru" } }, { "type": "HTTP-STATUS", "label": "HTTP STATUS yandex.ru", "params": { "url": "https://yandex.ru", "statusCodeMax": 201 } } ] }
После сохранения новый конфиг применится автоматически в течении 2-3 секунд. Так что ничего делать не надо. Смотрим дашборд.
Все три плитки зелёные, потому что прошли все проверки. Код ответа 200, что меньше 201, на пинг ответ есть и порт доступен. Если какая-то проверка не пройдет, плитка станет красной. примерно так:
Вот таким простым конфигом вы можете настроить мониторинг различных сайтов и сервисов. При этом всё достаточно просто автоматизировать генерацией готового конфига. Мониторинг умеет парсить содержимое сайта с помощью регулярных выражений и выводить найденные значения. Делается это с помощью проверок типа HTTP-RAW.
Работа с API с помощью Monitoror
Мониторинг сайтов не сложно организовать, так как есть куча мониторингов по этой теме или готовых сервисов. Меня Monitoror больше всего заинтересовал не этим. Мне понравилось, как просто и быстро можно вывести текстовые данные из каких-то API. Покажу это на примере своих группы и чата в телеграм:
- https://t.me/srv_admin
- https://t.me/srv_admins
Я выведу количество подписчиков на дашборд Monitoror. Как работать с api телеграм можно подсмотреть в моей статье по данной теме - Мониторинг числа подписчиков канала telegram в Zabbix. Добавляем в конфиг 2 новые проверки:
{ "version": "2.0", "columns": 3, "tiles": [ { "type": "PORT", "label": "HTTPS PORT yandex.ru", "params": { "hostname": "yandex.ru", "port": 443 } }, { "type": "PING", "label": "PING yandex.ru", "params": { "hostname": "yandex.ru" } }, { "type": "HTTP-STATUS", "label": "HTTP STATUS yandex.ru", "params": { "url": "https://yandex.ru", "statusCodeMax": 201 } }, { "type": "HTTP-FORMATTED", "label": "TG GROUP @srv_admins", "params": { "url": "https://api.telegram.org/bot653825507:AABala11hmPnC234r3xTrkjJ6Hc/getChatMembersCount?chat_id=-1001070061209", "format": "JSON", "key": ".result" } }, { "type": "HTTP-FORMATTED", "label": "TG CHANNEL @srv_admin", "params": { "url": "https://api.telegram.org/bot653825507:AABa11hmPnC3xfgerw34TrkjRvJ6Hc/getChatMembersCount?chat_id=@srv_admin", "format": "JSON", "key": ".result" } } ] }
Смотрим, что получилось.
Вот так просто и быстро я вывел количество подписчиков в своих ресурсах. Для этого я использовал метод HTTP-FORMATTED. Сформировал строку запроса к API телеграм с использованием токена бота. Далее указал, что это формат JSON и сделал выборку по ключу result. Формат ключа аналогичен формату утилиты jq, которую удобно использовать для форматирования JSON. Покажу на примере.
# curl https://api.telegram.org/bot653825507:bot653825507:AABala56hmPnC234r3XTrkjJ6Hc/getChatMembersCount?chat_id=-1001070061209 {"ok":true,"result":3241}
А теперь добавим фильтр jq:
# curl https://api.telegram.org/bot653825507:bot653825507:AABala56hmPnC234r3XTrkjJ6Hc/getChatMembersCount?chat_id=-1001070061209 | jq .result 3241
Получаем значение из ключа result - 3241, что и есть число подписчиков. Аналогично можно добавлять любые значения через api на дашборд.
Заключение
Я решил познакомить вас с мониторингом Monitoror, потому что мне показалось, его может освоить и далёкий от непосредственно IT человек. То есть он может быть полезен какому-нибудь маркетологу, который вытаскивает цифры из различных систем статистики или рекламы. Полезно научиться самому настраивать себе дашборды с нужными цифрами.
Так же благодаря своему плиточному интерфейсу Monitoror можно использовать где-то на публичных экранах для вывода какой-то информации. Не нужно для этого городить отдельную систему. Поставил, добавил нужные метрики и запустил.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.