您的位置:首页 > 运维架构

ZABBIX自定义用户KEY与参数USERPARAMETERS监控脚本输出

2015-11-02 17:12 357 查看

zabbix在模板中预定义了一些key,但通常情况,并不能满足我们的需求。幸运的是zabbix提供了自定义key的方法,因此我们可以灵活的监控各种我们想要监控的数据。

定义配置文件

通过yum安装的zabbix-agent配置文件路径为/etc/zabbix/zabbix_agentd.conf。
大约在这个文件的255行左右,我们可以发现下面的代码:

1

Include=/etc/zabbix/zabbix_agentd.d/

我们自定义的配置,可以放到这个目录。
我们可以创建一个自定义的文件来定义我们需要的key:

1

vim /etc/zabbix/zabbix_agent.d/userparameter_script.conf

文件里面添加这样的内容:

1
2
3
4

# 这个文件监控自定义脚本输出值
# 格式为UserParameter=<key>,<command>

UserParameter=script.date,date

保存之后重启zabbix-agent。

测试获取自定义key的值

在zabbix-server上使用zabbix_get工具获取自定义值。

1
2

shell> zabbix_get -s 100.10.1.2 -k script.date
Fri Apr 24 14:41:18 CST 2015

获取到了上面例子中执行date的结果,说明配置是成功的。

创建一个脚本

首先新建一个script目录来存放我们的脚本,并将这个脚本命名为kucun.sh,我将使用zabbix来监控数据库中的库存表,使用库存数据画图。

1
2

mkdir -p /etc/zabbix/script/
vim /etc/zabbix/script/kucun.sh

我们定义脚本,输入一个店铺号来查询这个店铺中商品数量小于n的条数。
若手动执行查询,查询方式是这样的:

1
2

shell> /etc/zabbix/script/kucun.sh bj001 30
2

输出2即表示有2个商品数量小于30。
下面是脚本的内容:

1
2
3
4
5
6
7
8

#!/bin/bash
shop_id=$1
number=$2
dbhost="100.10.1.2"
dbuser="monitor"
dbpasswd="21"
sql="SELECT count(*) FROM lsp_cus.menu WHERE shop_no = \"$shop_id\" AND date = UNIX_TIMESTAMP(DATE_FORMAT(NOW(),'%Y-%m-%d')) AND num - sale < \"$number\""
mysql -h$dbhost -u$dbuser -p$dbpasswd -Ne "$sql"

使用脚本查询的结果创建key

重新编辑

1

vim /etc/zabbix/zabbix_agent.d/userparameter_script.conf

文件修改为:

1
2
3

# 这个文件监控自定义脚本输出值
# 格式为UserParameter=<key>,<command>
UserParameter=script.kucun[*],/etc/zabbix/script/kucun.sh $1 $2

通过zabbix-server查询

在zabbix服务器上使用zabbix_get工具查询店铺号001,库存小于30的商品数量。

1
2

shell> zabbix_get -s 100.10.1.2 -k script.kucun[001,30]
18

可以看到成功了。

上面用到方法的一些解释

UserParameter=key[*],command
key为唯一值,[*]表示参数。
command为要执行的命令或脚本,key的[*]里面的参数一一对应$1到$9,一共9个参数。$0表示脚本命令。返回结果数据最大为512KB。
参数禁止使用下列字符:\ ‘ ” ` * ? [ ] { } ~ $ ! & ; ( ) <> | # @

脚本的命令行参数可以通过搜索引擎搜索相关文章。

转自 http://www.qiansw.com/zabbix-user-parameters-key-script.html
一些坑------

有问题首先查看 /var/log/zabbix 看看怎么说

权限问题 配置

$vi /etc/zabbix/zabbix_agentd.conf AllowRoot属性

修改后启动失败 $setenforce 0 关闭 selinux

$/etc/selinux/config SELINUX=disabled
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: