1.介绍
????monit监控和管理进程、程序、文件、目录和Unix系统的文件的工具。可以进行自动维护和修理,在错误的情况下执行有意义的因果关系的行动。比如,某个进程没有运行启动它;没有响应重启它;占用太多资源停止该进程等等。也可以用来监控文件、目录或系统文件的变化,如时间戳的改变,检验和的改变或大小的改变
2.安装:(需先装epel源)
????yum install?monit -y ?
?3.配置
????3.1 monit 的配置文件monit.conf
????? ??set daemon ?30 ? 监控检查的时间间隔
? ? ? ? ?set logfile syslog ? 默认日志为syslog,还可以设置为自定义路径下的文件
????????set pidfile /var/run/monit.pid ?设置pid文件的位置? ? ????
????????set idfile /var/.monit.id ?设置监控项目唯一ID的文件位置 ?默认在$HOME/.monit.id
????????set statefile /var/.monit.state ? ?默认存储每个周期内monitorinig?状态的文件
?????????set mailserver ??mail.bar.baz ? ?主的邮件服务器
??????????????????????????????backup.bar.baz port 10025 ? ?备的邮件服务器
mailserver?支持格式为:
SET?MAILSERVER?<hostname|ip-address?[PORT?number]?[USERNAME?string]?[PASSWORD?string]?[using?SSLAUTO|SSLV2|SSLV3|TLSV1|TLSV11|TLSV12]?[CERTMD5?checksum]>,?...
????????????????[with?TIMEOUT?X?SECONDS]
????????????????[using?HOSTNAME?hostname]
????set?eventqueue?????????#默认当邮件服务器不可用时使用eventqueue存储报警事件
?????????basedir?/var/monit??
?????????slots?100????????????#限制队列大小
?set mail-format { ? ? 设置邮件告警的格式
? ? ? from: monit@$HOST
? ?subject: monit alert -- ?$EVENT $SERVICE
? ?message: $EVENT Service $SERVICE
? ? ? ? ? ? ? ?Date: ? ? ? ?$DATE
? ? ? ? ? ? ? ? Action: ? ? ?$ACTION
? ? ? ? ? ? ? ? Host: ? ? ? ?$HOST
? ? ? ? ? ? ? ? ?Description: $DESCRIPTION
? ? ? ? ? ?Your faithful employee,
? ? ? ? ? Monit
}
set alert?sysadm@foo.bar ? 设置接收告警的邮箱
以上是全局的配置,具体的services监控语法后面会介绍
? ?3.2 ?进程监控
????????在 /etc/monit.d/下创建 nginx ,,并重启monit。内容如下
check process nginx with pidfile /usr/local/xywy/nginx/run/nginx.pid
start program = "/usr/local/xywy/nginx/sbin/nginx" with timeout 30 seconds
stop program = "/usr/local/xywy/nginx/sbin/nginx -s stop"
????3.3 监控文件
????????在/etc/monit.d/下创建monit_test ,并重启monit,内容如下
check file monit.conf path /etc/monit.conf
group system
if changed sha1 checksum
then exec "/usr/local/bin/monit -c /etc/monit.conf reload"
? 3.4 ?监控文件设备
check device VAR_LOG with path /var/log
if space usage > 85% then alert
check filesystem tmpfs with path /var
if space usage > 80% then alert
下面是配置综合案例
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 nginx with pidfile /var/run/nginx.pid
? ?start program = "/etc/init.d/nginx start"
? ?stop program ?= "/etc/init.d/nginx stop"
? ?if failed host www.vpsee.com port 80 protocol http
? ? ? then restart
check process php_cgi with pidfile /var/run/php_cgi.pid
? ?start program = "/etc/init.d/php_cgi start"
? ?stop program ?= "/etc/init.d/php_cgi stop"
? ?if failed host 127.0.0.1 port 9000 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.vpsee.com port 8080 protocol http
? ? ?then restart
? if cpu is greater than 80% for 2 cycles then alert
? if cpu > 80% for 5 cycles then restart
? if totalmem > 512 MB for 5 cycles then restart
? if children > 200 then restart
? if loadavg(5min) greater than 10 for 8 cycles then stop
? if 3 restarts within 5 cycles then timeout
3.5 monit命令使用
-c ?指定配置文件
-d ?后台运行
-l????指定logfile
-p ?指定pid file
-s ?指定statefile
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">
(adsbygoogle = window.adsbygoogle || []).push({});