首页 > 其他分享 >自定义Zabbix监控

自定义Zabbix监控

时间:2023-09-27 10:14:24浏览次数:36  
标签:状态 自定义 报文 zabbix Zabbix 监控 FIN WAIT

自定义Zabbix监控项

1.为什么要自定义监控项

模板里面提供了大量的监控项,为何还要自定义?
那肯定是有些你想监控的内容,模板里没有
当然,zabbix支持你自定义的监控项,所以才那么流行!

2.自定义监控项流程

1.自定义监控项的表现形式是(命令、脚本),只要能获取到值,就可以通过zabbix展示

完全流程
1. 写命令、脚本
2. 编写zabbix的自定义监控项的配置文件
3. 重启zabbix-agent
4. 试试zabbix-get能拿到数据吗
5. 去zabbix-ui 添加监控项

3.实战项目

① 采集TCP连接状态

精确分析tcp连接状态,可以精准得知服务器的链接情况,确保web服务器的健康

1. 命令获取tcp的状态
# -a 显示所有socket、-t显示tcp协议连接  -n 只显示ip
[root@web-7 ~]#netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0      0 10.0.0.7:10050          10.0.0.61:59054         TIME_WAIT  
tcp        0      0 10.0.0.7:10050          10.0.0.61:58996         TIME_WAIT  


2.提取精准的状态数据
# -c 统计行数
[root@web-7 ~]#netstat -ant |grep -c TIME_WAIT
34

# 有6个tcp已经确认建立了连接
[root@web-7 ~]#netstat -ant |grep -c LISTEN
6


3. 修改自定义监控项的配置文件,按照zabbix-agent的规则,参考写一个。
[root@web-7 ~]#cat /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf 

使用参数,自定义监控的命令
UserParameter=mysql.version,mysql -V
UserParameter=监控项名称,监控项获取值的命令

因此写法如下,这里采集LISTEN、TIME_WAIT、ESTABLISHED几个状态

cat >/etc/zabbix/zabbix_agentd.d/tcp_status.conf <<'EOF'
UserParameter=LISTEN,netstat -ant|grep -c LISTEN
UserParameter=TIME_WAIT,netstat -ant|grep -c TIME_WAIT
UserParameter=ESTABLISHED,netstat -ant|grep -c ESTABLISHED
EOF

重启agent
[root@web-7 ~]#systemctl restart zabbix-agent

4.测试自定义的监控项是否可用
[root@m-61 ~]#zabbix_get -s 10.0.0.7 -k LISTEN
6
[root@m-61 ~]#zabbix_get -s 10.0.0.7 -k TIME_WAIT
38
[root@m-61 ~]#zabbix_get -s 10.0.0.7 -k ESTABLISHED
2

5.上述的配置文件,也支持高级写法,以传参的形式动态采集值

cat > /etc/zabbix/zabbix_agentd.d/tcp_status.conf <<'EOF'
UserParameter=tcp_status[*],netstat -ant|grep -c $1
EOF

[root@web-7 ~]#systemctl restart zabbix-agent

② zabbix-UI添加

1. 配置选项卡
2. 主机
3. 给web7机器添加监控项

选择监控项

image

创建监控项

image

自定义监控项的属性

image

查看最新的web7监控数据

image

把TIME_WAIT和LISTEN都加上

image

图形化数据

image

③ 监控项克隆

现在要求你将TCP的11种连接状态全部监控上,怎么玩?

TCP所有的连接状态:
CLOSED: 表示初始状态。

LISTEN: 表示服务器端的某个SOCKET处于监听状态,可以接受连接。

SYN_SENT:在服务端监听后,客户端SOCKET执行CONNECT连接时,客户端发送SYN报文,此时客户端就进入
SYN_SENT状态,等待服务端的确认


SYN_RCVD: 表示服务端接受到了SYN报文,在正常情况下,这个状态是服务器端的SOCKET在建立TCP连接时的三
次握手会话过程中的一个中间状态,很短暂,基本上用netstat你是很难看到这种状态的,除非你特意写了一
个客户端测试程序,故意将三次TCP握手过程中最后一个ACK报文不予发送。因此这种状态时,当收到客户端的
ACK报文后,它会进入到ESTABLISHED状态。

