Мониторинг. · 6 min read · Jan 24, 2026
Мониторинг сервера с помощью Munin и Monit на Ubuntu 14.04 LTS - Страница 2
6 Установка и настройка Monit
Чтобы установить Monit, мы делаем следующее:
apt-get install monitТеперь мы должны отредактировать /etc/monit/monitrc. По умолчанию в /etc/monit/monitrc много примеров, и вы можете найти больше примеров конфигурации на http://mmonit.com/monit/documentation/. Однако в моем случае я хочу мониторить proftpd, sshd, mysql, apache и postfix, я хочу включить веб-интерфейс Monit на порту 2812, я хочу https веб-интерфейс, я хочу войти в веб-интерфейс с именем пользователя admin и паролем howtoforge, и я хочу, чтобы Monit отправлял уведомления по электронной почте на root@localhost, так что мой файл выглядит так (я добавил примеры для других демонов в конфигурацию, чтобы вы могли настроить файл под свои нужды):
cp /etc/monit/monitrc /etc/monit/monitrc_orig
cat /dev/null > /etc/monit/monitrc
nano /etc/monit/monitrcset daemon 60
set logfile syslog facility log_daemon
set mailserver localhost
set mail-format { from: [email protected] }
set alert root@localhost
set httpd port 2812 and
SSL ENABLE
PEMFILE /var/certs/monit.pem
allow admin:howtoforge
check process sshd with pidfile /var/run/sshd.pid
start program "/usr/sbin/service ssh start"
stop program "/usr/sbin/service ssh stop"
if failed port 22 protocol ssh then restart
if 5 restarts within 5 cycles then timeout
check process apache with pidfile /var/run/apache2/apache2.pid
group www
start program = "/usr/sbin/service apache2 start"
stop program = "/usr/sbin/service apache2 stop"
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
#check process mysql with pidfile /var/run/mysqld/mysqld.pid
# group database
# start program = "/usr/sbin/service mysql start"
# stop program = "/usr/sbin/service mysql stop"
# if failed host 127.0.0.1 port 3306 then restart
# if 5 restarts within 5 cycles then timeout
#check process proftpd with pidfile /var/run/proftpd.pid
# start program = "/usr/sbin/service proftpd start"
# stop program = "/usr/sbin/service proftpd stop"
# if failed port 21 protocol ftp then restart
# if 5 restarts within 5 cycles then timeout
#
#check process postfix with pidfile /var/spool/postfix/pid/master.pid
# group mail
# start program = "/usr/sbin/service postfix start"
# stop program = "/usr/sbin/service postfix stop"
# if failed port 25 protocol smtp then restart
# if 5 restarts within 5 cycles then timeout
#
#check process nginx with pidfile /var/run/nginx.pid
# start program = "/usr/sbin/service nginx start"
# stop program = "/usr/sbin/service nginx stop"
# if failed host 127.0.0.1 port 80 then restart
#
#check process memcached with pidfile /var/run/memcached.pid
# start program = "/usr/sbin/service memcached start"
# stop program = "/usr/sbin/service memcached stop"
# if failed host 127.0.0.1 port 11211 then restart
#
#check process pureftpd with pidfile /var/run/pure-ftpd/pure-ftpd.pid
# start program = "/usr/sbin/service pure-ftpd-mysql start"
# stop program = "/usr/sbin/service pure-ftpd-mysql stop"
# if failed port 21 protocol ftp then restart
# if 5 restarts within 5 cycles then timeout
#
#check process named with pidfile /var/run/named/named.pid
# start program = "/usr/sbin/service bind9 start"
# stop program = "/usr/sbin/service bind9 stop"
# if failed host 127.0.0.1 port 53 type tcp protocol dns then restart
# if failed host 127.0.0.1 port 53 type udp protocol dns then restart
# if 5 restarts within 5 cycles then timeout
#
#check process ntpd with pidfile /var/run/ntpd.pid
# start program = "/usr/sbin/service ntp start"
# stop program = "/usr/sbin/service ntp stop"
# if failed host 127.0.0.1 port 123 type udp then restart
# if 5 restarts within 5 cycles then timeout
#
#check process mailman with pidfile /var/run/mailman/mailman.pid
# group mail
# start program = "/usr/sbin/service mailman start"
# stop program = "/usr/sbin/service mailman stop"
#
#check process amavisd with pidfile /var/run/amavis/amavisd.pid
# group mail
# start program = "/usr/sbin/service amavis start"
# stop program = "/usr/sbin/service amavis stop"
# if failed port 10024 protocol smtp then restart
# if 5 restarts within 5 cycles then timeout
#
#check process courier-imap with pidfile /var/run/courier/imapd.pid
# group mail
# start program = "/usr/sbin/service courier-imap start"
# stop program = "/usr/sbin/service courier-imap stop"
# if failed host localhost port 143 type tcp protocol imap then restart
# if 5 restarts within 5 cycles then timeout
#
#check process courier-imap-ssl with pidfile /var/run/courier/imapd-ssl.pid
# group mail
# start program = "/usr/sbin/service courier-imap-ssl start"
# stop program = "/usr/sbin/service courier-imap-ssl stop"
# if failed host localhost port 993 type tcpssl sslauto protocol imap then restart
# if 5 restarts within 5 cycles then timeout
#
#check process courier-pop3 with pidfile /var/run/courier/pop3d.pid
# group mail
# start program = "/usr/sbin/service courier-pop start"
# stop program = "/usr/sbin/service courier-pop stop"
# if failed host localhost port 110 type tcp protocol pop then restart
# if 5 restarts within 5 cycles then timeout
#
#check process courier-pop3-ssl with pidfile /var/run/courier/pop3d-ssl.pid
# group mail
# start program = "/usr/sbin/service courier-pop-ssl start"
# stop program = "/usr/sbin/service courier-pop-ssl stop"
# if failed host localhost port 995 type tcpssl sslauto protocol pop then restart
# if 5 restarts within 5 cycles then timeout
#
#check process dovecot with pidfile /var/run/dovecot/master.pid
# group mail
# start program = "/usr/sbin/service dovecot start"
# stop program = "/usr/sbin/service dovecot stop"
# if failed host localhost port 143 type tcp protocol imap then restart
# if 5 restarts within 5 cycles then timeoutКонфигурационный файл довольно самодостаточен; если вы не уверены в каком-либо параметре, взгляните на документацию 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 и записать в него какую-то случайную строку:
mkdir /var/www/html/monit
echo "hello" > /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 = 2048
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 1024 >> /var/certs/monit.pemopenssl x509 -subject -dates -fingerprint -noout -in /var/certs/monit.pemchmod 600 /var/certs/monit.pemНаконец, мы можем запустить Monit:
service monit startТеперь укажите в браузере https://www.example.com:2812/ (убедитесь, что порт 2812 не заблокирован вашим файрволом), войдите с именем admin и паролем howtoforge, и вы должны увидеть веб-интерфейс Monit. Он должен выглядеть так:

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

(Страница статуса SSHd)
В зависимости от вашей конфигурации в /etc/monit/monitrc monit будет перезапускать ваши службы, если они выйдут из строя, и отправлять уведомления по электронной почте, если идентификаторы процессов служб изменятся и т.д.
Чтобы получить статус Monit в оболочке, выполните команду “monit status”:
monit statusКоманда покажет статус всех мониторируемых служб.

7 Настройка Monit в ISPConfig
Панель управления сервером ISPConfig может отображать данные Monit в своем модуле Монитор. Чтобы включить эту функцию в ISPConfig, войдите в ISPConfig как пользователь-администратор (admin), перейдите в Система > Конфигурация сервера, заполните URL, имя пользователя и пароль для Monit, как показано ниже.

8 Ссылки
- munin: http://munin-monitoring.org/
- monit: http://mmonit.com/monit/
Get new posts in your inbox
No spam. Unsubscribe anytime.