Мониторинг. · 4 min read · Oct 17, 2025
Мониторинг сервера с помощью Munin и Monit на CentOS 7 - Страница 2
5 Установка и настройка Monit
Далее мы установим Monit:
yum install monitЗатем создадим системные ссылки для автозагрузки monit:
systemctl enable monit
systemctl start monitФайл конфигурации по умолчанию для Monit находится по адресу /etc/monitrc, где вы можете найти некоторые примеры конфигурации (вы можете найти больше примеров конфигурации на http://mmonit.com/wiki/Monit/ConfigurationExamples), которые все закомментированы, но он указывает monit также искать в каталоге /etc/monit.d файлы конфигурации.
В этом случае я хочу мониторить:
- proftpd
- sshd
- mysql
- apache
- postfix
Кроме того, я настрою следующие параметры для Monit:
- Включить веб-интерфейс Monit на порту 2812.
- Использовать HTTPS для веб-интерфейса вместо HTTP.
- Настроить защищенный паролем вход для веб-интерфейса.
- Monit должен отправлять уведомления по электронной почте на root@localhost
Сначала я настрою параметры аутентификации. Откройте файл /etc/monit.d/monitrc
nano /etc/monit.d/monitrcИ прокрутите вниз, пока не найдете этот раздел:
set httpd port 2812 and
use address localhost # только принимать соединения с localhost
allow localhost # разрешить localhost подключаться к серверу и
allow admin:monit # требовать пользователя 'admin' с паролем 'monit'
allow @monit # разрешить пользователям группы 'monit' подключаться (rw)
allow @users readonly # разрешить пользователям группы 'users' подключаться только для чтенияЗамените его на следующие настройки:
set httpd port 2812 and
use address 0.0.0.0
SSL ENABLE
PEMFILE /var/certs/monit.pem
allow admin:testСлово “test” является паролем, пожалуйста, замените его на надежный пароль, и вы также можете захотеть изменить имя пользователя “admin” на имя, которое нельзя легко угадать.
Теперь мы добавим конфигурацию для мониторируемых служб. Вместо изменения /etc/monitrc, мы создадим новый файл конфигурации /etc/monit.d/monitrc.
Мой файл выглядит так:
nano /etc/monit.d/monitrcset logfile syslog facility log_daemon
# Отправлять электронные письма через этот почтовый сервер
set mailserver localhost
# Установить адрес отправителя для уведомлений по электронной почте
set mail-format { from: [email protected] }
# Отправлять уведомления на этот адрес
set alert root@localhost
# Мониторинг службы Proftpd
check process proftpd with pidfile /var/run/proftpd/proftpd.pid
start program = "/usr/bin/systemctl start proftpd"
stop program = "/usr/bin/systemctl stop proftpd"
if failed port 21 protocol ftp then restart
if 5 restarts within 5 cycles then timeout
# Мониторинг службы SSH
check process sshd with pidfile /var/run/sshd.pid
start program "/usr/bin/systemctl start sshd"
stop program "/usr/bin/systemctl stop sshd"
if failed port 22 protocol ssh then restart
if 5 restarts within 5 cycles then timeout
# Мониторинг MySQL
check process mysql with pidfile /var/run/mysqld/mysqld.pid
group database
start program = "/usr/bin/systemctl start mysqld"
stop program = "/usr/bin/systemctl stop mysqld"
if failed host 127.0.0.1 port 3306 then restart
if 5 restarts within 5 cycles then timeout
# Мониторинг веб-сервера apache
check process apache with pidfile /var/run/httpd/httpd.pid
group www
start program = "/usr/bin/systemctl start httpd"
stop program = "/usr/bin/systemctl stop httpd"
if failed host localhost port 80 protocol http
and request "/monit_token" then restart
if cpu is greater than 60% for 2 cycles then alert
if cpu > 80% for 5 cycles then restart
if totalmem > 500 MB for 5 cycles then restart
if children > 250 then restart
if loadavg(5min) greater than 10 for 8 cycles then stop
if 3 restarts within 5 cycles then timeout
# Мониторинг почтового сервера postfix
check process postfix with pidfile /var/spool/postfix/pid/master.pid
group mail
start program = "/usr/bin/systemctl start postfix"
stop program = "/usr/bin/systemctl stop postfix"
if failed port 25 protocol smtp then restart
if 5 restarts within 5 cycles then timeout(Пожалуйста, убедитесь, что вы проверяете только те процессы, которые действительно существуют на вашем сервере - в противном случае monit не запустится. То есть, если вы скажете monit проверять Postfix, но Postfix не установлен на системе, monit не запустится.)
Файл конфигурации довольно самодостаточен; если вы не уверены в каком-либо параметре, посмотрите документацию monit: http://mmonit.com/monit/documentation/monit.html
В части конфигурации apache Monit вы найдете это:
if failed host localhost port 80 protocol http
and request "/monit_token" then restartчто означает, что monit пытается подключиться к localhost на порту 80 и пытается получить доступ к файлу /monit_token, который находится по адресу /var/www/html/monit_token, потому что корень документа нашего веб-сайта - /var/www/html. Если Monit не удается, это означает, что Apache не работает, и Monit собирается перезапустить его. Теперь мы должны создать файл /var/www/html/monit_token и записать в него какую-то случайную строку:
touch /var/www/html/monit_tokenДалее мы создаем pem сертификат (/var/certs/monit.pem), который нам нужен для SSL-зашифрованного веб-интерфейса Monit:
mkdir /var/certs
cd /var/certsНам нужен файл конфигурации OpenSSL для создания нашего сертификата. Он может выглядеть так:
nano /var/certs/monit.cnf# создать RSA сертификаты - Сервер
RANDFILE = ./openssl.rnd
[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
[ req_dn ]
countryName = Country Name (2 letter code)
countryName_default = MO
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Monitoria
localityName = Locality Name (eg, city)
localityName_default = Monittown
organizationName = Organization Name (eg, company)
organizationName_default = Monit Inc.
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = Dept. of Monitoring Technologies
commonName = Common Name (FQDN of your server)
commonName_default = server.monit.mo
emailAddress = Email Address
emailAddress_default = [email protected]
[ cert_type ]
nsCertType = serverТеперь мы создаем сертификат следующим образом:
openssl req -new -x509 -days 365 -nodes -config ./monit.cnf -out /var/certs/monit.pem -keyout /var/certs/monit.pemopenssl gendh 512 >> /var/certs/monit.pemopenssl x509 -subject -dates -fingerprint -noout -in /var/certs/monit.pemchmod 700 /var/certs/monit.pemНаконец, мы можем запустить monit:
systemctl restart monitТеперь укажите в браузере https://www.example.com:2812/ (убедитесь, что порт 2812 не заблокирован вашим файрволом), войдите с помощью admin и test, и вы должны увидеть веб-интерфейс Monit. Он должен выглядеть так:

(Главный экран)

(Страница состояния Apache)
В зависимости от вашей конфигурации в /etc/monit.d/monitrc Monit будет перезапускать ваши службы, если они выйдут из строя, и отправлять уведомления по электронной почте, если идентификаторы процессов служб изменятся и т.д.
6 Ссылки
- munin: http://munin.projects.linpro.no
- monit: http://mmonit.com/monit
- CentOS: http://www.centos.org
Get new posts in your inbox
No spam. Unsubscribe anytime.