问题描述
有时候 Zabbix 监控系统的模版提供的监控指标并不能满足我们的需求,比如我们要监控服务器的线程数、TCP 连接数等,这些指标在 Zabbix 自带的模板中是没有的,这时候我们就需要自定义监控指标来实现可视化监控。本文以监控服务器的 TCP 连接数为例来说明如何自定义监控指标来实现可视化监控。
解决问题
总体思路是:
修改 Zabbix Agent 端的配置文件,添加监控指标的键值对 –> 重启 Zabbix Agent –> 在 Zabbix Server 端界面化控制台中的模板添加监控指标,指定配置文件中的键 –> 创建指标的可视化展示。
以下分步图文列出如何操作:
1. 修改 Zabbix Agent 端配置文件,添加监控指标的键值对
vim
打开 Zabbix Agent 端配置文件 /home/zabbix/zabbix/etc/zabbix_agentd.conf
,末尾添加如下内容:1
2UnsafeUserParameters=1
UserParameter=tcp.num,netstat -atunp | grep ESTABLISHED | wc -l
UnsafeUserParameters
: 自定义指标必需要添加该行;UserParameter
: 自定义指标的参数;tcp.num
: 监控指标的键,在 Zabbix Server 端创建监控指标时会用到,可以随意命名,比如tcp.count
;netstat -atunp | grep ESTABLISHED | wc -l
:监控指标的值(注意:该值必须是数值类型,否则报错),获取服务器的 TCP 连接数,键和值之间通过英文逗号分隔;
2. 重启 Zabbix Agent 端
1 | /home/zabbix/zabbix/sbin/zabbix_agentd -c /home/zabbix/zabbix/etc/zabbix_agentd.conf |
3. 在 Zabbix Server 端界面化控制台创建监控指标
为了让所有监控机器都能生效,所以在这里选择 Zabbix Server 自带的系统模板 Template OS Linux
中添加指标:
4. 创建指标的可视化展示
在第三步中已经完成了监控指标的创建,即 Zabbix Server 已经开始收集 Agent 端的数据,但是我们还没有配置相应指标的可视化图表展示,无法看到该指标随时间的推移的变化趋势,接下来我们创建一个梯度图来可视化展示该指标的变化:
到这里该指标的可视化图表已创建完成,可以跳转到控制台首页查看相应 Zabbix Agent 的图表:
注意事项
由于 netstat
命令在非 root 用户下使用会有警告信息:1
2
3
4[zabbix@awsuw7-189 ~]$ netstat -atunp | grep ESTABLISHED | wc -l
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
329
这样 Zabbix Agent 配置文件中使用 netstat -atunp | grep ESTABLISHED | wc -l
获取到的 value
会是上面所有的输出(即字符串类型),而不是 wc -l
得到的数值类型,从而导致配置自定义监控指标后会报错:
解决方法其实比较简单,切换到 root 用户给 netstat
命令添加 s
权限即可解决:1
[root@awsuw7-189 ~]# chmod u+s /bin/netstat