monit
— программа для отслеживания состояния процессов, если по каким-то причинам процесс упал — она его перезапустит или отправит оповещение администратору если запустить процесс не удалось.
В данном примере monit
устанавливается на FreeBSD 12. Отличий в синтаксисе конфигурации monit на FreeBSD 12 и Debian 10 нет. Различия лишь в местах расположения конфигурационных файлов и, что в пакете для Debian есть набор предустановленных правил доступных из /etc/monit/conf-available/
# pkg search monit ... monit-5.27.1 Unix system management and proactive monitoring # pkg install monit ... New packages to be INSTALLED: monit: 5.27.1 Number of packages to be installed: 1 292 KiB to be downloaded. Proceed with this action? [y/N]: y [1/1] Fetching monit-5.27.1.txz: 100% 292 KiB 299.2kB/s 00:01 Checking integrity... done (0 conflicting) [1/1] Installing monit-5.27.1... [1/1] Extracting monit-5.27.1: 100% ===== Message from monit-5.27.1: -- USAGE: To enable monit you need to add monit_enable="YES" to rc.conf file. Before running monit you have to configure monitrc file. There is example configuration file monitrc.sample. /usr/local/etc/monitrc.sample # locate monit|grep /etc /usr/local/etc/monitrc.sample /usr/local/etc/rc.d/monit in Debian 10 $ locate monit|grep /etc /etc/monit /etc/apache2/mods-available/heartmonitor.load /etc/default/monit /etc/init.d/monit /etc/logrotate.d/monit /etc/monit/conf-available /etc/monit/conf-enabled /etc/monit/conf.d /etc/monit/monitrc /etc/monit/monitrc.d /etc/monit/monitrc.dpkg-dist /etc/monit/templates /etc/monit/conf-available/acpid /etc/monit/conf-available/apache2 /etc/monit/conf-available/at /etc/monit/conf-available/cron /etc/monit/conf-available/mdadm /etc/monit/conf-available/memcached /etc/monit/conf-available/mysql /etc/monit/conf-available/nginx /etc/monit/conf-available/openntpd /etc/monit/conf-available/openssh-server ... # monit -t Cannot find the Monit control file at ~/.monitrc, /etc/monitrc, /usr/local/etc/monitrc, /usr/local/etc/monitrc or at ./monitrc # cp /usr/local/etc/monitrc.sample /usr/local/etc/monitrc # monit -t New Monit id: cf3df3975ee6cad2d4e41f8f5a9bd553 Stored in '/root/.monit.id' Control file syntax OK # vi /usr/local/etc/monitrc ... #set log syslog set logfile /var/log/monit.log ... set mailserver localhost ... # set alert [email protected] not on { instance, action } set alert admin@example.com not on { instance, action } ... #set httpd port 2812 and #use address localhost # only accept connection from localhost (drop if you use M/Monit) #allow localhost # allow localhost to connect to the server and #allow admin:monit # require user 'admin' with password 'monit' ... # include /etc/monit.d/* include /etc/monit.d/*.cfg # monit -t /usr/local/etc/monitrc:309: Include failed -- No such file or directory '/etc/monit.d/*' Control file syntax OK # mkdir /etc/monit.d/ # vi /etc/monit.d/apache2.cfg check process httpd matching "httpd" start program = "/usr/local/etc/rc.d/apache24 start" stop program = "/usr/bin/killall apache24" if cpu usage > 95% for 10 cycles then restart if cpu > 60% for 2 cycles then alert if not exist then restart if not exist for 2 cycles then alert # vi /etc/monit.d/mysql.cfg check process mysqld matching "mysqld" start program = "/usr/local/etc/rc.d/mysql-server start" stop program = "/usr/bin/killall mysqld" if cpu usage > 95% for 10 cycles then restart if cpu > 60% for 2 cycles then alert if not exist then restart if not exist for 2 cycles then alert # vi /etc/monit.d/squid.cfg check process squid matching "squid" start program = "/usr/local/etc/rc.d/squid start" stop program = "/usr/bin/killall squid" if cpu > 60% for 2 cycles then alert if not exist then restart if not exist for 2 cycles then alert # vi /etc/monit.d/opendkim.cfg check process opendkim matching "opendkim" start program = "/usr/local/etc/rc.d/milter-opendkim start" stop program = "/usr/bin/killall opendkim" if cpu > 60% for 2 cycles then alert if not exist then restart if not exist for 2 cycles then alert # vi /etc/rc.conf ... monit_enable="YES" # service monit start Starting monit. Starting Monit 5.27.1 daemon From: monit@example.com To: admin@example.com Subject: monit alert -- Monit instance changed example.com Date: Sat, 27 Feb 2021 10:46:02 GMT X-Mailer: Monit 5.27.1 Monit instance changed Service example.com Date: Sat, 27 Feb 2021 12:46:02 Action: start Host: example.com Description: Monit 5.27.1 started Your faithful employee, Monit
Больше примеров конфигурации monit на сайте автора
- Monit / Configuration Examples
https://mmonit.com/wiki/Monit/ConfigurationExamples