一个站点的诞生09--自己主动监控

部署Web App。须要买一个域名,我推荐http://www.namecheap.com/,用信用卡或者paypal付款,一年10刀。
假设须要VPS,买Linode.com的,它家新推出每月10刀的主机,性能绝佳,假设选择东京的机房,从大陆訪问非常快,用海外的主机不须要备案,这是最大的卖点。

站点的tornado代码执行了,站点能够訪问了。有时候站点会由于各种原因崩溃,比方被攻击。代码bug,流量太大等等。

这时候就须要一个自己主动监控脚本。这个脚本监控站点的tornado进程,每隔几秒检測一次进程。假设发现进程不在了,就又一次启动进程。

有了它,你就不用半夜被叫醒重新启动站点了。



zuijiacanting.com的自己主动监控脚本类似这样,moniter_zjct.py
--------------------------------
#!/usr/bin/env python
#!-*- coding:utf-8 -*-

import os
import time
import sys

class MonitorZjct:
    def run(self):
        while True:
            time.sleep(5)
            try:
                ret = os.popen('ps axu|grep myweb_server.py|grep -v grep|grep python').readlines()
                if len(ret) == 0:
                    os.system("cd /home/xxxx/yyy/bbb/; sudo ./ggg/myweb_server.py")
            except:
                print "Error", sys.exc_info()[1]


if __name__ == "__main__":
    mz = MonitorZjct()
    mz.run()
--------------------------------
这个py代码,每隔5秒检測一下myweb_server.py进程是否存在,假设不存在,就又一次启动这个进程。

这个进程须要开机自己主动启动。依照例如以下方式操作:

1. 创建/etc/init.d/monitor_zjct文件,内容例如以下:
--------------------------------
#!/bin/bash

#cp this file to /etc/init.d/
EXE="/home/xxx/monitor_zjct.py"
PIDFILE=/var/run/monior_zjct.pid

d_start(){
  start-stop-daemon --start --quiet --background --m --pidfile $PIDFILE --exec $EXE
}

d_stop(){
  start-stop-daemon --stop --quiet --pidfile $PIDFILE
  rm -rf $PIDFILE
}

case $1 in
    start)
        d_start
        ;;
    stop)
        d_stop
        ;;
    restart)
        d_stop
        sleep 1
        d_start
        ;;
    *)
        echo "usage: $NAME {start|stop|restart}"
        exit 1
        ;;
esac

exit 0
--------------------------------

这个脚本以daemon的方式启动monitor_zjct.py。

2. 在/etc/rc.local里。增加一行语句"/etc/init.d/monitor_zjct start"。

3. 每次开机会自己主动启动monitor_zjct.py,它启动后,会检查进程。发现tornado程序没有执行,于是启动tornado程序,站点就開始执行了。



要想关闭tornado程序,须要先关掉monitor_zjct.py,否则它发现tornado进程不再,就会启动新的tornado进程。

假设要更新代码,每次更新代码之后。要kill掉tornado进程。5秒后。monitor_zjct.py会再次启动tornado进程,这时候执行的就是新代码了。

开机启动的自己主动监控大多与此类似,大同小异。

原文地址:https://www.cnblogs.com/gccbuaa/p/6943275.html