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 备的邮件服务器
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 30seconds
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 systemifchanged sha1 checksum
thenexec "/usr/local/bin/monit -c /etc/monit.conf reload"
3.4 监控文件设备
check device VAR_LOG with path /var/logif space usage > 85%then alert
check filesystem tmpfs with path/varif 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 22protocol ssh then restartif 5 restarts within 5cycles 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 3306then restartif 5 restarts within 5cycles 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 80protocol 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 9000then restartif 5 restarts within 5cycles 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 8080protocol http
then restartif cpu is greater than 80% for 2cycles then alertif cpu > 80% for 5cycles then restartif totalmem > 512 MB for 5cycles then restartif children > 200then restartif loadavg(5min) greater than 10 for 8cycles then stopif 3 restarts within 5 cycles then timeout
3.5 monit命令使用
-c 指定配置文件
-d 后台运行
-l 指定logfile
-p 指定pid file
-s 指定statefile