郁闷的我只好采用monit监测mongrel cluster

 

前面mongrel或者fastcgi老是宕的问题,google之后,想robbin请教无回音的情况下,只好使用下下策:监测ruby进程,如果有问题,重新启动。于是找到了monit。

Monit 是一个开源系统监控软件,对于文件系统(包括目录)、进程、服务等都能够进行监控,并能够进行 “if condition then action” 的操作。

目前 monit unix 系统上都能够使用。


这里给出一个我的实际配置案例,其他详细信息请到网站上查询(主站: http://mmonit.com/monit/ ;配置案例: http://mmonit.com/wiki/Monit/ConfigurationExamples

 

安装 monit 之后,需要一个配置文件: monitrc, 一般放在 /etc , 下面是具体配置;

一、monit下载安装,不必说;
二、monit配置文件:缺省是etc下的monitrc
三、测试monit配置文件是否正确:monit -t
四、退出monit:monit quit
五、运行monit:monit
六、配置文件中的基本配置;
set daemon  10 #启动按照daemon方式,10表示每10s检测一次。有点变态。一个小时检测360次,一天就有8000次左右。你自己设呗。
 set httpd port 2812 and
     use address 61.128.121.155  # only accept connection from localhost
     allow 218.31.158.252 # allow localhost to connect to the server and
     allow admin:monit      # require user 'admin' with password 'monit'
     allow @monit           # allow users of group 'monit' to connect (rw)
     allow @users readonly  # allow users of group 'users' to connect readonly
上面的英文解释已经很清楚了。照着做。
配置的好处,是可以在网上监控你的系统运行情况。

配置文件中的监控类的配置。
方法一:使用对进程进行检查,mongrel和thin都可以采用这个方法。
对mongrel进行守护;
check process mongrel100
  with pidfile /home/saq/app/myapp/tmp/pids/mongrel.100.pid
  start program = "/home/saq/app/ruby/bin/mongrel_rails start -c /home/saq/app/myapp -eproduction -p100 -d -P /home/saq/app/myapp/tmp/pids/mongrel.100.pid"
  stop program = "/home/saq/app/ruby/bin/mongrel_rails stop -P /home/saq/app/myapp/tmp/pids/mongrel.100.pid"
  if failed port 100 protocol HTTP
    request /main
    with timeout 20 seconds
    then restart
  if 5 restarts within 5 cycles
    then timeout
解释:
1.mongrel100是任意的名称,monit使用;
2.pidfile非常关键,这是每个mongrel进程实例的pid,缺省在rails应用的tmp/pids中,你可以自己制定
3.start和stop:就是实际在命令行中可以操作的、控制进程的命令,是字符串方式。命令行的关键在于启用-P这个选项,制定pid所在的文件。
4.if语句:port 100是监控的端口号,protocol HTTP表示协议,后面的request就是具体的一个 可用的url,这里可以设计一个测试action,较少占用资源的。
5.对thin进行守护;
关于集群:如果需要使用集群,创建多个进程检测即可。
道理类似,只是在start、stop部分修改即可。
6.补充说明:方法一的前提条件是需要首先产生pid,这样以来,monit才可以监控这个进程,是啊,你不告诉你是谁,我怎么监控呢。所以进程需要先运行,然后再运行monit。当然还有一个简单方法就是使用monit start all启动所有的监控的服务。类似的命令有monit stop all,monit restart all.然后执行monit,让monit在后台以daemon方式运行。

 

 

你可能感兴趣的:(软件测试,Google,Ruby,Rails,360)