用 Monit 监测 Linux 服务器

Monit 是一个用来监测系统状态的工具,不但可以用来监视进程、服务、文件、目录、文件系统,还可以在服务 down 掉的时候自动重启服务或者当某个进程占用过多的资源的时候自动停掉进程,并且支持 Email 报警功能、远程服务器监测、web 管理界面等,功能很多很强大。VPSee 用 monit 来监测多个 VPS 和独立服务器,如果某个 VPS down 了、某个服务器资源紧张,就能第一时间知道,而且某个服务停了的话可以自动重启服务。

安装 monit

在 CentOS 下安装和配置文件:

# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
# rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm

# yum install monit

# vi /etc/monit.conf

在 Debian 下安装和配置文件:

# apt-get install monit

# vi /etc/monit/monitrc

配置 monit


修改 monit 的配置文件,/etc/monit.conf(CentOS)或者 /etc/monit/monitrc(Debian),每隔120秒检查一次系统,如果 httpd/mysql/sshd 服务停掉了就重新启动相应服务。对于 httpd 服务器,当发现 CPU/MEM 占用过大、loadavg 太高时就执行相应的报警、重启服务指令。如果使用 Email 报警功能,需要配置 Email 地址、邮件服务器等信息:

set daemon  120

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

更多详细信息可以参考配置文件,里面注释写得很详细。

启动 monit

在 CentOS 下启动并加入到系统启动脚本:

# /etc/init.d/monit start

# /sbin/chkconfig monit on

在 Debian 下:

# vi /etc/default/monit
# You must set this variable to for monit to start
startup=1

# /etc/init.d/monit start

# update-rc.d monit defaults

评论 (4 Comments)

  1. 不知道这个和nagios的区别在哪里,看看..

    PS:发现博主的很多文章都非常棒,第一次来这里是看到64MB内存如何优化的文章
    ,没想到又找过来了.
    想和博主做个友链.已经链好 :) .

  2. monit 是用来监测服务的,还可以自动重启服务,有时候 fastcgi 莫名奇妙死了就可以用 monit 来监测和自动重启。

  3. 你好 我想知道monit怎么配置才能监控多台服务器 谢谢

  4. 你好,如何配置监控局域网多台机器?感谢

发表评论