使用monit监控服务

1. 下载,官网:http://mmonit.com/

  
  
  
  
  1. wget http://mmonit.com/monit/dist/monit-5.2.5.tar.gz -P /usr/local/src 

2. 安装

  
  
  
  
  1. tar zxvf /usr/local/src/monit-5.2.5.tar.gz -C /usr/local/src  
  2. cd /usr/local/src/monit-5.2.5  
  3. ./configure –prefix=/usr/local/monit  
  4. make  
  5. make install 

3. 配置文件

  
  
  
  
  1. cd /usr/local/src/monit-5.2.5  
  2. cp monitrc /etc 

4. 设置选项

  
  
  
  
  1. vi /etc/monitrc  
  2. set daemon 120  
  3. set logfile syslog facility log_daemon  
  4. set idfile /usr/local/monit/monit.id  
  5. set statefile /usr/local/monit/monit.state  
  6. set mailserver localhost  
  7. set alert emailaddress  
  8. set httpd port 2812 and use address 192.168.1.10  
  9. allow localhost  
  10. allow 192.168.1.0/24  
  11. allow admin:"password"  
  12. include /etc/monit.d/* 

选项说明:

set daemon 120

设置monit作为守护进程运行,每2分钟监视一次

set logfile

设置日志文件

set idfile

设置id文件

set statefile

设置状态文件

set mailserver

设置邮件服务器

set alert

设置发送警告的邮箱

set httpd port portnumber and use address ipaddress

设置页面监控页面的监听IP和端口号

allow

允许连接的主机ip,或网段

allow username:password

设置页面监控访问的用户名和密码

include /etc/monit.d/*

可以将具体监控服务的文件放在这个目录中,monit会自动包含这些文件

5. 监控具体服务

monit内置了一些协议,具体的在源代码目录的protocols中有,支持的有:aphe_status clamav default dns dwp ftp gener gps http imap ldap2 ldap3 lmtp mehe mysql nntp NOTES ntp3 pgsql radius rdate rsy sip smtp ssh tns

如果有协议支持,就可以直接使用protocol 协议进行测试

如果没有协议支持,也可以使用send和expect使用不支持的协议进行测试

a. 监控nginx

  
  
  
  
  1. vi /etc/monit.d/nginx.monit  
  2. check process nginx with pidfile /usr/local/nginx/nginx.pid  
  3. start program = "/usr/local/nginx/sbin/nginx" 
  4. stop program = "/usr/local/nginx/sbin/nginx -s stop" 
  5. if failed host 192.168.1.11 port 8011 protocol http then restart 

b. 监控memcached

  
  
  
  
  1. vi /etc/monit.d/memcached.monit  
  2. check process memcached with pidfile /tmp/linuxjcq_memcached.pid  
  3. start program = "/etc/rc.d/init.d/memcached start" 
  4. stop program = "/etc/rc.d/init.d/memcached stop" 
  5. if failed host 192.168.1.10 port 11211 protocol memcache then restart 

c. 监控php-fpm

  
  
  
  
  1. vi /etc/monit.d/php-fpm.monit  
  2. check process php-fpm with pidfile /usr/local/php/logs/php-fpm.pid  
  3. start program = "/usr/local/php/sbin/php-fpm start" 
  4. stop program = "/usr/local/php/sbin/php-fpm stop" 
  5. if cpu > 50% for 2 cycles then alert  
  6. if cpu > 70% for 5 cycles then restart  
  7. if failed host 192.168.1.10 port 9000 then restart  
  8. if 5 restarts within 5 cycles then timeout 

d. 监控mysql

  
  
  
  
  1. vi /etc/monit.d/mysqld.monit  
  2. check process mysqld with pidfile /data/mysql/mysql.pid  
  3. start program = "/etc/init.d/mysqld start" 
  4. stop program = "/etc/init.d/mysqld stop" 
  5. if failed host 192.168.1.10 port 3306 then restart  
  6. if 5 restarts within 5 cycles then timeout 

6. 测试配置文件

  
  
  
  
  1. /usr/local/monit/bin/monit -tc /etc/monitrc 

7. 添加为init进程,并启动

  
  
  
  
  1. vi /etc/inittab  
  2. # Run monit in standard run-levels  
  3. mo:2345:respawn:/usr/local/monit/bin/monit -Ic /etc/monitrc 

启动并验证

  
  
  
  
  1. telinit q  
  2. ps -ef | grep "monit" | grep -v "grep"  
  3. root 5655 1 0 07:34 ? 00:00:00 /usr/local/monit/bin/monit -Ic /etc/monitrc  
  4. # 结束进程   
  5.  kill -9 5655  
  6. ps -ef | grep "monit" | grep -v "grep"  
  7. root 13905 1 0 10:16 ? 00:00:00 /usr/local/monit/bin/monit -Ic /etc/monitrc  

 注意:在杀死进程后,重启它后,进程的ID改变了,同时会受到一封报警邮件

8. 测试进程停止

  
  
  
  
  1. # 拿nrpe进行测试  
  2. ps -ef | grep "nrpe" | grep -v "grep"  
  3. nagios 13995 1 0 10:18 ? 00:00:00 /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d  
  4. # 停止进程  
  5. service nrpe stop  
  6. # 验证进程停止,没有nrpe进程  
  7. ps -ef | grep "nrpe" | grep -v "grep"  
  8. # 在设置的指定时间后,进程自动重启  
  9. ps -ef | grep "nrpe" | grep -v "grep"  
  10. nagios 14398 1 0 10:22 ? 00:00:00 /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d 

 说明:注意两个nrpe进程的id不一样,说明重启了

9. Web监控

可以通过访问http://ipaddress:port来访问监控页面

我自己用nginx做了个代理来访问,配置如下

  
  
  
  
  1. vi /usr/local/nginx/conf/vhosts/monit.conf  
  2. server  
  3. {  
  4. listen 192.168.1.11:8012;  
  5. server_name 192.168.1.11;  
  6. location / {   
  7. proxy_pass http://192.168.1.10:2812;  
  8. }  

需要输入在monitrc文件中设置的用户名和密码登录,页面如下,可以看到相关服务的状态信息:

点击Process,可以看到相关服务器的完整参数,通过start service, stop service, restart service, disable monitor可以对服务进行相关的操作,如下图:

10. monit一些常用选项

  
  
  
  
  1. -c file  
  2. 指定配置文件  
  3. -t  
  4. 测试配置文件 

对服务的操作:

  
  
  
  
  1. start all  
  2. 启动所有的监控的服务  
  3. stop all  
  4. 停止所有的监控的服务  
  5. restart all  
  6. 重启所有的监控的服务  
  7. monitor all  
  8. 监控所有的服务  
  9. unmonitor all  
  10. 取消对所有服务的监控  
  11. start name  
  12. 启动指定的服务  
  13. stop name  
  14. 停止指定的服务  
  15. restart name  
  16. 重启指定的服务  
  17. monitor name  
  18. 监控指定的服务  
  19. unmonitor name  
  20. 取消对指定服务的监控 

monit自身相关的命:

  
  
  
  
  1. reload  
  2. 重新初始化monit  
  3. status  
  4. 打印所有监控的服务的完整状态报告  
  5. summary  
  6. 打印所有监控的服务概要  
  7. quit  
  8. 退出monit,配置成init后,可以使用monit quit进行重启 

 

你可能感兴趣的:(nginx,监控,休闲,php-fpm,monit)