Home » Linux » Мониторинг Monitoror с плиточным Dashboard

Мониторинг Monitoror с плиточным Dashboard

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

Углубленный онлайн-курс по MikroTik

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

Введение

Меня зацепил этот мониторинг простотой настройки и легковесностью. Он состоит из одного бинарника и пары конфигов. При этом способен неплохо решать некоторые задачи, затрачивая минимум ресурсов и времени на настройку. Официальный сайт - https://monitoror.com. Там есть хорошая документация, которой достаточно для того, чтобы самому быстро разобраться и настроить мониторинг с помощью Monitoror.

Monitoror Dashboard

Интерфейс 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.

В консоли увидите следующий вывод.

Установка Monitoror

А браузер вас встретить страничкой Welcome.

Monitoror Web UI

Установка закончена, можно переходить к настройке. Только перед этим еще один маленький нюанс. Чтобы запустить 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 и запустите снова. Увидите такую картину.

Настройка Monitoror

Ровно 2 плитки по числу настроенных проверок. Все возможные проверки описаны в документации - https://monitoror.com/documentation/#monitorables. Перечислю основные:

  1. Доступность хоста с помощью ping.
  2. Наличие открытого порта TCP.
  3. Коды ответа веб сервера.
  4. Анализ содержимого сайта.
  5. Интеграция с некоторыми сервисами: 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 секунд. Так что ничего делать не надо. Смотрим дашборд.

Мониторинг сайта с помощью Monitoror

Все три плитки зелёные, потому что прошли все проверки. Код ответа 200, что меньше 201, на пинг ответ есть и порт доступен. Если какая-то проверка не пройдет, плитка станет красной. примерно так:

Monitoror fail check

Вот таким простым конфигом вы можете настроить мониторинг различных сайтов и сервисов. При этом всё достаточно просто автоматизировать генерацией готового конфига. Мониторинг умеет парсить содержимое сайта с помощью регулярных выражений и выводить найденные значения. Делается это с помощью проверок типа 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" 
            }
        }
    ]
}

Смотрим, что получилось.

Данные из API

Вот так просто и быстро я вывел количество подписчиков в своих ресурсах. Для этого я использовал метод 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 можно использовать где-то на публичных экранах для вывода какой-то информации. Не нужно для этого городить отдельную систему. Поставил, добавил нужные метрики и запустил.

Онлайн-курс по устройству компьютерных сетей.

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar