TGViewer
ServerAdmin.ru ServerAdmin.ru @srv_admin · 32.6K subscribers
Post #5836 7.24K
Есть старый и необычный по сегодняшним меркам мониторинг Monit. Я более 5-ти лет назад делал про него заметку. Периодически просматриваю старые публикации в поисках чего-то интересного и актуального по сей день. Как оказалось, этот мониторинг вполне себе живой, обновляется. Летом вышел очередной релиз 6.0.

Основная его фишка - локальный мониторинг одиночного сервера и выполнение каких-то действий в зависимости от результата проверки. Не стоит его примерять на какую-то инфраструктуру и сравнивать с другими мониторингами. Например, 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 alert
if 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 😩

#мониторинг
  • 👍 77
  • 👎 1
More from @srv_admin
  1. Sep 22, 2026Недавно случайно заметил любопытную информацию на тему Proxmox VE и новой функциональности…
  2. Sep 22, 2026✔️ Сети для всех — сообщество для тех, кто развивается в сетевом и системном администриров…
  3. Sep 22, 2026Я ранее уже рассказывал, что приобрёл себе домой полноценную серверную платформу на базе S…
  4. Sep 21, 2026Для тех, кто так же как и я упустил момент окончания поддержки релиза Debian 11 Bullseye,…
  5. Sep 21, 2026Для сайта, сервиса или следующего проекта 💯 У каждого проекта свои требования к инфрастру…
  6. Sep 21, 2026Я написал обзорную статью на российскую программу и веб сервис одновременно для хранения и…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →