hualinxu ext zbx 1.6:zabbix5 用户自定义参数 自定义key(仅agent有效)

目录

一、 用户自定义参数简介

1.1 介绍

1.2 UserParameter语法 

1.2.1 自定义key中对特殊字符的处理

1.2.2 key的返回值

二、例子

2.1 需求及分析

2.1.1 需求

2.1.2 分析

2.2 实例操作

2.2.1 修改agent配置

2.2.2 用命令测试

2.3 测试一下监控效果


当我们写监控的时候,发现系统自带的key不能满足要求时,那么就需要自定义监控项items 的key了。你可以编写一个命令来检索所需的数据,并将其包含在用户自定义参数agent 配置文件中 ('UserParameter' 参数配置),UserParameter就包括了key和所使用的获取监控数据的命令。

注意:用户自定义参数(UserParameter)仅支持Agent的方式,对于其他方式它是不支持的

一、 用户自定义参数简介

1.1 介绍

有时候我们想让被监控端执行一个zabbix没有预定义的检测,zabbix的用户自定义参数功能提供了这个方法。

用户定义参数可以用来帮助用户实现通过Zabbix agent执行非Zabbix原生的 agent check。

你可以编写一个命令来检索所需的数据,并将其包含在用户自定义参数agent 配置文件中 ('UserParameter' 参数配置)。

PS:用户自定义参数(UserParameter)仅支持Agent的方式,对于其他方式它是不支持的。

1.2 UserParameter语法 

我们可以在agent客户端配置文件zabbix_angentd.conf里面配置UserParameter,语法如下:

#UserParameter可以有多个,key不能相同,不要和原有的产生冲突
UserParameter=<key>,<command>

key名称的定义范围如下:

所有的数字(0~9)
所有的小写字母(a~z)
所有的大写字母(A~Z)
下画线(_)
 横线(-)
点(.)

 

除了上面这种写法,还支持参数传递的写法,具体如下:

 UserParameter=key[*], command $1 $2 $3 ...
参数描述
keyItem key具有唯一性,定义[*]可以接收参数
commandZabbix将[]中的参数传递给命令中的$1,..,$9,将值作为命令的一部分

PS:例子

#把$2、$1的值传递给key,在agent配置文件中可以这样写
UserParameter=wc[*] ,grep -C "$2" $1

#zabbix_get执行测试命令可以写成这样
zabbix_get -s 127.0.0.1 -k wc [/etc/passwd,root]

1.2.1 自定义key中对特殊字符的处理

如果UserParameter包含\' ” `*?[ ]{}~$!&;( )<>|#@这些字符,在默认情况下,Zabbix对这些参数,是无法正常处理的,需要在zabbix_agentd.conf中开启参数UnsafeUserParameters,并将其值设置为1。最后重启zabbix_agentd服务

PS:在默认情况下,$1、$2、$3、$4代表位置参数1、2、3、4,如果在定义的字符串中出现$后面接数
字的情况,则需要用$$。
例如awk ’{ print $$2 }’

1.2.2 key的返回值

自定义参数可以返回文本(character、log、text)和空值,如果返回的是一个无效值,则显示ZBX_NOTSUPPORTED。

 

二、例子

我们来一个简单的例子,我在《zabbix5 agent配置主动模式》的文章中,添加了多了1个agent并配置了主动模式,大概情况如下表:

主机名

IP地址(外网)

IP地址(内网)

描述

vm82

ens32:192.168.128.82

ens33:192.168.3.82

  1. Centos8.2最小化(2内存)
  2. Zabbix5.0服务端

vm821

ens32:192.168.128.21

ens33:192.168.3.21

  1. Centos8.2最小化(1.5内存)
  2. Zabbix5.0 agent客户端,被动模式

vm822

ens32:192.168.128.22

ens33:192.168.3.21

  1. Centos8.2最小化(1.5内存)
  2. Zabbix5.0 agent客户端,主动模式

