我们有 SSIS 任务(dtexec
),由 Windows 任务管理器执行并由 Nagios 监控。但是,Nagios 经常会报告警告,因为退出代码为空(应该是 0)。如果在任务运行时进行检查,就会发生这种情况(从 GUI 角度来看,任务管理器会显示一种临时退出代码)。
define service{
use generic-service
host_name ms.example.com
service_description My task name
retry_interval 10
check_command check_schedtask!"TaskName=\\"\\Category\\My task name\\"" "ExitCode=0x0" "Elapsed=1.0:10" "LastEvent"
contact_groups
contacts Annoyed people
notification_interval 240
servicegroups functional_tasks
}
如何忽略检查期间正在运行的任务?
答案1
当进程返回 NULL()? 时,您可以告诉检查向 nagios 返回代码 3,这意味着状态为 UNKNOWN。
有关代码的更多信息请参见此处: https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/3/en/pluginapi.html
答案2
或者你可以使用这个 Powershell 脚本来监控你的计划任务:
http://outsideit.net/check-ms-win-tasks/
输出如下所示:
1 / 11 tasks failed! {Taskname: "check_ms_win_tasks_subfolder_01_task" (Author: F1REBASE\Willem)(Exitcode: -2147023673)(Last runtime: 12/06/2014 11:35:56)} 1 / 11 tasks still running! {Taskname: "SamsungMagician" (Author: SamsungMagician)(Exitcode: 267009)(Last runtime: 06/21/2015 11:37:55)} | 'Total Tasks'=11, 'OK Tasks'=9, 'Failed Tasks'=1, 'Running Tasks'=1
您可以使用一项服务监控主机上的所有计划任务,并排除不需要的任务。