supervisor 监控redis & mongodb

安装

  1. 安装python
    brew install python

  2. 安装pip
    wget https://bootstrap.pypa.io/get-pip.py
    sudo python get-pip.py

  3. 安装supervisor
    pip install supervisor

配置文件

  1. 生成默认的配置文件
    echo_supervisord_conf > /etc/supervisord.conf

  2. 编辑配置文件 参考地址

  3. 附我的配置文件 在默认的配置文件后面添加

[supervisord]
nodaemon=true
[program:redis]
command=/usr/local/bin/redis-server /usr/local/etc/redis.conf
autostart=true
autorestart=true
startsecs=3

[program:mongod]
command=/usr/local/bin/mongod --dbpath /Users/weixuan/Database/mongodbdata
autostart=true
startsecs=3
autorestart=true

基本使用

Supervisord安装完成后有两个可用的命令行supervisorsupervisorctl
常见的命令如下:

命令 说明
supervisord 初始启动Supervisord,启动、管理配置中设置的进程
supervisorctl stop programxxx 停止某一个进程(programxxx),programxxx为[program:chatdemon]里配置的值,这个示例就是chatdemon
supervisorctl start programxxx 启动某个进程
supervisorctl restart programxxx 重启某个进程
supervisorctl stop groupworker 重启所有属于名为groupworker这个分组的进程(start,restart同理)
supervisorctl stop all 停止全部进程,注:start、restart、stop都不会载入最新的配置文件
supervisorctl reload 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程
supervisorctl update 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。注意:显示用stop停止掉的进程,用reload或者update都不会自动重启

常见命令

supervisorctl tail programname 查看programname的日志
supervisorctl tail redis 查看日志

错误代码

ERROR (abnormal termination)

解决办法:
supervisorctl tail programname 查看programname的具体日志信息

Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.

解决办法:

sudo unlink /tmp/supervisor.sock
or
sudo unlink /var/run/supervisor.sock

gave up: redis entered FATAL state, too many start retries too quickly

解决办法:

修改redis.conf的daemonize为no

brew安装的redis,配置文件在 /usr/local/etc/redis.conf

小技巧:vim查找

# 要自当前光标位置向上搜索
/pattern
#pattern   表示要搜索的特定字符序列
# 要自当前光标位置向下搜索 
?pattern

# 精确查找
# 要查找单个的   place,请键入该单词,并在其前后各加一个空格
 /   place 

其它

终止mongodb

正常:

use admin
db.shutdownServer()

强制:

kill -9 pid
鄂ICP备13000209号-1

鄂公网安备 42050602000277号