一.简介

监控模版默认监控项太多,对zabbix-server造成压力,监控模版没有想要监控的监控项。那么就可以根据自己的需要采集特定设备或服务的指标数据,自定义监控项需要创建和配置监控项、触发器和报警。

大概流程:

1.客户端:定义监控项的key,先编写获取监控项指标数据的命令或脚本,客户端重启,测试键值;

2.服务端:zabbix_get测试;

3.web界面:创建zabbix监控项,使监控项与键值关联;

4.web界面:创建zabbix触发器,来响应特定的值或模式;

5.web界面:创建图形,来可视化数据。

拓扑图

zabbix-server采用docker部署的,部署在130宿主机上;zabbix-agent部署在140主机上。

zabbix自定义监控项-触发器-图形的配置---熟悉流程_键值

二.客户端---自定义监控命令或脚本编写

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/
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

2.自定义键值的格式

#UserParameter=key,CMD
#UserParameter=key,sh /opt/scripts/xxx.sh
key:自定义键值的名称
CMD:获取键值的命令或脚本
  • 1.
  • 2.
  • 3.
  • 4.

如:获取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
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

可能报错[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
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.

用法:

zabbix_get -s 192.168.77.140 -p 10050 -k check.nginx80
-s 客户端IP
-p 客户端端口
-k key的名字
  • 1.
  • 2.
  • 3.
  • 4.

四.web添加监控项

1.找到上一篇创建的140games主机

配置---主机---监控项

zabbix自定义监控项-触发器-图形的配置---熟悉流程_自定义_02

创建监控项

zabbix自定义监控项-触发器-图形的配置---熟悉流程_自定义_03

名称自定义 、类型 默认的、键值 key的名字、主机接口默认、更新间隔1分钟、信息类型根据测试结果选、然后测试。

zabbix自定义监控项-触发器-图形的配置---熟悉流程_nginx_04

zabbix自定义监控项-触发器-图形的配置---熟悉流程_nginx_05

测试完后添加。可以搜索

zabbix自定义监控项-触发器-图形的配置---熟悉流程_nginx_06

检测---主机---games---最新数据

zabbix自定义监控项-触发器-图形的配置---熟悉流程_自定义_07

名称搜索nginx---应用---图形---这个图形不是自定义的,是自带的。

zabbix自定义监控项-触发器-图形的配置---熟悉流程_nginx_08

zabbix自定义监控项-触发器-图形的配置---熟悉流程_nginx_09

五.web添加触发器

配置---主机---触发器---创建触发器

zabbix自定义监控项-触发器-图形的配置---熟悉流程_自定义_10

zabbix自定义监控项-触发器-图形的配置---熟悉流程_自定义_11

名称:自定义、添加、选择上一步创建的监控项“检查nginx80端口”

zabbix自定义监控项-触发器-图形的配置---熟悉流程_键值_12

zabbix自定义监控项-触发器-图形的配置---熟悉流程_自定义_13

功能:默认常用的,最后的值、结果大小>小于<不等于<>,这里选等于0、插入

zabbix自定义监控项-触发器-图形的配置---熟悉流程_键值_14

#最近一次检查nginx80端口等于0
last(/games/check.nginx80)=0
  • 1.
  • 2.

恢复表达式复制上面的修改下,不等于0就恢复了,允许手动关闭,添加

zabbix自定义监控项-触发器-图形的配置---熟悉流程_键值_15

添加后,在触发器模块可查看

zabbix自定义监控项-触发器-图形的配置---熟悉流程_自定义_16

六.web添加图形

配置---主机---games---图形---创建图形

zabbix自定义监控项-触发器-图形的配置---熟悉流程_键值_17

名称:自定义、监控项:添加,找到之前添加的监控项、图形类别可选其他的、最后选择

zabbix自定义监控项-触发器-图形的配置---熟悉流程_键值_18

添加、也可以预览图形

zabbix自定义监控项-触发器-图形的配置---熟悉流程_nginx_19

检测---主机---图形可查看

zabbix自定义监控项-触发器-图形的配置---熟悉流程_nginx_20

zabbix自定义监控项-触发器-图形的配置---熟悉流程_自定义_21

#暂停nginx
systemctl stop nginx
  • 1.
  • 2.

产生告警

zabbix自定义监控项-触发器-图形的配置---熟悉流程_键值_22

问题可以关闭,开启nginx,后关闭问题

#开启nginx
systemctl st nginx
  • 1.
  • 2.

zabbix自定义监控项-触发器-图形的配置---熟悉流程_自定义_23

七.常用键值---从监控项模板中选

1.选择后测试,根据返回的类型选择信息类型。信息类型选错会报错,如下

agent.hostname 信息类型选数字 Value of type "string" is not suitable for value type "Numeric (unsigned)". Value "games"

zabbix自定义监控项-触发器-图形的配置---熟悉流程_自定义_24

zabbix自定义监控项-触发器-图形的配置---熟悉流程_自定义_25

2.带参数的要写上参数

net.if.in[if,<mode>] 网络接口上传流量统计。返回 整数 

说明:中括号内[]是网卡名字,要用实际的内容替换,尖括号内<>可忽略,就成了

net.if.in[ens33,]

net.if.in[if,<mode>]报错Invalid second parameter.

net.if.in[if,]报错Cannot find information for this network interface in /proc/net/dev 文件中未找到if

zabbix自定义监控项-触发器-图形的配置---熟悉流程_自定义_26

net.tcp.listen[port] 检查 TCP 端口 是否处于侦听状态。返回 0 - 未侦听;1 - 正在侦听

说明:[port]的port未实际替代报错Invalid first parameter.

zabbix自定义监控项-触发器-图形的配置---熟悉流程_自定义_27

中括号参数[port]实际替代如[80],就可以了。

zabbix自定义监控项-触发器-图形的配置---熟悉流程_nginx_28