zabbix-实战
Zabbix 自动发现与自动注册 手动添加客户端非常耗时间,增加人力、时间成本。为了满足监控企业成千上万台服务器,zabbix提供了自动发现与自动注册的功能,自动批量发现局域网中的服务器,并自动添加到zabbix监控平台自动发现(被动模式):由服务端主动发起,Zabbix Server开启发现进程,定时扫描局域网中IP服务器、设备。实现自动将发现主机、自动将主机添加到主机组、自动加载模板、自动创建
1.宏的介绍
1.概述
在 Zabbix 中,宏(Macros)是一个非常强大的功能,允许你在监控配置中使用动态变量。宏可以在各种配置项中使用,例如触发器、动作、通知、图形和模板等
2.常用的宏
触发器相关宏
| 宏变量 | 说明 |
|---|---|
{TRIGGER.NAME} |
触发器的名称 |
{TRIGGER.STATUS} |
触发器的状态 |
{TRIGGER.SEVERITY} |
触发器的严重性 |
{TRIGGER.URL} |
触发器的 URL |
事假相关宏
| 宏变量 | 说明 |
|---|---|
{EVENT.ID} |
事件的 ID |
{EVENT.DATE} |
事件的日期 |
{EVENT.TIME} |
事件的时间 |
{EVENT.RECOVERY.ID} |
恢复事件的 ID |
主机和项目相关宏
| 宏变量 | 说明 |
|---|---|
{HOST.NAME} |
主机的名称 |
{HOST.IP} |
主机的 IP 地址 |
{ITEM.NAME} |
项目的名称 |
{ITEM.VALUE} |
项目的值 |
用户相关宏
| 宏变量 | 说明 |
|---|---|
{USER.FULLNAME} |
用户的全名 |
{USER.EMAIL} |
用户的电子邮件地址 |
{USER.PHONE} |
用户的电话号码 |
2.服务发现与自动注册
1.概述
Zabbix 自动发现与自动注册 手动添加客户端非常耗时间,增加人力、时间成本。为了满足监控企业成千上万台服务器,zabbix提供了自动发现与自动注册的功能,自动批量发现局域网中的服务器,并自动添加到zabbix监控平台
自动发现(被动模式):由服务端主动发起,Zabbix Server开启发现进程,定时扫描局域网中IP服务器、设备。实现自动将发现主机、自动将主机添加到主机组、自动加载模板、自动创建项目(item)、自动创建图像等功能。
缺点:当Agent服务器过多的时候采用自动发现,zabbix-server压力会比较大,自动添加主机进度就会非常慢。
自动注册(主动模式):Zabbix Server 等待 Zabbix Agent主动上报。由客户端主动发起,客户端必须安装并启动Agentd,否则无法被自动注册添加至主机列表。对于使用SNMP的要采用自动发现。
缺点:agent有可能找不到Server。
PS:主动还是被动是基于agent而言,不管是主动还是被动模式都是在agent端进行配置
2.自动发现
先将之前创建的主机全部都清空,后续让他自动查找主机
1.添加自动发现规则

IP范围是是你发现主机IP的范围,这里只有两台就减小一点范围,更新间隔测试就短一点
下面的检查就是你发现主机的条件,检查HTTP端口,还有SSH端口,配置好之后添加
2.添加发现动作

动作添加好之后,就添加操作,操作需要添加主机,还能链接模版

此时就已经可以发现设备了

这里只开了两台因此也就只发现了两台

添加进主机可能有延迟,因此需要等一会,这里已经添加进去了两台主机
3.自动注册
在自动注册动作里面添加创建动作

这里添加动作以及条件,因为我的主机名为zabbix-server和zabbix-client,因此名字包含这两个就可以了

操作和上面自动发现一致。添加主机以及自动链接到模版

3.监控TCP连接
1.TCP连接的概述
3次握手确认连接

4次挥手确认断开

