1、
https://www.yoyoask.com/?p=3501
Zabbix虽然自带了许多Key,能满足大多数的监控需求。但是真正在生产上还是有很多不足的,比如想监控Nginx连接数、MySQL的状态信息都没有Key能实现,所以Zabbix还提供了一种自定义Key来实现这种需求。这就是Zabbix的UserParameter功能。
一、创建UserParameter
要创建UserParameter的话需要在zabbix_agentd.conf中进行配置(可以设置多个自定义key),这里有2种方法来修改配置文件:
1.直接修改zabbix_agentd.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
1.在配置文件中增加UserParameter的配置。以一个简单示例来进行说明:定义了一个名为os.mem.used的key,然后这个key通过后面指定的命令或脚本来获取需要的值,然后客户端将这个值发送给服务端,或者等服务端来获取(注意这个key要zabbix里没有声明过,唯一):
zabbix_agentd.conf :
UnsafeUserParameters=0 #是否允许自定义脚本传递特殊字符作为参数,通常不用开
#UserParameter=key,command #这是一个参考格式
UserParameter=os.mem.used,free -m | awk '/^Mem/ {print $3}' #新增一个key叫作os.mem.used用于查看系统已用内存
2.UserParameter还可以通过脚本来取得多个key的值(如上图配置):
UserParameter=test[*], /usr/local/zabbix/etc/get.sh $1
UserParameter=mysql.status[*],/usr/local/zabbix/scripts/check_mysql.sh $1
UserParameter=check_port[*],/usr/local/zabbix/scripts/check_port.sh -H 127.0.0.1 -p $1
#[*]代表key接受任意个参数,这些参数就是在web端要明确写出来的参数,也是后面命令或脚本中接受的参数,用$1,$2来表示第几个参数。如果command中的命令本身带有$1等信息(如awk命令),需要写为$$1
|
脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
/usr/local/zabbix/etc/get.sh
#!/bin/bash
free -m |grep "Mem"| awk '{print $3}' >/tmp/test.txt
case "$1" in
aa )
cat /tmp/test.txt | awk '{print $1}' | wc -l
;;
bb )
cat /tmp/test.txt | awk '{print $1}' | wc -l
;;
esac
|
二、验证自定义Key
1
2
3
4
5
6
7
|
1、重启修改过配置的Zabbix客户端
2、使用zabbix_get(在服务端)命令看能否获取数据,该命令只能用于获取agent监控方式的key,不能获取sample check、JMX等其他监控方式的key数据
[root@xjjh-test2 log]# /usr/local/zabbix/bin/zabbix_get -s 192.168.6.121 -p 10050 -k "test[aa]"
1
[root@xjjh-test2 log]#
|
1
|
如果上一步正常的话就可以在Zabbix Web端对需要监控的主机新增Item了,Key的名字就是UserParameter里设置的,这里自然就是test[*]了。按照脚本传参就应该是test[aa].如果获取不到数据的话说明key配置有错,在Web界面会提示Not supported,根据提示去做修改.对于设置有错的Key,Zabbix默认是10分钟去取一次数据,这个可以在Administration-->General-->Other中修改.
|
二是在zabbix_agentd.d/下新建conf文件. 如果选择这种方式,一定要确保agentd.conf配置文件中对应的Include选项是开启的,其他配置都大致一样.
如图:
1
|
分类:
监控
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2020-06-29 centos7出现了挖矿病毒:
2020-06-29 ansible安装redis
2018-06-29 Mysql数据库查询数据文件大小
2018-06-29 packert tracer配置路由器