Zabbix:试图监视脚本的运行时间,它是如何完成的?

我是一个Zabbix的总noob,这是我的第一个任务…我需要使用Zabbixbuild立一个监视器,并监视一个脚本运行多久。 脚本看起来像这样:

device0="/home/build/aggregator/scripts/aggregator.lock" if [ -e "$device0" ] then echo process is already running else touch $device0 java -Xms6g -Xmx6g -jar /home/build/aggregator/aggregator-1.0-SNAPSHOT-jar-with-dependencies.jar rm $device0 fi 

该脚本创build一个名为aggregator.lock的文件,确保脚本只运行一次,脚本在Crontab中configuration为每分钟运行一次。 我创build了下一个项目: 在这里输入图像说明在这里输入图像说明aggregator.lock文件存在时,Zabbix vfs.file.exists返回:1。

 [root@zabbix ~]# zabbix_get -s 10.200.XX -k vfs.file.exists[/home/build/aggregator/scripts/aggregator.lock] 1 [root@zabbix ~]# 

并且vfs.file.time检查返回:1400057821(Unix时间)。

虽然aggregator.lock文件不存在,但Zabbix返回:0.而vfs.file.time检查返回:ZBX_NOTSUPPORTED。

检查每30秒运行一次,以尽量减lessnetworking中的stream量,但脚本每次运行约10-20秒。 所以我需要find监控剧本运行时间的最佳方法,达到这个目的的最佳方法是什么?

你需要监视一个进程运行多久,或者如果进程花费太长时间,你需要提醒吗?

如果是前者,则可能希望修改脚本,以便使用zabbix_sender发送有关运行时间的信息,如下所示:

 #!/bin/bash date1=$(date '+%s') sleep 5 date2=$(date '+%s') duration=$(($date2-$date1)) zabbix_sender -z 127.0.0.1 -s 'my host' -k duration -o $duration 

在这里,“睡眠5”是你的“java”命令。

如果是后者,则可能希望修改脚本,以便在脚本启动时发送值“1”,结束时发送值“0”,如下所示:

 #!/bin/bash zabbix_sender -z 127.0.0.1 -s 'my host' -k started -o 1 sleep 5 zabbix_sender -z 127.0.0.1 -s 'my host' -k started -o 0 

然后,您可以创build类似于以下内容的触发器,以提醒进程是否耗时过长:

 {my host:started.last()}=1 & {my host:started.nodata(45)}=1 

如果修改脚本不是一个选项,那么你可能希望使用proc.num []项目:

 proc.num[java,,,aggregator-1.0-SNAPSHOT-jar-with-dependencies.jar] 

每隔15秒进行一次检查,警报是最后三个值(跨越30秒)显示进程正在运行:

 {my host:proc.num[java,,,aggregator-1.0-SNAPSHOT-jar-with-dependencies.jar].min(#3)}=1 

这也可能是最简单的解决scheme。