【问题标题】:Python (2.7) script monitoring and notification systemPython(2.7)脚本监控和通知系统
【发布时间】:2014-04-14 19:36:43
【问题描述】:

我已经阅读了很多关于监控 python 脚本的其他帖子,但一直找不到像我希望做的那样的事情。本质上,我有 2 个运行 Linux 的桌面。每台计算机都有多个 24/7 不间断运行的 python 脚本。其中大多数是网络抓取,而其他一些则在清理和处理数据。我已经在它们中构建了相当广泛的异常处理,可以在发生任何错误或崩溃时向我发送电子邮件,但有些情况我无法通过电子邮件发送(例如,如果脚本本身只是冻结或计算机本身崩溃,或计算机失去互联网连接等)

所以,我正在尝试构建一种签入服务,其中 python 脚本在整个运行过程中多次签入服务,如果它在 X 时间内没有签入,则发送我的电子邮件。我不知道这是否可以通过信号或异步模块和/或套接字来完成,或者什么是开始的好地方。

有没有人写过这样的东西?或者可以指出我正确的方向吗?

【问题讨论】:

标签: python python-2.7 notifications monitoring


【解决方案1】:

看看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

还要检查文档,它有关于如何设置警报和发送电子邮件的非常好的示例。

【讨论】:

  • 这听起来很完美。由于我正在运行没有 init.d 支持(仅 systemd)的 Arch Linux,我想这个过程会有点不同?
  • 我对 Arch Linux 一点也不熟悉,但我无法想象它会有什么不同。您可以将此脚本放在文件夹 foooo 而不是 /etc/init.d
  • 我不知道我是不是智障,还是什么...但我似乎找不到monit 配置文件。我检查了文档说应该在的所有地方,但它似乎不在任何地方。
  • 我在 /etc/monit.conf
【解决方案2】:

Upstart 是一个不错的选择,但恐怕它仅适用于基于 Ubuntu 和 Redhat 的发行版

【讨论】:

  • 不幸的是我正在运行 Arch Linux,所以 Upstart 似乎是不可能的:/
猜你喜欢
  • 2021-02-14
  • 1970-01-01
  • 2013-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-20
相关资源
最近更新 更多