注:此处使用的客户端和服务端版本均为 ubuntu 2204
自定义模板和监控项实现过程
- 在Zabbix 被监控主机上编写自定义监控项的取值的脚本,并加执行权限
- 在Zabbix 被监控主机上的配置文件中添加自定义监控项,指定 key 和 对 key 赋值的脚本及参数
- 在Zabbix Server 上使用 zabbix_get 工具测试是否能取到自定义监控项信息
- 在Zabbix Web 创建模板,在模板中添加自定义监控项
- 在Zabbix Web 将模板关联至被监控的主机
- 导出自定义模板可以在其它 Zabbix Server 复用
除了自定义模板,也可以从zabbix网站查找适合自已的模板
https://share.zabbix.com/
自定义监控项
系统内置的监控项如下
https://www.zabbix.com/documentation/6.0/zh/manual/config/items/itemtypes/zabbix_agent
内置的监控项无法满足要求,可以自定义监控项
自定义监控项配置
监控项键值的格式
https://www.zabbix.com/documentation/6.0/zh/manual/config/items/item/key
客户端可以自定义监控项,在Zabbix Agent 配置文件添加内容,格式如下:
#cat /etc/zabbix/zabbix_agentd.conf
#cat /etc/zabbix/zabbix_agent2.conf
UserParameter=<key>,<shell command>
Include=/etc/zabbix/zabbix_agentd.d/*.conf
#或者创建独立的自定义文件
#cat /etc/zabbix/zabbix_agentd.d/*.conf
#cat /etc/zabbix/zabbix_agent2.d/*.conf
UserParameter=<key>,<shell command>
key 必须整个系统唯一。注意大小写是敏感的, Key名允许的字符如下:
0-9a-zA-Z_-.
key使用 [*] 用于定义该key接受括号内的参数。参数需在配置监控项时给出;参数禁止使用下列字符:\
’ ” ` * ? [ ] { } ~ $ ! & ; ( ) <>
Command:命令用于生成key对应的值。可以在命令中使用位置引用$1 … $9来引用监控项Key中
的相应参数。Zabbix解析监控项Key的[]中包含的参数,并相应地替换$1,…,$9。$0会替换为完
整的原始命令(在对$0,…,$9执行替换之前的命令)运行。不管位置参数($0,…,$9)是用双引号
( “ )还是单引号( ’ )括起来,都会解析位置引用
测试监控项
在Zabbix Agent 上执行测试
zabbix_agent -t "在客户端定义的key名"
在Zabbix Server上可以使用zabbix_get工具获取自定义监控项
zabbix_get -s 客户端IP -p 10050 -k "在客户端定义的key名"
宏Macros
另外Zabbix 支持用户自定义宏,即支持变量定义
自定义宏格式为: {$macrosz_name}
官方文档:
https://www.zabbix.com/documentation/6.0/zh/manual/appendix/macros
自定义监控项配置案例
取根文件系统的空间利用率
root@ubuntu:~# cat /etc/zabbix/zabbix_agentd.d/test.conf
UserParameter=root_filesystem_use,df|awk -F' +|%' '$7 == "/" {print $5 }'
#重启客户端
systemctl restart zabbix-agent.service
#客户端测试
root@ubuntu:~# zabbix_agentd -t root_filesystem_use
root_filesystem_use [t|18]
#服务器端测试
root@ubuntu:~# apt install zabbix-get
root@ubuntu:~# zabbix_get -s 172.27.13.43 -p 10050 -k "root_filesystem_use"
18
自定义监控项实现连接数
root@ubuntu:~# cat /etc/zabbix/zabbix_agentd.d/test.conf
UserParameter=tcp_state_estab,ss -ant|grep -c ESTAB
#重启客户端
systemctl restart zabbix-agent.service
root@ubuntu:~# zabbix_get -s 172.27.13.43 -p 10050 -k "tcp_state_estab"
3
实现自定义监控项的参数
[root@centos8 ~]#cat /etc/zabbix/zabbix_agentd.d/test.conf
UserParameter=test[*],echo $1
#重启客户端
systemctl restart zabbix-agent.service
root@ubuntu:~# zabbix_get -s 172.27.13.43 -p 10050 -k "test[This is a test item]"
This is a test item
自定义模版
所谓模板,就是一些相关的监控项的集合,还可以在模板中包括图形,触发器等
为什么需要模板?
- 为每个主机单独添加相的一组监控项比较麻烦,例如:100台主机增加一个tcp80的监控项
- 修改监控项比较麻烦,例如:100台服务器的监控项将80改成8080
- 删除每个主机的同一组监控项,例如:100台服务器的监控项删除
- 删除主机会连同主机的监控项一起被删除;不可复用监控项
所以可以使用模板的方式,来解决上述的一些问题
监控项的值映射 Value mapping
为了接收到的值能更“人性化”的显示,可以通过值映射方式,将数值与字符串之间进行关系绑定
示例:
http 响应码
‘200’ → ‘OK’
‘403’ → ‘Forbidden’
‘404’ → ‘Not Found’
创建值映射
要定义一个值映射:
打开主机或者模板配置表单
前往 值映射 标签
点击 增加 来增加一个新映射
点击一个已存在的值映射名字来进行编辑
使用值映射
添加监控项时,在查看值处选中上面创建的值映射名称
查看结果
服务开始状态时监控
服务关闭时状态