细说Zabbix监控TCP状态

Zabbix默认模板中是不能监控到TCP各个状态的链接数的,须要咱们自定义一个模板来实现。网上方法不少,而且不少都是一长串的脚本,有点让人望而却步。我我的总结就是先弄清楚TCP有哪些状态,而后在zabbix          的agent上新增一条配置便可,具体操做按以下步骤。tcp

一、在zabbix的/etc/zabbix/zabbix_agentd.d目录下新增配置文件tcp_status.confide

# cat > /etc/zabbix/zabbix_agentd.d/tcp_status.conf << EOF工具

## 如下列出的2条UserParameter,2选1便可..net

## 使用 netstat 命令来获取TCP状态链接数,须要修改netstat权限,即zabbix用户在执行netstat命令时,需具备与netstat命令全部者至关的权限要先执行chmod 4755 /bin/netstat .3d

UserParameter=system.netstat[*],netstat -antp |grep -i \$1 |grep -v grep|wc -lrest

## 或者使用 ss 命令来获取TCP状态链接数,速度比netstat快,也不须要修改ss命令权限,但须要注意是ss列出来的ESTABLISHED是缩写成ESTAB,且TIME-WAIT、SYN-SENT等状态中间是中横线,netstat用的是下划线TIME_WAIT、SYN_SENT.orm

UserParameter=system.ss[*], ss -antp |grep -i \$1 |grep -v grep |wc -lserver

EOFblog

完成添加后,以下图所示继承

image.png

说明:此处为演示,netstat和ss都添加了

二、重启zabbix-agent

# systemctl restart zabbix-agent

三、须要监控的TCP状态主要包括以下几种:

LISTEN、ESTABLISHED、TIME_WAIT、CLOSE_WAIT、LAST_ACK、SYN_SENT、SYN_RECV、FIN_WAIT一、FIN_WAIT2等。

而后使用zabbix_get命令先检查一下,确认添加无误且能获取到数据。

使用system.netstat时,若不修改netstat命令权限,则会有以下相关提示,需赋予zabbix用户在执行netstat命令时具备与netstat命令全部者至关的权限,即root权限。

image.png

使用system.ss时,不须要修改ss命令权限便可执行,但获取TIME_WAIT时要用中横线

image.png

image.png

说明:在1台主机上验证获取数据正常后,就可使用ansible等批量部署工具将配置推送到其它须要监控的节点上。

四、获取数据正常后,接下来是在zabbix中建立模板。一般咱们在Zabbix添加项(item)的步骤为:

先建立模板①  (Template)-->② 应用(Application)-->③ 监控项(items)-->④触发器(triggers),最后将模板应用到对应的主机上(此处建立模板时,将模板加到了Linux servers组中)。

① 在Configuration-->Templates中建立一个名为"Template TCP Connections"的模板,而且归属于"Linux Servers"组中,这样属于Linux Servers组中的主机将自动继承"Template TCP Connections"模板,以下图所示。

image.png

建立的Templates状态以下图所示。

image.png

② 建立Application,名为"TCP Connections",建立Application的用途是后续添加的items都归属于该Application,便于分类以及查找,以下图所示。

image.png

③ 建立items,以下图所示,点击右上角的"Create item"。

image.png

添加TIME_WAIT的监控,相关设置以下图所示,在item的名称"Name"这里,咱们用了zabbix的位置变量,每次添加item时,咱们只须要修改key中中括号的内容,方便快速添加。

image.png

添加完成后,状态以下图所示。

image.png

接下来,若是要继续添加其它监控项,咱们就可使用Zabbix的Clone(克隆)功能,以下图所示。

image.png

点击"Clone"后,就至关于基于原有的item并从新复制了一个item,咱们只须要修改key就能够了。

image.png

完成修改后,点击下方的"Add"添加,显示以下。

image.png

最后,咱们用"Clone"方式添加完其它item项,最终显示以下图所示。

image.png

说明:此处均用netstat命令来完成添加,ss也能够,但要注意添加的TCP状态名称是用中横线。

④ 为须要设置阈值的items是添加触发器,点击右上角的"Create trigger",建立触发器,以下图所示。

image.png

触发器的名称最好与对应item相同,而后选择严重等级(Severity),严重等级为分:Not classified(未分类,需关注)、Information(普通讯息,需关注)、Warning(警告)、Average(通常严重)、High(很是严重)、Disaster(灾难),具体设置以下图所示。

image.png

在添加触发器表达式时,咱们只须要点击表达式对话框右边的"Add"按钮,选择对应的item,先按默认完成添加,而后再按需修改表达式,较复杂的表达式都是手工按需求编写的。

image.png

image.png

最后,以"Clone"方式完成其它item对应的trigger添加,完成后,以下图所示。

image.png

说明:相关Trigger阈值须要根据实际状况进行设置调整。

⑤ 在全部主机上添加模板"Template TCP Connections",以下图所示。

image.png

完成添加后,在"Latest data"中查看数据,以下图所示。

image.png

说明:Application对话框是支持模糊匹配的,这也体现了在建立某一类items时,需建立Application的重要性。

最后,在Grafana中展现效果以下图所示

image.png

image.png


总结:使用Grafana来展现数据确实比Zabbix自身图表要有优点,对Grafana感兴趣的能够关注我前面分享的17篇文章,全是干货哦,后续会继续分享使用经验。

相关文章
相关标签/搜索