Monit — мониторинг Linux сервера. Установка и настройка под CentOS

Для чего нужен Monit? Monit — самостоятельный демон, работающий от пользователя root. Он мониторит различные выбранные вами ресурсы и если что-то пошло не так, выполнить некоторые действия. Упрощенно говоря, если какой то ресурс «упал» (Апач, ФТП или Мускуль), то Монит перезапустит его.

Расскажу, как установить и приведу пример конфига.

Установка, запуск и прочее

  1. yum install monit
  2. chkconfig monit on
  3. service monit start
  4.  
  5. //так же доступны команды остановки и перезапуска
  6.  
  7. service monit stop
  8. service monit restart

А вот конфиг, отслеживает свободное место, работу FTP, SSH, MySQL, Apache и Nginx

  1. set daemon 60
  2. set logfile /var/log/monit.log
  3. set logfile syslog facility log_daemon
  4. set mailserver localhost
  5. set alert ваш@email
  6.  
  7. set httpd port 10001 and
  8. allow имя:пароль
  9.  
  10. check filesystem hdd with path /
  11. if space usage > 70% then alert
  12. if inode usage > 80% then alert
  13.  
  14. check system $HOST
  15.   if loadavg (1min) > 7 then alert
  16.   if loadavg (5min) > 5 then alert
  17.   if memory usage > 85% then alert
  18.   if cpu usage (user) > 90% then alert
  19.   if cpu usage (system) > 90% then alert
  20.   if cpu usage (wait) > 80% then alert
  21.  
  22. check process vsftpd
  23. matching vsftpd
  24. start program = "/etc/init.d/vsftpd start"
  25. stop program = "/etc/init.d/vsftpd stop"
  26. if failed port 21 protocol ftp for 32 cycles then alert
  27.  
  28. #check process proftpd with pidfile /var/run/proftpd.pid
  29. #start program = "/etc/init.d/proftpd start"
  30. #stop program  = "/etc/init.d/proftpd stop"
  31. #if failed port 21 protocol ftp for 32 cycles then alert
  32. #if 15 restarts within 15 cycles then timeout
  33.  
  34. check process sshd with pidfile /var/run/sshd.pid
  35. start program  "/etc/init.d/sshd start"
  36. stop program  "/etc/init.d/sshd stop"
  37. if failed port 22 protocol ssh for 7 cycles then alert
  38. if failed port 22 protocol ssh for 15 cycles then restart
  39. if 15 restarts within 15 cycles then timeout
  40.  
  41. check process mysql with pidfile /var/run/mysqld/mysqld.pid
  42. start program = "/etc/init.d/mysqld start"
  43. stop program = "/etc/init.d/mysqld stop"
  44. if failed host 127.0.0.1 port 3306 for 5 cycles then alert
  45. if cpu usage > 30% for 10 cycles then alert
  46. if cpu usage > 50% for 10 cycles then alert
  47. if 15 restarts within 15 cycles then timeout
  48.  
  49. check process httpd with pidfile /var/run/httpd/httpd.pid
  50. start program = "/etc/init.d/httpd start"
  51. stop program = "/etc/init.d/httpd stop"
  52. if failed host 192.168.0.1 port 80 for 5 cycles then alert
  53. if 15 restarts within 15 cycles then timeout
  54.  
  55. check process nginx with pidfile /var/run/nginx.pid
  56. start program = "/etc/init.d/nginx start"
  57. stop program = "/etc/init.d/nginx stop"

Вместо 192.168.0.1 впишите свой ip или имя домена. В оригинальном конфиге настроек должно быть еще больше, читайте описание :-)

Вот так выглядит web интерфейс, не забудьте добавить порт 10001 в список разрешенных, если у вас стоит Фаервол