[toc]

零宽断言

1
2
3
4
(?=exp)  		# 匹配exp前面的位置
(?<=exp) # 匹配exp后面的位置
(?!exp) # 匹配后面跟的不是exp的位置
(?<!exp) # 匹配前面不是exp的位置

添加自定义监控

语法格式

1
2
3
UserParameter=监控项的key名称,获取监控项值的命令或者脚本
UserParameter=<key>,<shell,command>
UserParameter=user.count,uptime | grep -Po "\d(?= users)"

添加配置文件(客户端)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 修改配置文件
vim /etc/zabbix/zabbix_agentd.conf
UserParameter=user.count,uptime | grep -Po "\d(?= user)"

# 重启zabbix客户端
systemctl restart zabbix-agent.service

# 下载zabbix5.0官方源
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm

# 安装zabbix-get检测工具
yum install -y zabbix-get

# 测试是否能够监控到数据
zabbix_get -s 172.16.1.7 -k user.count

页面添加监控项

创建监控模板

image-20230322104437722

image-20230322104441075

image-20230322104531778

image-20230322104534964

image-20230322104538643

image-20230322104544864

给主机配置监控项

image-20230322104619908

image-20230322104626686

image-20230322104629411

将监控内容图形化显示

image-20230322104713903

image-20230322104716673

添加监控项的触发器

image-20230322104915331

image-20230322104918200

image-20230322104920667

image-20230322104923870

image-20230322104926649

常用触发器条件

1
2
3
4
5
6
7
8
and      		# 并且
or # 或
last() # 对比最后的值
avg() # 平均值
diff() # 对比上一次文件的内容
nodata() # 收不到数据进行报警
(5m) # 表示最近五分种得到值
(#5) # 表示最近五次得到的值

zabbix内置变量

使用zabbix内置变量,来优化触发器的名称,此处使用的是
主机名变量:{HOST.NAME} IP地址变量:{HOST.IP}

1
Monitor Login User Count Problem 主机名:{HOST.NAME} IP地址:{HOST.IP}

image-20230322105111331

Zabbix系统所需磁盘空间

每个Zabbix事件需要大约170字节的磁盘空间。很难估计Zabbix每天生成的事件数量。最糟糕的情况下,我们可能需要假设Zabbix每秒会生成一个事件。

这意味着,如果我们需要保留3年的事件,需要3365243600 170 = 15GB的磁盘空间。

zabbix公式计算范围 所需磁盘空间的计算公式 (单位:字节)
Zabbix配置文件 固定大小。一般10MB或更少。
历史(History) days*(items/refresh rate)243600*bytes items : 监控项数量 days : 保留历史数据的天数 refresh rate : 监控项平均轮询时间 bytes : 保留单个值所需要占用的字节数,依赖于数据库引擎,一般大约90字节。
趋势(Trends) days*(items/3600)243600*bytes items : 监控项数量 days : 保留趋势数据的天数 bytes : 保留单个趋势数据所需要占用的字节数,依赖于数据库引擎,一般大约90字节。
事件(Events) daysevents243600bytes events : 每秒事件数。最糟糕的情况下,每秒一(1)个事件。 days : 保留事件数据的天数 bytes : 保留单个事件所需要占用的字节数,依赖于数据库引擎,一般大约90字节。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 历史数据保留90天
python
Python 2.7.5 (default, Apr 11 2018, 07:36:10)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2
Type "help", "copyright", "credits" or "license" for more information.

90天*(监控项的数量/取值时间)*24*3600*字节数/1024/1024(转换成MB)
>>> 90*(100/3)*24*3600*90/1024/1024
22024

# 趋势365天
365*(100/3600)*24*3600*90/1024/1024
75.187683105469

# 事件
>>> 365*1*24*3600*90/1024/1024
2706

添加值映射

当端口存活的时候,数据是1,当端口不存在的时候,数据是0,看起来好low而且一般谁会去记1和0,所以此时我们可以给值添加一个映射关系,可以理解为创建一个别名。

image-20230628222500844

此处可以选择系统自带的,也可以自己创建。

image-20230628222518993

image-20230628222559745

image-20230628222711756

image-20230628222805351

image-20230628222824570

image-20230628222847514

自定义监控项示例:TCP11种状态

了解11种状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
LISTEN - 侦听来自远方TCP端口的连接请求;
SYN-SENT -在发送连接请求后等待匹配的连接请求;
SYN-RECEIVED - 在收到和发送一个连接请求后等待对连接请求的确认;
ESTABLISHED- 代表一个打开的连接,数据可以传送给用户;
FIN-WAIT-1 - 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;
FIN-WAIT-2 - 从远程TCP等待连接中断请求;
CLOSE-WAIT - 等待从本地用户发来的连接中断请求;
CLOSING -等待远程TCP对连接中断的确认;
LAST-ACK - 等待原来发向远程TCP的连接中断请求的确认;
TIME-WAIT -等待足够的时间以确保远程TCP接收到连接中断请求的确认;
CLOSED - 没有任何连接状态;
客户端独有的:(1)SYN_SENT (2)FIN_WAIT1 (3)FIN_WAIT2 (4)CLOSING (5)TIME_WAIT 。
服务端独有的:(1)LISTEN (2)SYN_RCVD (3)CLOSE_WAIT (4)LAST_ACK 。
共有的:(1)CLOSED (2)ESTABLISHED 。

配置监控

1
2
3
4
5
6
7
8
9
10
11
12
13
# 进入zabbix客户端子配置文件目录
cd /etc/zabbix/zabbix_agentd.d/

# 编辑子配置文件
vim tcp_state.conf
UserParameter=tcp.state[*],netstat -ant|grep -c $1

# 重启服务
systemctl restart zabbix-agent

# zabbix-server测试
zabbix_get -s 10.0.0.7 -k tcp.state[LISTEN]
11

在web页面添加监控项

因为TCP状态有11种,所以我们需要添加11个监控项,我们可以把所有监控项放入一个模板中,这样我们所有机器在模板中关联即可。

image-20230628223638347

image-20230628223654399

在模板中创建监控项

image-20230628223816035

image-20230628223831918

image-20230628223903418

image-20230628223917873

image-20230628223945771

以此类推,使用克隆的方式,创建出来所有模板。

给主机关联模板

image-20230628224022851

image-20230628224034934

image-20230628224049028

1
2
3
4
5
zabbix_get -s 10.0.0.7 -k tcp.state[LISTEN]
11

zabbix_get -s 10.0.0.7 -k tcp.state[ESTABLISHED]
25

image-20230628224156813