Говоря о системах мониторинга, многие системные администраторы сразу представляют себе мощные централизованные системы наподобие Zabbix, внедрение которых требует времени и ресурсов. Но это неверное представление, существуют простые и легкие приложения, позволяющие собирать и визуализировать статистику для одиночного узла. Да, их возможности гораздо скромнее, но тем не менее даже простой мониторинг - это лучше чем никакого. Одна из таких систем - Monitorix - простое и легкое решение, которое поможет вам быть в курсе происходящего на вашем сервере.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Сразу предупредим - не стоит ждать это этой системы многого, а ее внешний вид способен отпугнуть молодое поколение администраторов. Для избалованных современным вебом, с его интерактивностью, Monitorix может показаться чем-то древним и архаичным, но любая медаль имеет две стороны. Современные технологии - это хорошо, но экономное использование ресурсов не входит в число их сильных сторон.
В основе Monitorix лежат совершенно противоположные подходы, исходящие из того, что мониторинг должен быть максимально легким и не отнимать ресурсов контролируемого узла. Это достигается тем, что все графики - это обычные изображения, обновляемые с некоторым промежутком времени, а данные пишутся в RRD (Round-robin Database, кольцевая база данных) размер которой остается всегда неизменной. Благодаря этому Monitorix может успешно использоваться даже на очень слабых компьютерах, включая VPS начального уровня и одноплатные ПК, наподобие Raspberry Pi и их аналогов.
Monitorix представлен в репозиториях начиная с Debian 10 и Ubuntu 20.04 LTS, для более ранних систем можно воспользоваться репозиторием разработчика. Также вы можете подключить данный репозиторий, если хотите использовать самую последнюю версию пакета, так как он достаточно активно развивается, и версия в штатных репозиториях может не содержать некоторых модулей.
Все представленные ниже команды следует выполнять с правами root или через sudo.
Начнем с подключения репозитория разработчика, если вы хотите установить версию из репозиториев системы этот шаг можно пропустить. Прежде всего установим необходимые пакеты:
apt install apt-transport-https
Затем подключим репозиторий:
echo deb https://apt.izzysoft.de/ubuntu generic universe > /etc/apt/sources.list.d/monitorix.list
Скачаем и установим ключ для него:
wget -qO - https://apt.izzysoft.de/izzysoft.asc | apt-key add -
Теперь обновим список пакетов и установим систему мониторинга:
apt update
apt install monitorix
Готово, система установлена и работает! Действительно быстро и просто.
Monitorix имеет собственный веб-сервер и для перехода в интерфейс нужно просто набрать в любом браузере:
http://server:8080/monitorix
Где server - это FQDN-имя или IP-адрес сервера. По умолчанию веб-сервер слушает все интерфейсы, включая localhost. При входе предлагается выбрать период отображения: час, неделю, месяц, год.
Если вы хотите получить период поменьше, то это тоже несложно сделать, просто замените в адресной строке 1day на 1hour, например:
http://192.168.111.2:8080/monitorix-cgi/monitorix.cgi?mode=localhost&graph=all&when=1hour&color=black
Как видим - система работает и даже начала собирать и отображать некоторые данные, это хорошо, но без настройки оставлять ее не следует.
Все настройки системы мониторинга находятся в файле /etc/monitorix/monitorix.conf и дополнительных файлах расположенных в директории /etc/monitorix/conf.d, при этом расположенные в дополнительных файлах настройки перекрывают опции из основного файла.
Мы категорически не советуем вносить изменения в основной конфигурационный файл и вот почему: при выходе новой версии могут быть добавлены новые модули, и вы столкнетесь с необходимостью либо заменить текущий конфигурационный файл на файл от поставщика и заново настраивать продукт, либо оставить собственный файл, оставшись без новых модулей. Ну или руками объединять оба файла.
Поэтому создадим новый файл настроек в /etc/monitorix/conf.d и будем копировать туда нужные части из основного файла, причем копировать можно не все опции, а только необходимые, не забывая про открывающие и закрывающие теги секций. В нашем случае это будет 01_monitorix.conf.
nano /etc/monitorix/conf.d/01-monitorix.conf
Эта команда откроет на редактирование файл в редакторе nano, а при его отсутствии - предварительно создаст, если вам более по душе редактор Midnight Commander, то замените в команде nano на mcedit.
Monitorix хорошо документирован и вы всегда можете обратиться к разделу документации на официальном сайте, потому как наша статья не претендует на освещение всех возможностей продукта, а только расскажет о общих принципах настройки.
Начнем с глобальных параметров, они не являются обязательными, но добавляют удобства. Добавим в наш файл следующие опции:
title = Monitoring Ubuntu server
hostname = Ubuntu-GW-0
theme_color = white
Первая строка задает описание, которое будет показано в наименовании вкладки браузера, вторая - имя хоста в системе мониторинга, если оно не указано, то будет показан IP-адрес. Третья строка - тема, доступны два варианта, черная - black и белая - white. Сохраним наш файл и перезапустим систему мониторинга:
systemctl restart monitorix
После чего обновим страницу в браузере:
Изменения - налицо, таким образом мы можем скопировать в наш файл любой параметр из общего конфигурационного файла и переопределить его значение.
Следующая важная секция - это настройки веб-сервера, приведем данный блок целиком:
<httpd_builtin>
enabled = y
host =
port = 8080
user = nobody
group = nobody
log_file = /var/log/monitorix-httpd
hosts_deny =
hosts_allow =
autocheck_responsiveness = y
<auth>
enabled = n
hosts_deny = all
msg = Monitorix: Restricted access
htpasswd = /var/lib/monitorix/htpasswd
</auth>
</httpd_builtin>
По умолчанию встроенный веб-сервер включен и слушает на всех интерфейсах, это значит, что мониторинг может быть доступен с любого адреса, что нежелательно, поэтому сразу ограничим доступный адрес в опции host, там следует указывать только внутренние адреса, адреса VPN-интерфейсов или localhost, в этом случае доступ можно будет получить через SSH-туннель. Адрес привязки можно указать только один.
Информация! Более подробно про то, что такое SSH-туннели и как с ними работать вы можете прочитать в нашей статье: SSH-туннели на службе системного администратора
Добавим это значение в опцию host, чтобы не копировать весь блок, вы можете сделать так:
<httpd_builtin>
host = 192.168.222.1
</httpd_builtin>
Также вы можете изменить порт работы веб-сервера, расположение логов и указать узлы, которые могут иметь доступ, либо доступ которым запрещен. Для этого предусмотрены опции hosts_deny и hosts_allow, в них можно использовать адреса, разделенные запятыми, либо специальное слово all, обозначающее любые узлы.
При проверке доступа действует следующая логика: сначала проверяется список разрешенных узлов, если адрес там есть - ему предоставляется доступ, затем список запрещенных узлов, при совпадении адресов доступ блокируется. Адресам, не попавшим ни в один список доступ разрешен.
Таким образом, если мы хотим ограничить доступ к мониторингу только компьютерам администраторов, то добавим такую настройку:
hosts_deny = all
hosts_allow = 192.168.222.101, 192.168.222.145
В этом случае доступ будут иметь только явно указанные узлы, всем остальным подключение будет запрещено.
Для дополнительной безопасности можно включить дополнительную аутентификацию. Однако следует учитывать, что используемая Basic authentication не является безопасной, так как передает учетные данные в открытом виде. Поэтому рассматривать ее как средство защиты для доступа к мониторингу со стороны интернета не следует.
Для ее использования нам потребуется установить дополнительный пакет утилит для веб-серверов:
apt install apache2-utils
Затем с помощью утилиты htpasswd создадим данные для аутентификации, так как файл с учетными данными не существует, то первый запуск выполним с дополнительным ключом -с, который создает файл или перезаписывает существующий.
htpasswd -c -d /var/lib/monitorix/htpasswd ivanov
Ключ -d задает нужный способ шифрования, затем указывается файл для хранения учетных данных и имя пользователя. Все последующие добавления производятся командой:
htpasswd -d /var/lib/monitorix/htpasswd petrov
Обратите внимание, что из-за используемого способа шифрования учитываются только первые восемь символов вводимого пароля.
Для включения аутентификации полностью скопируйте в секцию <httpd_builtin> дополнительную секцию <auth>:
<auth>
enabled = y
hosts_deny = all
msg = Monitorix: Restricted access
htpasswd = /var/lib/monitorix/htpasswd
</auth>
Monitorix имеет модульную структуру, что позволяет добиться нужной гибкости сохраняя нетребовательность к ресурсам, если модуль не включен, то он не загружается, не собирает данные, не тратит ресурсы. За управление модулями отвечает секция <graph_enable>, ее нет смысла копировать целиком, достаточно просто указать те модули, состояние которых вы хотите изменить (включить или выключить), например:
<graph_enable>
process = y
serv = n
</graph_enable>
Часть модулей будет работать сразу, часть требует дополнительных настроек. Возьмем, к примеру, модуль NET, по умолчанию он выглядит так:
# NET graph
# -----------------------------------------------------------------------------
<net>
max = 10
list = eth0
<desc>
eth0 = FastEthernet LAN, 0, 10000000
</desc>
gateway = eth0
</net>
Вряд ли он отражает текущее положение дел, поэтому скопируем его в наш файл и приведем к надлежащему виду, с учетом реальных сетевых интерфейсов, например:
# NET graph
# -----------------------------------------------------------------------------
<net>
max = 10
list = ens33, ens37, wg0
<desc>
ens33 = Ethernet WAN, 0, 10000000
ens37 = Ethernet LAN, 0, 10000000
wg0 = WireGuard VPN, 0, 10000000
</desc>
gateway = ens37
</net>
В опции list перечисляем интерфейсы, которые мы хотим контролировать, а во вложенной секции <desc> задаем их описания, это не обязательно, но значительно улучшает восприятие информации.
Либо возьмем еще один модуль PROCESS, который позволяет контролировать целый ряд параметров выбранных процессов. По умолчанию там задан целый список процессов, половины которых у вас может и не быть, давайте добавим сюда свои. Прежде всего нужно определиться с именами процессов, для этого выполните команду:
ps -eo pid,comm,command
Нас интересует вторая колонка, именно в ней указаны наименования процессов, которые следует добавлять в конфигурационный файл.
В нашем случае мы хотим контролировать SSH, сервер 1С и WireGuard, поэтому скопируем и приведем секцию к следующему виду:
# PROCESS graph
# -----------------------------------------------------------------------------
<process>
<list>
0 = sshd, rphost, wg-crypt-wg0
</list>
<desc>
sshd = SSH
rphost = 1C Server
wg-crypt-wg0 = WireGuard
</desc>
rigid = 2, 0, 0, 0, 0, 0, 0, 0
limit = 100, 1000, 1000, 1000, 1000, 1000, 1000, 1000
</process>
Здесь тоже нет ничего сложного, в секции <list> перечисляем имена процессов, в секции <desc> - их описания, которые будут выводиться на графиках.
Подобным образом настраиваются любые модули, полный список значений и их варианты вы можете посмотреть в официальной документации. Набор модулей также следует подбирать исходя из реальных потребностей, так для физических серверов можно рекомендовать включение модулей, отвечающих за контроль оборудования, таких как LMSENS, DISK или NVME, в то время как в виртуальных средах смысл в них полностью отсутствует.
Поле действий тут самое обширное, модулей много, поэтому настраивайте свою систему мониторинга так, как нужно именно вам.
Еще одной важной возможностью является поддержка многими модулями сигналов тревоги - секций <alerts>, их использование может отличаться от модуля к модулю, но смысл один - при достижении некоторых пороговых значений в течении некоторого времени выполнить определенный скрипт. Рассмотрим на примере модуля LMSENS.
<alerts>
temp0 = 900, 80, /path/to/script1.sh, above
temp0 = 3600, 70-80, /path/to/script2.sh
fan0 = 3600, 800, /path/to/script3.sh, below
</alerts>
Записи данной секции состоят из четырех параметров: промежутка времени, порогового значения, выполняемого скрипта и четвертой, необязательной опции, которая может принимать значения above - выше или below - ниже. Разберем записи из примера. Первая из них контролирует датчик temp0 и если его значения превысят 80 градусов на протяжении 15 минут - будет выполнен скрипт script1.sh. Вторая запись вызовет срабатывание скрипта script2 .sh если температура в течении часа будет в пределах 70-80 градусов, а третья выполнит скрипт script3.sh если датчик fan0 в течении часа будет фиксировать скорость оборотов вентилятора ниже 800 об/мин.
Описывать различные модули можно еще долго, но общий принцип работы с Monitorix и принципы его тонкой настройки должны быть понятны уже сейчас. Документация проекта подробная и содержит множество примеров, поэтому никаких затруднений при настройке у вас возникнуть не должно.
В заключение остановимся на ряде опций, расположенных ниже заголовка:
# ========================================================================
# ====== Probably you don't need to touch anything below this line ======
# ========================================================================
В большинстве случаев это так, и вам там не нужно ничего трогать. Но если вы не чужды прекрасного и у вас есть собственный взгляд на то, как должен выглядеть Monitorix, то почему бы и нет?
Так секция <theme> задает основные настройки для темной и светлой тем, такие как цвета фона, графиков и надписей. Допустим, вам не нравится радикальный черный цвет фона, и вы хотите сменить его на что-то более спокойное, нет ничего проще:
<theme>
<black>
main_bg = 2e3436
</black>
</theme>
Это переопределит стандартные настройки и перезапустив Monitorix вы сразу увидите результат.
Поменять таким образом можно если не все, то многое, настроив отображение системы мониторинга исключительно по собственному вкусу. Секция <graph_size> задает размеры изображения графиков, так если у вас FHD или 2K монитор, то можете сделать их гораздо крупнее, единственный совет - соблюдайте уже установленные пропорции, иначе есть шанс сломать всю верстку страницы.
Ну и наконец <graph_title> и <graphs> содержат наименования модулей и графиков, а так как Linux и Monitorix полноценно поддерживают UTF-8, то никто не мешает вам выполнить перевод интерфейса на родной язык, заменив английские описания русскими.
В заключение хочется вспомнить одну старую поговорку, ведь если встречать по одежке, то можно подумать, что перед нами что-то достаточно древнее и ограниченное в своих возможностях. На самом деле Monitorix очень гибкая и в тоже время простая система со множеством возможностей, которая не стоит на месте, а постоянно развивается. Надеемся данный материал будет вам полезен и мониторинг станет вам ближе.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Последние комментарии