Основная его фишка - локальный мониторинг одиночного сервера и выполнение каких-то действий в зависимости от результата проверки. Не стоит его примерять на какую-то инфраструктуру и сравнивать с другими мониторингами. Например, Monit используется в популярном программном шлюзе OPNSense в качестве локального мониторинга служб.
Приведу несколько примеров по использованию Monit. Сразу скажу, что его можно заменить на другие инструменты, потому что ничего уникального он не делает. Но его удобство в том, что настройка проста и унифицирована для разных случаев. Конфигурация состоит из обычных текстовых файлов, легко хранится, обновляется, распространяется.
Показывать буду в виде готового примера конфигурации, чтобы можно было оценить синтаксис. Monit легко установить:
# apt install monitПосле этого можно сразу настраивать проверки, добавляя конфигурации в
/etc/monit/conf.d.🟢 Мониторинг процессов. Как простой по наличию запущенной службы, так и более сложный с контролем отклика или каких-то дополнительных условий.
check process openvpn matching "openvpn"start program = "/usr/bin/systemctl start openvpn@server"stop program = "/usr/bin/systemctl stop openvpn@server" if failed host localhost port 1194 then restartЭто проверка наличия процесса и отклика по порту 1194. Для процессов можно более сложные проверки добавлять, например, по занимаемой памяти, или скорости записи на диск:
if total memory > 1000 MB for 3 cycles then alertif write activity > 10 MB/s then alertС некоторыми приложениями есть интеграция. Можно, к примеру, проверять аутентификацию в MySQL:
check process mysql with pidfile /run/mysqld/mysqld.pid start program = "/usr/bin/systemctl start mysqld" stop program = "/usr/bin/systemctl stop mysqld" if failed port 3306 protocol mysql username "foo" password "bar" then alert🟢 Доступность хоста. Покажу тоже на примере ovpn сервера. Допустим, у вас есть VPS в виде ovpn сервера, к которой подключаются клиенты. Каждый клиент к своему туннелю. Если какой-то клиент недоступен, перезапустим его тоннель.
check host ovpn-home with address 10.10.2.2 if failed ping4 count 2 with timeout 3 seconds for 3 cycles then exec "/usr/bin/systemctl restart openvpn@server-home"🟢 Проверка файлов. Например, по размеру:
check file bigfile with path /tmp/bigfile if size > 1 GB then exec "/bin/rm /tmp/bigfile"Можно проверять атрибуты:
check file shadow with path /etc/shadow if failed uid "root" then alert if failed gid "shadow" then alert if failed permission 640 then alertИли просто наличие файла:
check file x with path /some/path/x if exist then alertПроверка содержимого:
check file auth.log with path /var/log/auth.log if content = "Accepted password" then alert🟢 Проверка директорий. Тут всё примерно то же самое, что и с файлами. За исключением того, что Monit не умеет следить за размером директорий, что, в принципе, логично. Это может занимать очень много времени. Если нужна такая логика, то её лучше выносить в скрипты.
🟢 Проверка порта. Доступность удалённого порта:
check host SSH-Remote with address 1.1.1.1 if failed port 22 type tcp for 2 cycles then alert🟢 Мониторинг сетевых интерфейсов. Вот это интересная штука. С её помощью можно следить за тем же ovpn:
check network tun0 with interface tun0 if link down then exec "/usr/bin/systemctl restart openvpn@client"Можно контролировать загрузку:
check network eth0 with interface eth0 if upload > 10 MB/s then alert if total downloaded > 10 GB in last 2 hours then alert if total downloaded > 50 GB in last day then alertВсе эти проверки с примерами описаны в документации.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin: 📱 Telegram | 🌐 Сайт | 📲 MAX 😩
#мониторинг