ESTABLISHED:表示连接已经建立了。

FIN_WAIT_1: 这个是已经建立连接之后,其中一方请求终止连接,等待对方的FIN报文。FIN_WAIT_1状态是当
SOCKET在ESTABLISHED状态时,它想主动关闭连接,向对方发送了FIN报文,此时该SOCKET即进入到FIN_WAIT_1
状态。而当对方回应ACK报文后,则进入到FIN_WAIT_2状态,当然在实际的正常情况下,无论对方何种情况下
,都应该马上回应ACK报文,所以FIN_WAIT_1状态一般是比较难见到的,而FIN_WAIT_2状态还有时常常可以用
netstat看到。

FIN_WAIT_2:实际上FIN_WAIT_2状态下的SOCKET,表示半连接,也即有一方要求close连接,但另外还告诉对
方,我暂时还有点数据需要传送给你,稍后再关闭连接。

TIME_WAIT: 表示收到了对方的FIN报文,并发送出了ACK报文,就等2MSL后即可回到CLOSED可用状态了。如果
FIN_WAIT_1状态下,收到了对方同时带FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状态,而无须
经过FIN_WAIT_2状态。


CLOSING: 这种状态比较特殊,实际情况中应该是很少见,属于一种比较罕见的例外状态。正常情况下,当你
发送FIN报文后,按理来说是应该先收到(或同时收到)对方的ACK报文,再收到对方的FIN报文。但是CLOSING状
态表示你发送FIN报文后,并没有收到对方的ACK报文,反而却也收到了对方的FIN报文。什么情况下会出现此
种情况呢?其实细想一下,也不难得出结论:那就是如果双方几乎在同时close一个SOCKET的话,那么就出现
了双方同时发送FIN报文的情况,也即会出现CLOSING状态,表示双方都正在关闭SOCKET连接。


CLOSE_WAIT: 这种状态的含义其实是表示在等待关闭。怎么理解呢?当对方close一个SOCKET后发送FIN报文给
自己,你系统毫无疑问地会回应一个ACK报文给对方,此时则进入到CLOSE_WAIT状态。接下来呢,实际上你真
正需要考虑的事情是察看你是否还有数据发送给对方,如果没有的话,那么你也就可以close这个SOCKET,发
送FIN报文给对方,也即关闭连接。所以你在CLOSE_WAIT状态下,需要完成的事情是等待你去关闭连接。


LAST_ACK: 这个状态还是比较容易好理解的,它是被动关闭一方在发送FIN报文后,最后等待对方的ACK报文。
当收到ACK报文后,也即可以进入到CLOSED可用状态了。

image

最终效果

image

image

这里的11个tcp监控项,还是属于web7机器的。

你可以给某个模板,添加这个TCP的监控应用集(11个TCP状态的监控项),然后就可以复用了。

④ 添加图形

配置
主机
图形 选项里没有关于TCP监控项的图形,可以自主添加

image

image

image

测试tcp链接图示

image

⑤ 设置触发器

经过前面的一顿操作,自定义的TCP连接状态数据已经被抓到了,并且作了图像展示;

但是搭建监控的意义在于,某些值超过了我们设定的阈值,就得报警了;

因此设置一个触发器(zabbix判断什么时候报警的一个条件)

自定义触发器

针对 TCP的四次挥手、TIME_WAIT链接数,超过500个就触发报警;

image

image

创建触发器详细规则、表达式等

image

1.在监控项里找到具体的 监控项,然后设置判断条件。

2. 还有一个是否允许手动关闭问题的选项。

只有在触发器选项中启用允许手动关闭选项,问题事件才可以被手动关闭。

image

查看触发器报警

image

压测,查看报警

[root@m-61 ~]#ab -c 100 -n 1000 http://10.0.0.7/

image

关闭问题

如果要关闭问题,需要

1. 服务器故障被修复,自动关闭
2. 触发器允许手动关闭
3. 如果默认的模板关闭不了,那是默认的触发器不允许手动关闭。

标签:状态,自定义,报文,zabbix,Zabbix,监控,FIN,WAIT
From: https://www.cnblogs.com/chunjeh/p/17732003.html

