前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Monit监控软件安装 原

Monit监控软件安装 原

作者头像
拓荒者
发布2019-04-23 17:38:44
1.5K0
发布2019-04-23 17:38:44
举报
文章被收录于专栏:运维经验分享运维经验分享

Monit是一款功能非常丰富的进程、文件、目录和设备的监测软件,适用于Linux/Unix平台。官网地址:https://mmonit.com/ 在CentOS 6.4上配置Monit的步骤:

我们以服务器IP地址:10.153.126.189,为例进行配置,监控10.153.110.12, 10.153.75.78这两台服务器。

一、安装Monit:

代码语言:javascript
复制
# yum install monit –y

这一步可能会报错:

代码语言:javascript
复制
  1. # yum install monit –y
  2. Loaded plugins: fastestmirror, security
  3. Determining fastest mirrors
  4. Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again

解决方法:

代码语言:javascript
复制
vi /etc/yum.repos.d/epel.repo

编辑[epel]下的baseurl前的#号去掉,mirrorlist前添加#号。正确配置如下:

代码语言:javascript
复制
  1. [epel]
  2. name=Extra Packages for Enterprise Linux 6 - $basearch
  3. baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
  4. #mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
  5. failovermethod=priority
  6. enabled=1
  7. gpgcheck=1
  8. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

至此Monit安装完毕,接下来配置monit.conf文件

二、monit配置:

1、文件位置在/etc/monit.conf,修改常见配置:

1)检测时间、日志位置:

代码语言:javascript
复制
  1. set daemon 120
  2. with start delay 240
  3. set logfile syslog facility log_daemon

每120s检测一次;启动后延时240s开始检测;

日志文件位置;

2)id文件

代码语言:javascript
复制
  1. set idfile /var/monit/id
  2. set eventqueue
  3. basedir /var/monit

我们必须定义“idfile”,Monit守护进程的一个独一无二的ID文件; “eventqueue”,当monit的邮件因为SMTP或者网络故障发不出去,邮件会暂存在这里;以及确保/var/monit路径是存在的。然后使用下边的配置就可以了;

3)设置web界面:

代码语言:javascript
复制
  1. set httpd port 1966 and
  2. SSL ENABLE
  3. PEMFILE /var/certs/monit.pem
  4. allow monituser:romania
  5. allow localhost
  6. allow 192.168.0.0/16
  7. allow myhost.mydomain.ro

2、监控信息可以直接写到/etc/monit.conf文件中,也可以单独创建一个.cfg后缀的文件,将check... if 语句添加到里面,然后在monit.conf文件末尾加入include路径。

代码语言:javascript
复制
  1. set daemon 30 # 每30秒查询一次服务器状态
  2. set logfile /data/apps/monit/log/monit.log # 默认日志位于 /var/log/monit
  3. set idfile /var/.monit.id
  4. set eventqueue
  5. basedir /data/apps/monit/data
  6. slots 10000
  7. set httpd port 2812 and # 监听2812端口
  8. use address 10.153.126.189 # 本服务器地址,这里我们的Monit安装到了10.153.126.189这台服务器上。
  9. allow localhost
  10. allow 10.1.0.0/255.255.0.0
  11. allow admin : pin # 在这里设置用户名及口令。admin为用户名,冒号后为密码。
  12. # 接下来设置要监听的服务器
  13. # address后面的是服务器的IP地址。第二行设置port端口号。exec后为当异常情况出现后执行的脚本。可以添加多个check ... if 语句,同时监听很多台服务器
  14. # 这里 /data/apps/monit/contrib/sms.py这个脚本负责报警
  15. check host read_kajuan_10.153.110.12 with address 10.153.110.12
  16. if failed port 80 with timeout 1 seconds for 2 cycles then exec "/data/apps/monit/contrib/sms.py"
  17. check host read_kajuan_10.153.75.78 with address 10.153.75.78
  18. if failed port 80 with timeout 1 seconds for 2 cycles then exec "/data/apps/monit/contrib/sms.py"
  19. #include /etc/monit.d/*

三、常见监控:

1、根据ip+端口,监控web服务器端口存活:

代码语言:javascript
复制
  1. check host gamecenter_api_10.153.123.2 with address 10.153.123.2
  2. if failed port 8093 with timeout 1 seconds for 2 cycles then exec "/data/apps/monit/contrib/sms.py"

表示:在两次监控周期内,如果端口超时超过1m则报警。

2、根据pid,监控服务进程:

代码语言:javascript
复制
  1. check process tomcat with pidfile /var/run/catalina.pid # 进程pid
  2. start program = "/etc/init.d/tomcat start" # 设置启动命令
  3. stop program = "/etc/init.d/tomcat stop" # 设置停止命令
  4. if 9 restarts within 10 cycles then timeout # 设置在10个监视周期内重,启了9次则超时,不再监视这个服务。原因另外说明【3】
  5. if cpu usage > 90% for 5 cycles then alert # 如果在5个周期内该服务的cpu使用率都超过90%则提示
  6. if failed url http://127.0.0.1:4000/ timeout 120 seconds for 5 cycles then restart # 若连续5个周期打开url都失败(120秒超时,超时也认为失败)则重启服务

