如果一组 Windows 2003 服务器上的任何计划任务失败(退出状态码不是 0),我正在寻找一种方法来获得警报。脚本、商业应用程序和监控工具(如 Nagios)的插件都可以考虑。
ActiveXperts 网络监视器出现在大多数搜索结果中,但计划任务监视功能只是大型商业网络监视包的一小部分。
下面是一个批处理文件脚本,它将计划任务结果转储到一个 csv 文件中,该文件可以使用 SSIS 导入 SQL Server。
rem MC: dump the scheduled task results into the specified outfile
@echo off
set outfile=c:\temp\scheduled_tasks.csv
rem MC: the for loop skips over the first blank that schtasks adds to the output
for /f "TOKENS=*" %%A in ('schtasks /query /fo csv /v') do ( echo %%A >> %outfile% )
这种方法的缺点是,将 csv 文件导入数据库表,运行查询以查找不为 0 的状态代码,并在发现任何内容时发送带有警报的电子邮件,这似乎是一个繁琐的设置。我宁愿使用现有的解决方案,也不愿从头开始创建复杂的自定义系统。
我这样做是计划工作的一部分。我运行的所有计划作业都是脚本。即使它是一个图形应用程序,我也会从 .bat 文件启动它。所有脚本都包含错误检查,并且它们使用 osql 将一行附加到“作业监控”表中。然后表上的一个查询告诉我哪些作业成功、失败或(由左连接提供)没有报告任何状态。我在自己的工作站上将此查询作为计划作业运行,它会向我发送一份报告。
JR
使用 ADODB 自己解析“schtasks”的输出。
这是一个小的 VBScript 程序,它将使用预制的 IF/THEN 块解析输出,“最后结果”不等于零,“状态”为“无法启动”。您可以根据需要编写更多条件,并替换代码以根据需要对故障条件采取行动。
您还可以查看运行计划任务/脚本服务器。我使用AdTempus。
您还可以生成大量报告和警报。您甚至可以生成工作流程图。
更改bat文件中的行有帮助吗?
echo dump不成功的任务,会dump不成功的任务名称和状态码
这里的一个问题是,如果任务因为服务器被软管而没有运行,那么对该服务器的任何监控也会失败。
查看https://cronitor.io。这是一项针对计划作业的简单监控服务,听起来正是您正在寻找的。