本帖最后由 枫狐狸 于 2016-4-27 09:42 编辑
自定义KEY只能取一个值,所以你第一个成功了,后面两个失败。
UserParameter=自定义KEY,脚本或command
脚本或command返回值只能是一个,多个值即为失败。想要取多个值的,需要用脚本将取值逐行输出
给你个例子参考:
[Shell] 纯文本查看 复制代码 UserParameter=ifx.tab.discovery,/home/zabbix/zabifx/ifx_discovery.sh
UserParameter=tablespace[*],/home/zabbix/zabifx/ifx_check.sh $1 $2
====ifx_check.sh============================
[Shell] 纯文本查看 复制代码 #!/bin/bash
EQ_DATA="$2"
ZBX_REQ_DATA_TAB="$1"
SOURCE_DATA=/tmp/informix_tablespace.log
case $2 in
maxmb) grep -E "\<$ZBX_REQ_DATA_TAB\>" $SOURCE_DATA |awk '{print $3}';;
free) grep -E "\<$ZBX_REQ_DATA_TAB\>" $SOURCE_DATA |awk '{print $4}';;
autopercent) grep -E "\<$ZBX_REQ_DATA_TAB\>" $SOURCE_DATA |awk '{print $5}';;
*) echo $ERROR_WRONG_PARAM; exit 1;;
esac
exit 0
=======================================
====ifx_discovery.sh=========================
[Shell] 纯文本查看 复制代码 #!/bin/bash
TABLESPACE=`cat /tmp/informix_tablespace.log |awk '{print$2}'|awk ' {print}'`
COUNT=`echo "$TABLESPACE" |wc -l`
INDEX=0
echo '{"data":['
echo "$TABLESPACE" | while read LINE; do
echo -n '{"{#TABLENAME}":"'$LINE'"}'
INDEX=`expr $INDEX + 1`
if [ $INDEX -lt $COUNT ]; then
echo ','
fi
done
echo ']}'
=======================================
===informix_tablespace.log======================
host aaa 20000.0 15574.49 22.12
host bbb 24000.0 21019.25 12.41
host test 3999.99 3996.66 0.08
=======================================
ifx_discovery.sh执行结果返回三个表空间名:
{"data":[
{"{#TABLENAME}":"aaa"},
{"{#TABLENAME}":"bbb"},
{"{#TABLENAME}":"test"}]}
tablespace【*】,/home/zabbix/zabifx/ifx_check.sh $1 $2 跟据 ifx_discovery 返回的表空间名进行取值
tablespace【*】为自定义KEY
$1 这里代表表空间名称
$2 代理自定义参数 maxmb、free、autopercent
可以参考:http://www.iyunv.com/thread-141275-1-1.html
|