设置超时后不再监视是为了让服务不要一直重启,如果连续重启多次不成功,极有可能再重启下去也不会成功的。并且tomcat的重启需要占用大量系统资源,假如一直重启下去,反而会使其它服务也无法正常运作。

3、可以对moint本身服务器进行监控:

代码语言:javascript
复制
  1. # 系统名称,可以是IP或域名
  2. check system www.example.com
  3. if loadavg (1min) > 4 then alert
  4. if loadavg (5min) > 2 then alert
  5. if memory usage > 75% then alert
  6. if cpu usage (user) > 70% then alert
  7. if cpu usage (system) > 30% then alert
  8. if cpu usage (wait) > 20% then alert

4、实例:

代码语言:javascript
复制
  1. #
  2. # 监控nginx
  3. #
  4. # 需要提供进程pid文件信息
  5. check process nginx with pidfile /var/run/nginx.pid
  6. # 进程启动命令行,注:必须是命令全路径
  7. start program = "/etc/init.d/nginx start"
  8. # 进程关闭命令行
  9. stop program = "/etc/init.d/nginx stop"
  10. # nginx进程状态测试,监测到nginx连不上了,则自动重启
  11. if failed host www.example.com port 80 protocol http then restart
  12. # 多次重启失败将不再尝试重启,这种就是系统出现严重错误的情况
  13. if 3 restarts within 5 cycles then timeout
  14. # 可选,设置分组信息
  15. group server
  16. # 可选的ssl端口的监控,如果有的话
  17. # if failed port 443 type tcpssl protocol http
  18. # with timeout 15 seconds
  19. # then restart
  20. #
  21. # 监控apache
  22. #
  23. check process apache with pidfile /var/run/apache2.pid
  24. start program = "/etc/init.d/apache2 start"
  25. stop program = "/etc/init.d/apache2 stop"
  26. # apache吃cpu和内存比较厉害,额外添加一些关于这方面的监控设置
  27. if cpu > 50% for 2 cycles then alert
  28. if cpu > 70% for 5 cycles then restart
  29. if totalmem > 1500 MB for 10 cycles then restart
  30. if children > 250 then restart
  31. if loadavg(5min) greater than 10 for 20 cycles then stop
  32. if failed host www.example.com port 8080 protocol http then restart
  33. if 3 restarts within 5 cycles then timeout
  34. group server
  35. # 可选,依赖于nginx
  36. depends on nginx
  37. #
  38. # 监控spawn-fcgi进程(其实就是fast-cgi进程)
  39. #
  40. check process spawn-fcgi with pidfile /var/run/spawn-fcgi.pid
  41. # spawn-fcgi一定要带-P参数才会生成pid文件,默认是没有的
  42. start program = "/usr/bin/spawn-fcgi -a 127.0.0.1 -p 8081 -C 10 -u userxxx -g groupxxx -P /var/run/spawn-fcgi.pid -f /usr/bin/php-cgi"
  43. stop program = "/usr/bin/killall /usr/bin/php-cgi"
  44. # fast-cgi走的不是http协议,monit的protocol参数也没有cgi对应的设置,这里去掉protocol http即可。
  45. if failed host 127.0.0.1 port 8081 then restart
  46. if 3 restarts within 5 cycles then timeout
  47. group server
  48. depends on nginx

注意:

  1. start和stop的program参数里的命令必须是全路径,否则monit不能正常启动,比如killall应该是/usr/bin/killall。
  2. 对于spawn-fcgi,很多人会用它来管理PHP的fast-cgi进程,但spawn-fcgi本身也是有可能挂掉的,所以还是需要用monit来监控spawn-fcgi。spawn-fcgi必须带-P参数才会有pid文件,而且fast-cgi走的不是http协议,monit的protocol参数也没有cgi对应的设置,一定要去掉protocol http这项设置才管用。
  3. 进程多次重启失败monit将不再尝试重启,收到这样的通知邮件表明系统出现了严重的问题,要引起足够的重视,需要赶紧人工处理。
  4. 当然monit除了管理进程之外,还可以监控文件、目录、设备等,本文不做讨论,具体配置方式可以去参考monit的官方文档

参考:

http://www.cnblogs.com/ddr888/archive/2011/03/02/1969087.html

http://feilong.me/2011/02/monitor-core-processes-with-monit

http://www.vpser.net/manage/monit.html

http://itoedr.blog.163.com/blog/static/1202842972014529115715267/

https://www.rails365.net/articles/bu-shu-zhi-shi-yong-monit-lai-jian-kong-fu-wu-si

http://linuxjcq.blog.51cto.com/3042600/717843

https://segmentfault.com/a/1190000002867212

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档