相关文章

  • 视频监控/监控汇聚平台EasyCVR助力档案库房可视化管理的应用方案
    档案作为一种特殊的留存记录,具有珍贵的历史价值和文化遗产意义。它是人类活动真实的见证,记录了辉煌时刻和普通人的生活轨迹,对社会发展和经济建设起着举足轻重的作用。如今随着市场经济的不断发展和人类文明的飞速推进,档案的价值更加凸显,档案的储存和管理也备受关注。提升档案数字......
  • 以视频监控系统EasyCVR为例介绍安防视频监控系统的含义和特点
    安防视频监控平台EasyCVR是一个具有强大拓展性、灵活的视频能力和轻便部署的平台。它支持多种主流标准协议,包括国标GB28181、RTSP/Onvif、RTMP等,还可以支持厂家的私有协议和SDK接入,例如海康Ehome、海大宇等设备的SDK。该平台不仅拥有传统安防视频监控的功能,还具备接入AI智能分析的......
  • 如何设计实现一个好用的分布式监控体系?
    dg-publish:truetitle:可观测性:如何设计实现一个好用的分布式监控体系?createTime:2023-09-2523:35tags:-kafka可观测性:如何设计实现一个好用的分布式监控体系?怎样实现好用的指标和日志模块,以便我们快速定位业务问题出在哪里指标需要关注哪几个维度?从技术上看,指标......
  • qt自定义实体类
    在Qt中,可以创建自己的实体类(EntityClass)来表示应用程序中的数据对象或模型。这些实体类通常用于表示数据、管理数据和进行数据操作。以下是创建Qt自定义实体类的一般步骤:创建一个新的C++类:使用QtCreator或您喜欢的C++集成开发环境,创建一个新的C++类来表示实体。可以选择从QObject......
  • Zabbix配置监控
    1.zabbix添加主机监控给zabbix-server机器安装上agent进程,改配置,启动即可1.目标机器安装zabbix-agentrpm-ivhhttps://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.11-1.el7.x86_64.rpm#友情提醒,先做好时间同步!!ntpdate-untp.aliyu......
  • 视频融合平台EasyCVR如何使用视频监控系统搭建森林防火与人车管理系统解决方案
    安防视频监控平台EasyCVR是一个具有强大拓展性、灵活的视频能力和轻便部署的平台。它支持多种主流标准协议,包括国标GB28181、RTSP/Onvif、RTMP等,还可以支持厂家的私有协议和SDK接入,例如海康Ehome、海大宇等设备的SDK。该平台不仅拥有传统安防视频监控的功能,还具备接入AI智能分析的......
  • Zabbix部署
    Zabbix4.0部署官网https://www.zabbix.com/cn/manuals1.zabbix安装1.配置yum仓库https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/安装rpm-ivhhttps://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm#修改......
  • 视频融合平台EasyCVR如何使用视频监控系统搭建电商货物可视化追溯解决方案
    安防视频监控平台EasyCVR是一个具有强大拓展性、灵活的视频能力和轻便部署的平台。它支持多种主流标准协议,包括国标GB28181、RTSP/Onvif、RTMP等,还可以支持厂家的私有协议和SDK接入,例如海康Ehome、海大宇等设备的SDK。该平台不仅拥有传统安防视频监控的功能,还具备接入AI智能分析的......
  • POWERBI_1分钟学会_连续上升或下降指标监控
    一:数据源模拟数据为三款奶茶销量的日销售数据源,日期是23.8.24-23.8.31。A产品为连续7天,日环比下降,B产品为连续3天,日环比下降,C产品为连续2天,日环比下降。二:建立基础度量值首先,我们建立两个基础度量值,计算我们的产品销量和日环比。产品销量=CALCULATE(SUM('数据源'[销量]))......
  • 云原生周刊:K8s 的 13 个最佳开源监控工具
    开源项目推荐SilverSurfer该项目旨在检查Kubernetes对象的API版本兼容性,并为其提供迁移路径,以便为集群升级做好准备。ActionsRunnerControllerActionsRunnerController(ARC)是一个Kubernetes操作器,可为GitHubActions编排和扩展自托管运行器。使用ARC,您可以......