Мониторинг серверов · 4 min read · Oct 17, 2025
Мониторинг сервера с помощью munin и monit на Mandriva 2008.0 - Страница 2
4 Установка и настройка monit
monit, похоже, доступен только в определенных репозиториях Mandriva contrib_backports; я нашел его в репозитории carroll.cac.psu.edu, поэтому мы должны включить его сейчас:
urpmi.addmedia contrib_backports ftp://carroll.cac.psu.edu/pub/linux/distributions/mandrivalinux/official/2008.0/i586/media/contrib/backports with media_info/hdlist.czВы можете попробовать другие репозитории contrib_backports с помощью http://easyurpmi.zarb.org, но если они не содержат monit, вам нужно удалить выбранный вами репозиторий contrib_backports следующим образом…
urpmi.removemedia contrib_backports… и попробовать другой репозиторий contrib_backports.
После этого мы устанавливаем monit:
urpmi monitФайл конфигурации по умолчанию для monit - это /etc/monitrc, где вы можете найти некоторые примеры конфигурации (вы можете найти больше примеров конфигурации на http://www.tildeslash.com/monit/doc/examples.php), которые все закомментированы. Мы открываем этот файл сейчас и раскомментируем строку include /etc/monit.d/* в конце:
vi /etc/monitrc| [...] include /etc/monit.d/* [...] |
Это говорит monit также искать в директории /etc/monit.d файлы конфигурации, поэтому вместо изменения /etc/monitrc мы создаем новый файл конфигурации /etc/monit.d/monitrc. В моем случае я хочу мониторить proftpd, sshd, mysql, apache и postfix, я хочу включить веб-интерфейс monit на порту 2812, я хочу https веб-интерфейс, я хочу войти в веб-интерфейс с именем пользователя admin и паролем test, и я хочу, чтобы monit отправлял уведомления по электронной почте на root@localhost, так что мой файл выглядит следующим образом:
vi /etc/monit.d/monitrc| set 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:test check process proftpd with pidfile /var/run/proftpd.pid start program = "/etc/init.d/proftpd start" stop program = "/etc/init.d/proftpd stop" if failed port 21 protocol ftp then restart if 5 restarts within 5 cycles then timeout check process sshd with pidfile /var/run/sshd.pid start program "/etc/init.d/sshd start" stop program "/etc/init.d/sshd stop" if failed port 22 protocol ssh then restart if 5 restarts within 5 cycles then timeout check process mysql with pidfile /var/run/mysqld/mysqld.pid group database start program = "/etc/init.d/mysqld start" stop program = "/etc/init.d/mysqld stop" if failed host 127.0.0.1 port 3306 then restart if 5 restarts within 5 cycles then timeout check process apache with pidfile /var/run/httpd.pid group www start program = "/etc/init.d/httpd start" stop program = "/etc/init.d/httpd stop" if failed host www.example.com 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 postfix with pidfile /var/spool/postfix/pid/master.pid group mail start program = "/etc/init.d/postfix start" stop program = "/etc/init.d/postfix stop" if failed port 25 protocol smtp then restart if 5 restarts within 5 cycles then timeout |
(Пожалуйста, убедитесь, что вы проверяете процессы, которые действительно существуют на вашем сервере - в противном случае monit не запустится. То есть, если вы скажете monit проверять Postfix, но Postfix не установлен в системе, monit не запустится.)
Файл конфигурации довольно самодостаточен; если вы не уверены в каком-либо параметре, посмотрите документацию monit: http://www.tildeslash.com/monit/doc/manual.php
В части конфигурации apache вы найдете это:
| if failed host www.example.com port 80 protocol http and request "/monit/token" then restart |
что означает, что monit пытается подключиться к www.example.com на порту 80 и пытается получить доступ к файлу /monit/token, который является /var/www/www.example.com/web/monit/token, потому что корень документа нашего веб-сайта - это /var/www/www.example.com/web. Если monit не удается, это означает, что Apache не работает, и monit собирается перезапустить его. Теперь мы должны создать файл /var/www/www.example.com/web/monit/token и записать в него какую-то случайную строку:
mkdir /var/www/www.example.com/web/monit
echo "hello" > /var/www/www.example.com/web/monit/tokenДалее мы создаем pem сертификат (/var/certs/monit.pem), который нам нужен для SSL-зашифрованного веб-интерфейса monit:
mkdir /var/certs
cd /var/certsНам нужен файл конфигурации OpenSSL для создания нашего сертификата. Он может выглядеть так:
vi /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:
/etc/init.d/monit startТеперь укажите в вашем браузере https://www.example.com:2812/ (убедитесь, что порт 2812 не заблокирован вашим файрволом), войдите с помощью admin и test, и вы должны увидеть веб-интерфейс monit. Он должен выглядеть так:

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

(Страница состояния Apache)
В зависимости от вашей конфигурации в /etc/monit.d/monitrc monit будет перезапускать ваши службы, если они выйдут из строя, и отправлять уведомления по электронной почте, если идентификаторы процессов служб изменятся и т. д.
Удачи!
5 Ссылки
Get new posts in your inbox
No spam. Unsubscribe anytime.