2.配置monit
cp /etc/monit.conf /etc/monit.conf.bak
vi /etc/monit.conf
# 检查周期,默认为2分钟,对于网站来说有点长,可以根据需要自行调节,这改成30秒.
set daemon 30
# 日志文件
set logfile /var/log/monit.log
# 邮件通知服务器
#
#set mailserver mail.example.com
set mailserver localhost
# 简单的,这只改了一下发送人,有需要可以自己修改其它内容.
set mail-format { from: monit@cnblackhat.com }
# 设置邮件通知接收者.建议发到gmail,方便邮件过滤.
set alert admin@cnblackhat.com
set httpd port 2812 and # 设置http监控页面的端口
use address www.example.com # http监控页面的IP或域名
allow localhost # 允许本地访问
allow 58.68.78.0/24 # 允许此IP段访问
##allow 0.0.0.0/0.0.0.0 # 允许任何IP段,不建议这样干
allow userxxx:passwordxxx # 访问用户名密码
# 系统整体运行状况监控,默认的就可以,可以自己去微调
#
# 系统名称,可以是IP或域名
check system www.example.com
if loadavg (1min) > 4 then alert
if loadavg (5min) > 2 then alert
if memory usage > 75% then alert
if cpu usage (user) > 70% then alert
if cpu usage (system) > 30% then alert
if cpu usage (wait) > 20% then alert
# 监控nginx
#
# 需要提供进程pid文件信息
check process nginx with pidfile /var/run/nginx.pid
# 进程启动命令行,注:必须是命令全路径
start program = "/etc/init.d/nginx start"
# 进程关闭命令行
stop program = "/etc/init.d/nginx stop"
# nginx进程状态测试,监测到nginx连不上了,则自动重启
if failed host blog.slogra.com port 80 protocol http then restart
# 多次重启失败将不再尝试重启,这种就是系统出现严重错误的情况
if 3 restarts within 5 cycles then timeout
# 可选,设置分组信息
group server
# 可选的ssl端口的监控,如果有的话
# if failed port 443 type tcpssl protocol http
# with timeout 15 seconds
# then restart
# 监控apache
#
check process apache with pidfile /var/run/httpd.pid
start program = "/etc/init.d/httpd start"
stop program = "/etc/init.d/httpd stop"
# apache吃cpu和内存比较厉害,额外添加一些关于这方面的监控设置
if cpu > 50% for 2 cycles then alert
if cpu > 70% for 5 cycles then restart
if totalmem > 1500 MB for 10 cycles then restart
if children > 250 then restart
if loadavg(5min) greater than 10 for 20 cycles then stop
if failed host blog.slogra.com port 8080 protocol http then restart
if 3 restarts within 5 cycles then timeout
group server
# 可选,依赖于nginx
depends on nginx
# 监控php-fpm进程
#
check process php-fpm with pidfile /var/run/php-fpm.pid
start program = "/etc/init.d/php-fpm start"
stop program = "/etc/init.d/php-fpm stop"
if failed port 9000 type TCP then restart
## if failed unixsocket /var/run/php-fpm.sock then restart
if 3 restarts within 5 cycles then timeout
group server
# 监控mysql进程
#
#mysql的pid有可能根据个人服务器名来命名的,所以我建议大家先看看自己机器上mysqld.pid到底是什么名字.
check process mysqld with pidfile /var/lib/mysql/mysqld.pid
start program = "/etc/init.d/mysql start"
stop program = "/etc/init.d/mysql stop"
if failed host 127.0.0.1 port 3306 then restart
if 5 restarts within 5 cycles then timeout