目前,我们有一个24/7全天候运行的批处理程序。它实际上测试了几个页面,如果它在页面上发现任何错误,它只会向我们发送一封电子邮件。如果没有电子邮件,我们假设该程序仍在运行。
话虽如此,我们实际上需要一种服务(或许)或其他方式来了解程序是否已停止运行。该程序安装在24/7全天候开放的测试机器中。目前,我们正在考虑某种推送监控服务。第三个系统方将被我们的程序ping通,如果它没有收到预期的ping,它将提醒我们。你知道这样的服务吗?或者你能推荐其他选择吗?谢谢!
答案 0 :(得分:0)
关于监视脚本的最佳方法是让它定期将其状态和/或检查点记录到文件中。脚本的每个阶段/主要迭代都会记录到文件或向syslog提交消息。或者,如果批处理脚本经常迭代超过特定的代码点,则可以插入运行状况检查计时器。当发生指定的超时时,您将把消息放入日志文件中。
伪代码可能看起来像这样..
check_timeout
is current time > timeout
Yes -> write a log message and set timeout to a point x seconds/minutes/hours into the future.
No -> Do nothing and return from function
endcheck_timeout
Main
set timeout to 0
loop
check_timeout
do processing
endloop
endmain
或者,您可以更改check_timeout例程以使用zabbix_sender将消息转发到监视系统(例如Zabbix)以使用当前时间更新项目。然后你会写一个触发器来激活,如果上次更新的时间是平均检查间隔的1.5倍或更多倍(取决于你的平均负载,但你可能有时间差异)。
答案 1 :(得分:0)
有两种解决方案:
对于(1),请下载pslist和bmail。将它们与以下批处理脚本一起使用:
@echo off
:start
set SECONDS=10
pslist | findstr /i YOUR_BATCH_SCRIPT > isrunning.txt
for %%A in (isrunning.txt) do if %%~zA==0 bmail -s SMTPSERVER -t TOEMAIL -f FROMEMAIL -h -a "Batch script is down!"
choice /C a /T %SECONDS% /D a
goto :start
注意:您需要编辑YOUR_BATCH_SCRIPT以及bmail(smtpserver等)的参数以适合您的环境。
对于(2),您可以使用Application Monitor之类的实用程序在崩溃时重新启动批处理程序。
答案 2 :(得分:0)
伙计们,感谢大家的回复,我感谢您的帮助。无论如何,我回来通知你(以及其他可能已经并将有相同需求的人),我已经找到了符合我要求的服务。我现在正在使用免费的Pushmon服务。它实际上即将推出但我已经通过邀请代码尝试了它。我已经使用了几个星期已经有了我们新的预定测试程序,到目前为止,它还没有让我失望。