Хочу познакомить вас с интересным проектом, у которого вряд ли есть какое-то промышленное применение. Это скорее просто прикол или интересная фишка. Речь пойдёт о проекте Sampler, который условно можно назвать консольным дашбордом простой системы мониторинга. Работает всё исключительно в консоли, внешний вид которой вы оформляете с помощью виджетов.
Sampler представляет из себя один бинарник, к которому нужно подготовить конфигурационный файл в формате yaml. Настраивается всё очень просто и быстро. Описание виджетов есть в репозитории. Вот пример виджета для мониторинга за временем отклика нескольких сайтов:
runcharts: - title: Search engine response time rate-ms: 500 scale: 2 legend: enabled: true details: false items: - label: GOOGLE sample: curl -o /dev/null -s -w '%{time_total}' https://www.google.com - label: YAHOO sample: curl -o /dev/null -s -w '%{time_total}' https://search.yahoo.com - label: BING sample: curl -o /dev/null -s -w '%{time_total}' https://www.bing.com
Виджет будет рисовать 3 графика с временем отклика трёх указанных сайтов. Виджетов много: различные диаграммы, текстовые значения, текст в формате ASCII. На картинке во вложении пример заполненного дашборда.
У меня на канале было много разных заметок на тему консольных утилит. Помню про календарь рассказывал, кто-то ссылку на сервисы погоды давал, курсы валют. Всё это можно вывести на Sampler. Пример консольного прогноза погоды:
# curl wttr.in
В Sampler есть простенькие триггеры, которые сработают при выходе за заданные значения метрики. Он может вывести что-то на экран, или воспроизвести звук. С помощью SSH он умеет ходить на удалённые хосты и забирать оттуда какие-то метрики. Пример вывода top с удалённого хоста:
variables: sshconnection: ssh -i ~/.ssh/id_rsa.pub [email protected]textboxes: - title: SSH pty: true init: $sshconnection sample: top
Можно ходить в mysql базы и выполнять какой-то запрос:
variables: mysql_connection: mysql -u root -s --database mysql --skip-column-namessparklines: - title: MySQL (random number example) pty: true init: $mysql_connection sample: select rand();
Я допускаю, что кому-то может зайти эта тема как простой мониторинг. Настроить его реально просто и быстро. Буквально сходу по примерам из документации. У меня с первого раза всё получилось и заработало.
Мне лично больше всего понравилась идея где-то в IT отделе повесить такой дашборд на стену. Выглядит необычно и атмосферно. Захотелось домой себе вывести такой с полезной информацией типа той же погоды, температуры в доме, влажности и т.д. Может это и состоится. Изначально планировал на Grafana собрать.
Исходники - https://github.com/sqshq/sampler
#мониторинг