文档章节

一个网站的诞生09--自动监控

brian_2017
 brian_2017
发布于 2017/01/17 09:42
字数 575
阅读 7
收藏 0
部署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进程,这时候运行的就是新代码了。

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

© 著作权归作者所有

brian_2017
粉丝 3
博文 61
码字总数 145216
作品 0
私信 提问
全球说:要给 OneAlert 点100个赞

客户背景 「全球说」 Talkmate,是北京酷语时代教育科技有限公司(酷语科技)旗下产品,酷语科技是一家诞生于中国的语言技术公司,致力于为全球用户提供一个全新的多语言学习和社交网络平台 ...

OneAPM蓝海讯通
2015/09/10
46
0
Node.js 4.0.0:灵雀云和 OneAPM 的整合测试

## 关于 > Node.js 4.0.0 稳定版刚刚推出,备受期待,迫不及待地想用它写点东西;此外,要把 Demo 放到 Internet 上得有一个公网 IP ,看到[灵雀云](http://www.alauda.cn/)挺不错的而且提供...

OneAPM蓝海讯通
2015/09/15
2
0
Node.js 4.0.0:灵雀云和 OneAPM 的整合测试

关于 Node.js 4.0.0 稳定版刚刚推出,备受期待,迫不及待地想用它写点东西;此外,要把 Demo 放到 Internet 上得有一个公网 IP ,看到灵雀云挺不错的而且提供域名解析,简直业界良心,其实早...

OneAPM蓝海讯通
2015/09/15
48
0
微软发布 IE6 倒计时网站

10年前,IE6 诞生,但现在已经是 2012 了,该对 IE6 说拜拜了。 微软发布了一个网站 www.ie6countdown.com/ ,该网站的目的是监控全球的 IE6 浏览器的使用比例,你可以根据这个比例来决定是否...

oschina
2012/07/17
6.6K
68
Monit 5.7 发布,Unix 系统监控工具

Monit 是一个Linux/UNIX系统上开源的进程、文件、目录和文件系统监控和管理工具,可自动维护和修复一些错误的情况。 Monit 5.7发布。2014-02-20 Monit 是一个进程、文件、目录和文件系统监控...

fei
2014/02/21
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

只需一步,在Spring Boot中统一Restful API返回值格式与统一处理异常

统一返回值 在前后端分离大行其道的今天,有一个统一的返回值格式不仅能使我们的接口看起来更漂亮,而且还可以使前端可以统一处理很多东西,避免很多问题的产生。 比较通用的返回值格式如下:...

晓月寒丶
昨天
59
0
区块链应用到供应链上的好处和实际案例

区块链可以解决供应链中的很多问题,例如记录以及追踪产品。那么使用区块链应用到各产品供应链上到底有什么好处?猎头悬赏平台解优人才网小编给大家做个简单的分享: 使用区块链的最突出的优...

猎头悬赏平台
昨天
28
0
全世界到底有多少软件开发人员?

埃文斯数据公司(Evans Data Corporation) 2019 最新的统计数据(原文)显示,2018 年全球共有 2300 万软件开发人员,预计到 2019 年底这个数字将达到 2640万,到 2023 年达到 2770万。 而来自...

红薯
昨天
65
0
Go 语言基础—— 通道(channel)

通过通信来共享内存(Java是通过共享内存来通信的) 定义 func service() string {time.Sleep(time.Millisecond * 50)return "Done"}func AsyncService() chan string {retCh := mak......

刘一草
昨天
58
0
Apache Flink 零基础入门(一):基础概念解析

Apache Flink 的定义、架构及原理 Apache Flink 是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态或无状态的计算,能够部署在各种集群环境,对各种规模大小的数据进行快速...

Vincent-Duan
昨天
60
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部