一.简介
监控模版默认监控项太多,对zabbix-server造成压力,监控模版没有想要监控的监控项。那么就可以根据自己的需要采集特定设备或服务的指标数据,自定义监控项需要创建和配置监控项、触发器和报警。
大概流程:
1.客户端:定义监控项的key,先编写获取监控项指标数据的命令或脚本,客户端重启,测试键值;
2.服务端:zabbix_get测试;
3.web界面:创建zabbix监控项,使监控项与键值关联;
4.web界面:创建zabbix触发器,来响应特定的值或模式;
5.web界面:创建图形,来可视化数据。
拓扑图
zabbix-server采用docker部署的,部署在130宿主机上;zabbix-agent部署在140主机上。
二.客户端---自定义监控命令或脚本编写
1.自定义监控项文件配置目录
#自定义监控项配置文件目录
grep -i include= /etc/zabbix/zabbix_agent2.conf
...
Include=/etc/zabbix/zabbix_agent2.d/plugins.d/*.conf
cd /etc/zabbix/zabbix_agent2.d/plugins.d/
2.自定义键值的格式
#UserParameter=key,CMD
#UserParameter=key,sh /opt/scripts/
key:自定义键值的名称
CMD:获取键值的命令或脚本
如:获取nginx是否开启80端口的写法key=heck.nginx80 cmd=ss -tlunp | grep -w 80 | wc -l
#编辑键值到配置文件
cd /etc/zabbix/zabbix_agent2.d/plugins.d/
vim web.conf
#检测nginx是否开启80端口
UserParameter=check.nginx80,ss -tlunp | grep -w 80 | wc -l
#重启客户端
systemctl restart zabbix-agent2
#客户端测试键值
zabbix_agent2 -t check.nginx80
可能报错[m|ZBX_NOTSUPPORTED] [Unknown metric check.nginx80x]检查key名称和命令
三.服务端---测试
我的服务端安装的是docker版的zabbix-server,不知道怎么安装zabbix-get,操作一通,要没找到
#配置apk阿里云源
vim repositories
https://mirrors.aliyun.com/alpine/v3.14/main/
https://mirrors.aliyun.com/alpine/v3.14/community/
#拷贝到zabbix容器
docker cp repositories a309:/etc/apk/repositories
#这样安装的吗
docker exec -it -u root a309 apk update
docker exec -it -u root a309 apk add zabbix-get
#也没查找到zabbix-get
docker exec -it -u root a309 apk search zabbix
#宿主机也没找到zabbix-get
yum -y install zabbix-get
用法:
zabbix_get -s 192.168.77.140 -p 10050 -k check.nginx80
-s 客户端IP
-p 客户端端口
-k key的名字
四.web添加监控项
1.找到上一篇创建的140games主机
配置---主机---监控项
创建监控项
名称自定义 、类型 默认的、键值 key的名字、主机接口默认、更新间隔1分钟、信息类型根据测试结果选、然后测试。
测试完后添加。可以搜索
检测---主机---games---最新数据
名称搜索nginx---应用---图形---这个图形不是自定义的,是自带的。
五.web添加触发器
配置---主机---触发器---创建触发器
名称:自定义、添加、选择上一步创建的监控项“检查nginx80端口”
功能:默认常用的,最后的值、结果大小>小于<不等于<>,这里选等于0、插入
#最近一次检查nginx80端口等于0
last(/games/check.nginx80)=0
恢复表达式复制上面的修改下,不等于0就恢复了,允许手动关闭,添加
添加后,在触发器模块可查看
六.web添加图形
配置---主机---games---图形---创建图形
名称:自定义、监控项:添加,找到之前添加的监控项、图形类别可选其他的、最后选择
添加、也可以预览图形
检测---主机---图形可查看
#暂停nginx
systemctl stop nginx
产生告警
问题可以关闭,开启nginx,后关闭问题
#开启nginx
systemctl st nginx
七.常用键值---从监控项模板中选
1.选择后测试,根据返回的类型选择信息类型。信息类型选错会报错,如下
agent.hostname 信息类型选数字 Value of type "string" is not suitable for value type "Numeric (unsigned)". Value "games"
2.带参数的要写上参数
[if,<mode>] 网络接口上传流量统计。返回 整数
说明:中括号内[]是网卡名字,要用实际的内容替换,尖括号内<>可忽略,就成了
[ens33,]
[if,<mode>]报错Invalid second parameter.
[if,]报错Cannot find information for this network interface in /proc/net/dev 文件中未找到if
net.tcp.listen[port] 检查 TCP 端口 是否处于侦听状态。返回 0 - 未侦听;1 - 正在侦听
说明:[port]的port未实际替代报错Invalid first parameter.
中括号参数[port]实际替代如[80],就可以了。