呼啸山庄 发表于 2016-4-26 10:40:21

zabbix的自定义KEY(linux)

   小弟在监控redis时想通过写脚本自定义KEY,但是一直报不支持的KEY,因此测试了三个KEY,如下图


在zabbix服务端抓取数据,发现有些自定义KEY支持,但是大部分KEY都不支持,




请教各位大神,这是什么原因呢?
这么简单的shell命令自定义的KEY都不支持,还打算自定义一个复杂脚本的KEY!!!我也是醉了

枫狐狸 发表于 2016-4-27 09:33:27

本帖最后由 枫狐狸 于 2016-4-27 09:42 编辑

自定义KEY只能取一个值,所以你第一个成功了,后面两个失败。

UserParameter=自定义KEY,脚本或command

脚本或command返回值只能是一个,多个值即为失败。想要取多个值的,需要用脚本将取值逐行输出


给你个例子参考:
UserParameter=ifx.tab.discovery,/home/zabbix/zabifx/ifx_discovery.sh
UserParameter=tablespace[*],/home/zabbix/zabifx/ifx_check.sh $1 $2

====ifx_check.sh============================
#!/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=========================
#!/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



ybx13218464908 发表于 2016-4-27 09:40:47

zabbix返回值必须是一个,想用多值的话请使用lld

呼啸山庄 发表于 2016-4-27 10:27:54

枫狐狸 发表于 2016-4-27 09:33
自定义KEY只能取一个值,所以你第一个成功了,后面两个失败。

UserParameter=自定义KEY,脚本或command


谢谢你的回答。问题已经解决了,不过解决的方法和你的有所不同。
第一个KEY是正常的;
第二个KEY监控的是新安装的redis,redis-cli info的绝对路径是/usr/local/bin/,而zabbix客户端默认的脚本的PATH不存在此路径。因此KEY中的命令应该是/usr/local/bin/redis-cli info;
第三个KEY没有值返回,因此报ZBX_NOTSUPPORTED
页: [1]
查看完整版本: zabbix的自定义KEY(linux)