您的位置:首页 > 数据库 > Mongodb

supervisor监控mongoDb

2015-08-10 18:32 555 查看
在linux下监控进程,分为6步:

1、查看python版本(决定是否需要安装python)

实验中系统版本为:Red Hat 6.5 自带2.6.6版本的python,不需要安装

2、安装与python对应的setuptools下载地址在此

tools为:setuptools-15.2.tar.gz

以下的

wget http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg#md5=bfa92100bd772d5a213eedd356d64086
解压安装

tar -xvf setuptools-15.2.tar.gz

切换到tools目录,执行python setup.py install进行安装

3、安装supervisor,下载地址在此,解压缩后

# python setup.py install

supervisor版本为:supervisor-3.0b1.tar.gz

wget http://pypi.python.org/packages/source/s/supervisor/supervisor-3.0b1.tar.gz
在安装supervisor过程中发现下面错误:

error:.....Couldn't find index page for 'meld3' (maybe misspelled?)

查找发现是需要安装 meld3-0.6.8.tar.gz,安装完后,问题解决

有的朋友说是需要添加DNS,我试了一下不行,大家也可以试一下

vi /etc/resolv.conf

nameserver 10.69.6.134

nameserver 10.69.6.190

4、配置守护进程 /etc/supervisord.conf

创建supervisord的配置模板

echo_supervisord_conf > /etc/supervisord.conf

修改/etc/supervisord.conf文件,加入你要监控的进程,里面的注释很详细,举个简单的例子:

这是一段要监控的进程的描述信息,添加到这个文件的末尾就好了mongodb_monitor.sh见文章最后:

[program:Mongodb]

command=/etc/mongodb_monitor.sh

priority=1

numprocs=1 ; 启动几个进程

autostart=true ; 随着supervisord的启动而启动

autorestart=true ; 自动重启。。当然要选上了

startretries=10 ; 启动失败时的最多重试次数

stopsignal=KILL ; 用来杀死进程的信号

stopwaitsecs=10 ; 发送SIGKILL前的等待时间

redirect_stderr=true ; 重定向stderr到stdout

stdout_logfile=/var/log/mongo.log ;监控日志

stdout_logfile_maxbytes=1MB ;每个日志文件大小

配置完成后保存退出。

5.编写supervisor服务脚本,添加服务

vi /etc/init.d/supervisord

#!/bin/sh

#chkconfig: 2345 80 90

#description:auto_run

PATH=/sbin:/bin:/usr/sbin:/usr/bin

PROGNAME=supervisord

DAEMON=/usr/bin/$PROGNAME

CONFIG=/etc/$PROGNAME.conf

PIDFILE=/tmp/$PROGNAME.pid

DESC="supervisord daemon"

SCRIPTNAME=/etc/init.d/$PROGNAME

# Gracefully exit if the package has been removed.

test -x $DAEMON || exit 0

start()

{

echo -n "Starting $DESC: $PROGNAME"

$DAEMON -c $CONFIG

echo "..."

}

stop()

{

echo -n "Stopping $DESC: $PROGNAME"

supervisor_pid=$(cat $PIDFILE)

kill -15 $supervisor_pid

echo "..."

}

case "$1" in

start)

start

;;

stop)

stop

;;

restart)

stop

start

;;

*)

echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2

exit 1

;;

esac

exit 0

保存退出

6.做成服务,添加开机启动

修改权限

chmod 755 /etc/init.d/supervisord

添加服务

chkconfig --add supervisord

开启服务

chkconfig supervisord on

验证服务

chkconfig --list|grep supervisord

启动服务

/etc/init.d/supervisord start

# supervisord -n

能在控制台看到监控进程的输出:

2010-08-17 10:26:07,467 INFO supervisord started with pid 943

2010-08-17 10:26:08,469 INFO spawned: 'meta.txn.recover.on.error' with pid 1009

2010-08-17 10:26:09,876 INFO success: meta.txn.recover.on.error entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

2010-08-17 10:26:48,442 INFO exited: meta.txn.recover.on.error (terminated by SIGKILL; not expected)

2010-08-17 10:26:49,444 INFO spawned: 'meta.txn.recover.on.error' with pid 2427

2010-08-17 10:26:50,487 INFO success: meta.txn.recover.on.error entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

黑体的地方是我用kill -9杀掉进程后出来的,看到supervisor检测到进程退出后又再次启动了进程。

不带参数运行supervisord是以daemon方式运行。

把supervisord加入到开机启动项里就可以完成监控进程的功能了。

或查看监控日志

tail -900f /var/log/mongo.log

supervisord : supervisor的服务器端部分,启动supervisor就是运行这个命令

supervisorctl:启动supervisor的命令行窗口。

【注意】:当supervisord以非daemon方式运行时,杀掉supervisord后,被监控的进程也退出了。

而以daemon方式运行,杀掉supervisord对被监控进程无影响。

MongoDb的守护进程

注:因为MongoDb意外挂掉或会存在一个.lock文件,该文件存在则mongoDb启动会失败

添加将脚本放到/etc/下并命名为mongodb_monitor.sh,配置上面的守护进程步骤,即可;

#!/bin/bash

while [ 1=1 ]

do

count=`ps -ef|grep "/shard/config "|cut -d " " -f 7|wc`

count=`echo $count |awk '{print int($0)}'` #将字符串转换为数字,要不然 if [ $count -lt 2 ] 会报错

#ps -ef|grep "/data/DB1/" >>/var/log/mongo.log

#ps -ef|grep "/data/DB1/"|wc|cut -d " " -f 7 >>/var/log/mongo.log

#echo "$count1 is"

if [ $count -lt 2 ]

then

DATASTRING=`date +%Y%m%d%H%M%S`

echo "$DATASTRING $count MongoDB_config is down" >>/var/log/mongo.log

rm -f /usr/local/mongodb/data/shard/config/mongod.lock >>/var/log/mongo.log #删除mongDb的lock文件

/usr/local/mongodb/bin/mongod --port 27027 --dbpath /usr/local/mongodb/data/shard/config --fork --logpath /usr/local/mongodb/data/shard/config/config.log >>/var/log/mongo.log

echo "$DATASTRING MongoDB_config"

fi

sleep 3

done

我是菜鸟,大家有更好的办法麻烦分享一下

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: