Python(2.7)脚本监控和通知系统

时间:2014-04-14 19:36:43

标签: python python-2.7 notifications monitoring

我已经阅读了很多关于监控python脚本的帖子,但是我们还没有找到类似我希望做的事情。基本上,我有两个运行Linux的桌面。每台计算机都有多个python脚本,每周7天,每天24小时不间断运行。其中大多数是网络抓取,而其他一些是擦洗和处理数据。我已经构建了非常广泛的异常处理,在发生任何错误或崩溃的情况下向我发送电子邮件,但在某些情况下我无法通过电子邮件发送电子邮件(例如脚本本身是否会冻结或计算机本身崩溃,或计算机失去互联网连接等。)

所以,我试图构建一种签到服务,其中python脚本在整个运行过程中多次检入服务,如果它没有办理登机手续在X时间内,然后给我发电子邮件。我不知道这是否可以通过信号或asyncore模块和/或套接字来完成,或者甚至是一个好的地方甚至可以开始。

有没有人有任何写这样的经历?或者可以指出我正确的方向?

2 个答案:

答案 0 :(得分:2)

查看monitsupervisord等监督工具。 这些工具是为了完成您所描述的而构建的。 例如:为python进程创建一个简单的init.d脚本:

PID_FILE=/var/run/myscript.pid                                               
LOG_FILE=/mnt/logs/myscript.log                                                  
SOURCE=/usr/local/src/myscript                                           

case $1 in                                                                      
  start)                                                                        
    exec /usr/bin/python $SOURCE/main_tread.py >> LOG_FILE 2>&1 &                     
    echo $! > $PID_FILE                                                         
    ;;                                                                          
  stop)                                                                         
    kill `cat ${PID_FILE}`                                                      
    ;;                                                                          
  *)                                                                            
    echo "Usage: wrapper {start|stop}"                                          
    ;;                                                                          

esac                                                                            
exit 0  

然后将其添加到monit配置:

check process myscript pidfile /var/run/myscript.pid
  start program = "/etc/init.d/myscript start"
  stop program = "/etc/init.d/myscript stop"

check file myscript.pid path /var/run/myscript.pid
  if changed checksum then alert

另外,检查文档,它就如何设置警报和发送电子邮件有很好的例子。

答案 1 :(得分:0)

Upstart是一个不错的选择,但我担心它只适用于基于Ubuntu和Redhat的发行版