那么我就在上面的配置中删除之前所有主机配置,为了方便实验。

2.1 需求及分析

2.1.1 需求

假如公司有centos6、centos7、centos8 3种版本的amd64位系统,版本不一样安装方式也不一样,所以我想有一个key,显示主机所以的系统版本的。

下面是公司存在的centos 3种系统,如下:

#CentOS6
[root@vm65 ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)
#CentOS7
[root@vm76 ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 
#CentOS8
[root@vm821 ~]# cat /etc/redhat-release 
CentOS Linux release 8.2.2004 (Core)

要求就成:CentOS6、CentOS7、CentOS7,这样的

2.1.2 分析

可以先用shell命令写出达到的效果,如下:

awk '{print $1$(NF-1)}' /etc/redhat-release|cut -c1-7
#效果如下:
[root@vm65 ~]# awk '{print $1$(NF-1)}' /etc/redhat-release|cut -c1-7
CentOS6
[root@vm76 ~]# awk '{print $1$(NF-1)}' /etc/redhat-release|cut -c1-7
CentOS7
[root@vm821 ~]# awk '{print $1$(NF-1)}' /etc/redhat-release|cut -c1-7
CentOS8

我把它变成 UserParameter的写法,key我设置为hualinux.sys.version,又因包含有特别字符需要加多一个$号,最终变成

UserParameter=hualinux.sys.version,awk '{print $$1$$(NF-1)}' /etc/redhat-release|cut -c1-7

2.2 实例操作

2.2.1 修改agent配置

在agent客户端vm821和vm822,修改配置,操作如下:

#开启 UnsafeUserParameters
cd /etc/zabbix/
#备份配置
cp zabbix_agentd.conf zabbix_agentd.conf.$(date +%y%m%d)
# zabbix默认过滤掉特殊字符,以增加安装性,设置 UnsafeUserParameters=1
sed -i '/UnsafeUserParameters=/s/0/1/' zabbix_agentd.conf
sed -i '/UnsafeUserParameters=/s/# //' zabbix_agentd.conf


#直接放在UserParameter中发现有问题,$(NF-1)取不到值,所以直接起一个sh脚本了
mkdir -p /disk1/zabbix_sh
cat>/disk1/zabbix_sh/sys.version.sh<<EOF
#!/bin/bash
awk '{print \$1\$(NF-1)}' /etc/redhat-release|cut -c1-7
EOF
cat /disk1/zabbix_sh/sys.version.sh
sh /disk1/zabbix_sh/sys.version.sh 

#直接在尾部添加 UserParameter=hualinux.sys.version,
#awk \'{print $$1$$(NF-1)}\' /etc/redhat-release|cut -c1-7
cat>>zabbix_agentd.conf<<EOF
UserParameter=hualinux.sys.version,sh /disk1/zabbix_sh/sys.version.sh
EOF

#重启agent
systemctl restart zabbix-agent
systemctl status zabbix-agent
#效果如下:
[root@vm821 ~]# grep UnsafeUserParameters= /etc/zabbix/zabbix_agentd.conf
UnsafeUserParameters=1
[root@vm821 zabbix]# tail -1 zabbix_agentd.conf
UserParameter=hualinux.sys.version,sh /disk1/zabbix_sh/sys.version.sh

2.2.2 用命令测试

在zabbix服务端用命令测试一下效果

#使用zabbix_get测试一下被动模式,主动模是不能用zabbix_get测试的
[root@vm82 ~]# zabbix_get -s 192.168.3.21 -k hualinux.sys.version
CentOS8

 

2.3 测试一下监控效果

打开zabbix web,添加一个监控项,具体怎么添加监控项,我这里我就不说了,可以回看《zabbix 配置流程讲解

被动模式的vm821,配置如下图所示:

vm822,主动模式添加监控项,如下所示:

最后看到效果如下所示: 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值