netstat中的各种状态:
CLOSED:初始(无连接)状态。
LISTEN:侦听状态,等待远程机器的连接请求。
SYN_SEND:在TCP三次握手期间,主动连接端发送了SYN包后,进入SYN_SEND状态,等待对方的ACK包。
SYN_RECV:在TCP三次握手期间,被动连接端收到SYN包后,进入SYN_RECV状态。 ESTABLISHED:完成TCP三次握手后,主动/被动连接端进入ESTABLISHED状态。此时,TCP连接已经建立,可以进行通信。
FIN_WAIT_1:在TCP四次挥手时,主动关闭端发送FIN包后,进入FIN_WAIT_1状态。 FIN_WAIT_2:在TCP四次挥手时,主动关闭端收到ACK包后,进入FIN_WAIT_2状态。 TIME_WAIT:在TCP四次挥手时,主动关闭端发送ACK包之后,进入TIME_WAIT状态,等待最多MSL时间,让被动关闭端收到ACK包。
CLOSING:在TCP四次挥手期间,主动关闭端发送了FIN包后,没有收到对应的ACK包,却收到对方的FIN包,进入CLOSING状态。
CLOSE_WAIT:在TCP四次挥手期间,被动关闭端收到FIN包后,进入CLOSE_WAIT状态。 LAST_ACK:在TCP四次挥手时,被动关闭端发送FIN包后,进入LAST_ACK状态,等待对方的ACK包。
主动连接端可能的状态有: CLOSED、SYN_SEND、ESTABLISHED。
主动关闭端可能的状态有: FIN_WAIT_1、FIN_WAIT_2、TIME_WAIT。
被动连接端可能的状态有: LISTEN、SYN_RECV、ESTABLISHED。
被动关闭端可能的状态有: CLOSE_WAIT、LAST_ACK、CLOSED。
ESTABLISHED socket已经建立连接
CLOSED socket没有被使用,无连接
CLOSING 服务器端和客户端都同时关闭连接
CLOSE_WAIT 等待关闭连接
TIME_WAIT 表示收到了对方的FIN报文,并发送出了ACK报文,等待2MSL后就可回到CLOSED状态
LAST_ACK 远端关闭,当前socket被动关闭后发送FIN报文,等待对方ACK报文
LISTEN 监听状态
SYN_RECV 接收到SYN报文
SYN_SENT 已经发送SYN报文
FIN_WAIT1 The socket is closed, and the connection is shutting down
FIN_WAIT2 Connection is closed, and the socket is waiting for a shutdown from the remote end.
2.自定义监听key
需求:获取tcp连接中处于监听状态的tcp连接数量
1.编写获取数据的shell命令
netstat -anpt | grep LISTEN | wc -l
![]()
2.客户端添加配置文件,编写自定义key
同样如果要在服务端的zabbix里面看到这个数量的话需要自定义key在到服务端进行连接
vim /etc/zabbix/zabbix_agentd.d/tcp_status.conf
UserParameter=tcp.status.listen,netstat -anpt | grep "LISTEN" | wc -l
# 重启服务zabbix-agent
systemctl restart zabbix-agent
服务端测试

同样的tcp连接中还有许多不同的连接状态不比如(TIME_WAIT ESTAB SYN_RENT SYN_SENT CLOSE)不同的tcp状态,因此我们需要用到动态参数,而这些都是比较简单繁琐的操作修改名字之类的,因此就有了动态参数
3.动态参数
编辑配置文件,修改配置文件
UserParameter=tcp.status[*],netstat -anpt | grep "$1" | wc -l
此时服务端测试
zabbix_get -s zabbix-client -k tcp.status[LISTEN]
后面的LISTEN就是他的动态参数如果要查询不同的只需要修改不同的参数名即可实现

4.工作模板
工作过程中,很多的key其实都已经定好了,并不需要我们去重新设置,所以,工作中,要监听什么数据,只需要把对应的配置文件放到对应的客户端中就可以了
4.zabbix监控nginx
观察用户与 Nginx 服务器的连接数量
location /nginx_status {
stub_status;
allow all;
}
# 当有人访问 /nginx_status 这个页面时,给他看 stub_status 这个模块,授予所有用户访问权限
修改配置并重启 Nginx
修改nginx的配置并重启nginx
location /nginx_status {
stub_status;
allow 192.168.22.137; #设置仅服务端可以访问
deny all;
}

这里在服务端成功返回状态
主要是检测当前tcp连接数,也就是Active connections: 1
curl zabbix-client/nginx_status | awk 'NR==1 {print $3}'
这里找不到工作模版就自己写一个把
# 先进入zabbix_agent.d目录,创建一个文件写入内容
# 这个active代表的就是他的正在连接数
UserParameter=Active,wget --quiet -O - http://localhost/nginx_status?auto |awk 'NR==1 {print $3}'
# 重启zabbix-agent
systemctl restart zabbix-agent
键名就是Active,在zabbix监控项直接添加就行
这里测试是成功连接的

图形也可以显示
5.zabbix监控MySQL
1.常用监控数据
对于MySQL数据库而言,我们常见的监听项有以下几项
查询吞吐量:
Com_select: select查询语句个数/每秒
Com_insert: insert操作语句个数/每秒
Com-update: update操作语句个数/每秒
Com-delete: delete操作语句个数/每秒 Questions: 查询语句总量
查询数据库的所有状态的语句
zabbix_agentd.d]# mysqladmin -uroot -p123456 extended-status
后面可以将上述的常用的吞吐量过滤出来,通过grep过滤
慢查询
Slow_queries:慢查询数量
连接情况
Threads_connected:当前打数据库的连接数
max_connections: 数据库当前最大连接数
# 查询最大连接数
mysql -uroot -p501908106Qaz. -e "show variables like 'max_connections'" | grep max_connections
# 查询当前连接数
mysqladmin -uroot -p501908106Qaz. extended-status | grep -E 'Threads_connected'

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)