zabbix 监控Linux TCP/UDP端口流量

2023-11-04

zabbix-agent客户端在Linux服务器安装之后,服务器端配置上Template OS Linux这个模板 ,就会自动搜索该服务器上的所有网卡,然后实时记录income流量和outcome流量,并绘制成图标显示,如下。

 有这个粗略的统计可以帮助运维人员了解服务器的健康情况,但是有时候我们需要更加精细的监控,监控粒度要精细到某个端口和IP,比如统计80端口,443端口以时间为轴的流量变动情况。或者统计来自192.168.1.*和192.168.2.*流量的变化情况,甚至更进一步,统计192.168.1.1访问本机80端口产生的流量。这种需求使用基于网卡的监控已经不足以实现,必须使用新方法。

好在Linux网络流量都会经过iptables内核模块,iptables能够以极高的效率进行IP协议数据包和流量的统计,在记录和统计时几乎不影响系统性能,而且查询计数器和清零计数器也以毫秒为单位。通过iptables灵活的过滤命令,我们可以像配置防火墙一样配置我们需要监控的流量,然后配合zabbix自定义轮训取值功能,将客户机iptables统计的结果收集到zabbix server当中,并绘制图形,就可以直观准确的分析流量了。

首先我们要补充一些iptables知识,这里我就不赘述了,可以看下面这篇文章

https://www.cnblogs.com/pangguoping/p/5715539.html

大体来说,就是通过在Filter表中添加相关端口和IP的监控条目,然后定时使用iptables -v命令查看数据包的数量和流量大小,并定期使用iptables -Z命令清空计数器。最后就得到每分钟或每小时某端口的流量了。

我目前设计了两个场景,一个是统计某Linux服务器22端口的流量变化情况,另一个是统计192.168.1.1访问某LInux服务器9080端口的流量情况,zabbix服务器每30秒收集一次数据,并清空iptables计数器,然后把收集到的数据除以30,就是平均每秒的流量。

首先我们设置iptables规则

iptables -I INPUT -p tcp --dport 22
iptables -I INPUT -p tcp -s 192.168.1.1 --dport 9080

然后写一个脚本,用来调用iptables,获取当前一段时间统计的流量

#!/bin/bash
#echo $(sudo /sbin/iptables -vxn -L)
output=$(sudo /sbin/iptables -vxn -L | awk -v nr=$1 'NR==nr {print $2}')
sudo /sbin/iptables -Z > /dev/null
output=$(($output / $2))
if [ -z $output ] 
then echo "0"
else echo $output

这个脚本传入了两个参数,$1是取iptables -v结果的第几行,一般从第三行开始就是具体规则统计的信息了,通过上面-I命令,观察后得出是第三行和第四行

$2是zabbix server来取值的间隔,单位是秒,通过某段时间的流量除以这段时间的长度就得出每秒的流量,返回给zabbix server。

由于iptables只能由root用户进行调用,zabbix客户端的用户为zabbix,没有权限使用iptables,如果不加sudo,调用时就会报错:

iptables v1.4.21: can't initialize iptables table `filter': Permission denied (you must be root) Perhaps iptables or your kernel needs to be upgraded.

所以要添加sudo,可是Linux用户并不是想用sudo就可以用sudo的,根据我另一篇关于zabbix权限的博客经验 《 Zabbix远程命令权限不足问题解决方法》,通过修改/etc/sudoers文件来使zabbix用户可以使用sudo命令。方法就是在/etc/sudoers文件中添加下面一行

zabbix ALL=NOPASSWD: /sbin/iptables

另外centos7以上不要忘了把selinux也一并关闭

setenforce 0

此时我们就可以在客户机上测试这个脚本是不是可以正常取到流量值了,单位为Byte

sudo -u zabbix /usr/local/bin/trafic_status 3 1

上面就是以zabbix用户运行脚本文件,取iptables -v结果的第四行中流量值的大小,结果应为正整数,如下图

然后需要为zabbix server设置一个key,用于取值,此时我们需要在zabbix-agent的配置文件夹中增加一个文件,配置自定义监控键,我的配置文件夹为/etc/zabbix/zabbix_agentd.d/,我在里面新建了一个文件名为userparameter_trafic.conf,内容如下

UserParameter=custom.trafic[*],/usr/local/bin/trafic_status $1 2>/dev/null

然后我们客户端的工作就已经做好了,此时需要重启zabbix-agent以生效

service zabbix-agent restart

 

然后我们登录zabbix-server服务器,先使用zabbix-get命令查看一下能否成功取到监控值

zabbix_get -s 192.168.2.1 -k "custom.trafic[3,30]"

上面192.168.2.1就是zabbix客户机的地址,custom.trafic是我们上面客户机配置文件中配置的UserParameter,3是iptables -v输出结果的第三行,对应着Filter表第一条INPUT条目监控的流量。30是把获得流量除以30,因为我设置30秒收集一次并清空计数器,所以每秒的平均流量就除以30,你也可以设置10秒或15秒,不过太频繁也没有必要。

如果能取到正整数,那么我们客户机配置的没有问题,如果取不到,可以逐行屏蔽上面的脚本进行调试。一般问题容易出在iptables的权限上面。

然后我们就可以到zabbix-server的控制台增加监控项和图表了,如下图,主要就是设置更新间隔和第几行,保证更新间隔(秒)和第二个参数一致

配置图表,如下

主要就是将刚才设置的监控项放进去,然后调整一下坐标Y轴和线的颜色

配置完成后等待几分钟,就可以看到图了,如下

如果没有线出现,那么就到zabbix的”检测中“-“最新数据” 里查看报错内容,如下

 

小彩蛋:

 

很多人在监控的时候还需要同时监控TCP连接情况,尤其是ESTABLISHED和FIN_WAIT状态的TCP连接数量,和上面一样,可以通过脚本并授权root用户获取

/etc/zabbix/zabbix_agentd.d/userparameter_sstcp.conf

UserParameter=custom.sstcp[*],/usr/local/bin/tcp_status $1 2>/dev/null

可执行脚本文件:/usr/local/bin/tcp_status,第一个参数为TCP状态,如ESTAB

#monitor tcp 
UserParameter=custom.sstcp[*],/usr/local/bin/tcp_status $1 2>/dev/null
[root@emessage zabbix_agentd.d]# cat /usr/local/bin/tcp_status
#!/bin/bash 
#xiaoluo 
#scripts for tcp status 
function SYNRECV { 
/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'SYN-RECV' | awk '{print $2}'
} 
function ESTAB { 
/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'ESTAB' | awk '{print $2}'
} 
function FINWAIT1 { 
/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'FIN-WAIT-1' | awk '{print $2}'
} 
function FINWAIT2 { 
/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'FIN-WAIT-2' | awk '{print $2}'
} 
function TIMEWAIT { 
/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'TIME-WAIT' | awk '{print $2}'
} 
function LASTACK { 
/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'LAST-ACK' | awk '{print $2}'
} 
function LISTEN { 
/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'LISTEN' | awk '{print $2}'
} 
output=$($1)
if [ -z $output ] 
then echo "0"
else echo "$output"
fi

zabbix-server的监控项配置如下

图形配置如下

然后就可以查看TCP连接状态的效果图了

 

可以明显的看到,白天时候的TCP连接数比晚上的多。而且通过这种方式,可以直观的看出有没有TCP连接泄露(open之后不close)的连接

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

zabbix 监控Linux TCP/UDP端口流量 的相关文章

  • ZABBIX实践(一) 服务端部署和安装

    zabbix 一款非常强大的监控软件 不仅可以基于SNMP监控各种网络设备 而且还可以监控linux win等各版本操作系统的状态 1 本次实践的目标 1 搭建服务端和agent 实现监控 2 摸索对于VMWare的监控 2 安装环境 se
  • CentOS7.6 编译安装LNMP+Zabbix5.0

    一 服务器信息 操作系统 CentOS Linux release 7 6 1810 Core 环境 内网环境 无公网出口 YUM源 本地yum MySQL版本 5 7 32 Nginx版本 nginx 1 22 0 PHP版本 php 7
  • zabbix监控实战示例

    1 监控TCP 连接数 1 创建conf文件引用脚本 vim usr local zabbix etc zabbix agentd conf d all conf 或者 vim usr local zabbix etc zabbix age
  • 监控专题zabbix

    官网 zabbix com 官网源可以去阿里云镜像 然后单独用一台服务器连接外网使用reporsync同步repo本地源 就可以实现内网的源更新了 vim etc repos d zabbix repo reporsync repoid 仓
  • Zabbix--部署--03--proxy安装--6.0

    Zabbix 部署 03 proxy安装 6 0 1 介绍 1 1 官方安装文档 https www zabbix com cn download 1 2 环境介绍 操作系统 centos7 zabbix版本 6 0 LTS 2 准备工作
  • Zabbix监控httpd服务

    Zabbix监控httpd服务 一 工作要求及目的 二 WEB配置步骤 1 进入监控主机列表 2 链接模板 3 查看自定义HTTP端口监控项 4 查看自定义的触发器 三 客户端测试http服务停止报警 1 停止服务 2 查看web端报警 3
  • Zabbix5.0设置模板 (超详细解析)

    zabbix部署请见上一篇文章 http t csdn cn yF1JG 一 zabbix模板 模板概述 Zabbix为用户提供了很多开箱即用的模板 具体模板可通过配置 模板查看 模板大概分类如下 网络设备的标准化模板 对交换机和路由器等网
  • 性能调优篇07:Zabbix性能优化的几点原则

    性能调优 概述 使Zabbix系统正确调整以获得最佳性能是非常重要的 Zabbix性能优化的几点原则 确保zabbix内部组件性能处于被监控状态 调优的基础 使用硬件性能足够好的服务器 不同角色分开 使用各自独立的服务器 使用分布式部署 调
  • Zabbix监控服务详解+实战

    目录 一 监控体系概述 1 为什么需要监控 2 监控目标与流程 1 监控的目标 2 监控的流程 3 监控的对象 1 CPU监控 2 磁盘监控 3 内存监控 4 网络监控 5 系统重要进程监控 6 应用服务监控 7 硬件设备监控 8 安全监控
  • 【Zabbix实战之部署篇】Zabbix监控windows系统配置方法

    Zabbix实战之部署篇 Zabbix监控windows系统配置方法 一 检查Zabbix监控平台状态 1 检查Zabbix各组件状态 2 检查Zabbix的首页 二 下载windows代理 1 访问Zabbix官网下载界面 2 查看下载安
  • zabbix配置钉钉告警、和故障自愈、监控java

    文章目录 1 配置钉钉告警 server 配置 web界面创建媒介 给用户添加媒介 测试告警 实现故障自愈功能 监控Java zabbix server 安装java gateway 配置 Zabbix Server 支持 Java gat
  • Zabbix学习笔记(二)Zabbix的配置

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 目录 前言 1 数据库设置 2 zabbix 服务器设置 1 访问并配置zabbix 总结 前言 近期学习网络运维监控方面的知识 在使用Zabbix系统中遇到了许多的问题 在
  • Zabbix的web界面基本操作

    Zabbix的web界面基本操作 一 查看客户端运行状态 1 查看客户端监听端口 2 查看客户端服务及进程 二 服务端状态检查 1 服务端端口监听 2 查看客户端的hostname获取情况 三 zabbix的web网页基本配置 1 登录查看
  • zabbix设定监控指标每天调用一次

    添加了数据库备份的监控项 因为备份每天只做一次 如果一直取数意义不大 所以设定在每条早上9点取一次值 设定方式如图 更新间隔需要修改为0 否则还会按照间隔获取信息 选择调度 h表示小时 h9表示每天九点
  • Zabbix appliance 6.4.4 安装vmware tools

    虚拟机选择 Linux kernel4 0 32bit 点击 安装vmware tool mount dev cdrom mnt mkdir tmp vmware cd tmp vmware cp mnt yum install tar t
  • Zabbix的模板管理与配置

    Zabbix的模板管理与配置 一 查看默认模板的配置项 1 打开客户端信息配置界面 2 选择默认模板的监控项 二 服务端获取客户端的监控项 1 获取客户端系统相关监控项 2 获取客户端硬盘信息等相关监控项 三 创建自定义监控项的key 1
  • 【Zabbix实战之故障处理篇】Zabbix-proxy服务启动失败解决方法

    Zabbix实战之故障处理篇 Zabbix proxy服务启动失败解决方法 一 故障说明 1 故障说明 2 故障截图 二 配置环境检查 1 检查zabbix proxy conf文件 2 检查mysql8 0数据库状态 三 故障处理思路 四
  • Dockerized Zabbix:服务器无法通过 IP 连接到代理

    Problem 我正在尝试使用 Zabbix 的 Docker Compose 存储库在 Ubuntu 20 04 LTS 上配置完全容器化的 Zabbix 6 0 版监控系统HERE 我用来启动 Zabbix 服务器和 Zabbix 代理
  • zabbix UserParameter返回2个或多个值

    i use UserParameter Firebird F tools zabbix agent firebird Firebird bat 1 如何在 1 次运行的 bat 文件中获取两个或更多值 您正在寻找https www zabb
  • 如何使 nixos 上的 Zabbix 在本地网络中可用

    我的笔记本电脑和我的 nixos 服务器 主机名 nixos 都连接到我的路由器 fritz box 我可以通过 ping 访问 rooter ping nixos fritz box 和 ssh ssh email protected c

随机推荐

  • 分苹果

    描述 把M个同样的苹果放在N个同样的盘子里 允许有的盘子空着不放 问共有多少种不同的分法 注意 假如有3个盘子7个苹果 5 1 1和1 5 1 是同一种分法 输入 t 表示测试组数 t lt 10 然后t行 每行包含两个数M N 1 lt
  • Qt信号槽连接失败的两种情况

    Qt的信号槽在平常工作中用的很多 今天在调试程序的时候 出现了两种链接失败的情况 链接代码如下 bool b connect this SIGNAL signalTest std string unsigned int SLOT onTes
  • C++ 类和对象-封装

    C 面向对象的三大特征为 封装 继承 多态 C 认为所有事物都能成为对象 对象上有其属性和行为 例如 人可以作为对象 属性有姓名 年龄 身高 行为有走 跑 跳 车可以作为对象 属性有轮胎 车灯 方向盘 行为有载人 放音乐 封装 属性和行为作
  • Linux循环

    for循环迭代 for var in list do commands done 或 for C语言格式 以上为for循环格式 其中的list可以为字符串 通过IFS分隔 也可以为序列 序列生成方式如下 1 5 a z A Z while循
  • Android4.0 中关于内外置sd卡——读写及权限问题

    在android4 0源码出来以后 关于sd卡问题似乎没有解决好 起码上层api中没有体现到位 其实在framework层中有相应的类去获得内外置sd卡信息 是否可读写的权限 在2 x的版本中 在manifest中配置的权限android
  • Android系统屏保功能开发(Android10)

    Android系统屏保功能开发 1 AndroidManifest xml 文件配置 需要先配置为系统应用
  • IPSec ***不通时的故障处理方法

    IPSec 不通 介绍了IPSec 不通时的故障处理方法 现象描述 如图1所示 管理员希望在NGFW A和NGFW B之间建立IKE方式的IPSec隧道 使网络A和网络B的用户可以通过IPSec隧道互相访问 图1 IPSec 不通组网图 配
  • mysql大量数据迁移

    http blog csdn net blakefez article details 51076588 最近有个需求 要把机器a上的一个数据库迁移到机器b上 这个数据库的数据有100多个G 所以 果断抛弃用mysqldump的方法来迁移
  • SWD调试接口接上下拉电阻

    在使用NXP的Kinetis系列的KV1X的MCU时 此款芯片只有SWD调试接口 在使用kei调试和下载过程中时不时会找不到SWD接口或者芯片被锁住 检查电源稳定纹波很小 NMI已上拉10k电阻 可以在jlink Command中找到内核并
  • MYSQL--基础--04--索引原理

    MYSQL 基础 04 索引原理 1 索引原理 1 1 索引的目的 提高查询效率 与我们查阅图书所用的目录是一个道理 先定位到章 然后定位到该章下的一个小节 然后找到页数 1 2 索引的本质 通过不断地缩小想要获取数据的范围来筛选出最终想要
  • 3.全志H3-编译官方BSP

    上面是我的微信和QQ群 欢迎新朋友的加入 原文链接 http wiki friendlyarm com wiki index php Building U boot and Linux for H5 H3 H2 2B zh 使用全志原厂BS
  • [编程入门]猴子吃桃的问题(JAVA解法)

    题目描述 猴子吃桃问题 猴子第一天摘下若干个桃子 当即吃了一半 还不过瘾 又多吃了一个 第二天早上又将剩下的桃子吃掉一半 又多吃一个 以后每天早上都吃了前一天剩下的一半零一个 到第N天早上想再吃时 见只剩下一个桃子了 求第一天共摘多少桃子
  • 机器学习_深度学习毕设题目汇总——问答

    下面是该类的一些题目 题目 基于关系建模的视觉问答研究 基于注意力机制与高层语义的视觉问答研究 基于深度学习的交互式问答技术研究 基于深度学习的结构化数据问答方法研究 智能视觉问答中关键问题的理论与方法研究 社区问答平台上多因素融合的答案选
  • 上传自己封装的python包到PyPI

    请参考 https www jianshu com p 81fe5a5cd27a
  • 【数据结构】顺序表实现增删查改

    目录 1 顺序表的创建 1 1 静态版 1 2动态版 2 顺序表初始化 2 1传值初始化 2 2传址初始化 3 实现尾插 4 打印函数 5 头插 6 检查空间容量 7 尾删 8 释放空间函数 9 头删 10 在某处插入 11 某地方删除 1
  • CppUTest——【由JUnit移植过来的】C++单元测试框架——的下载安装

    C 单元测试框架CppUTest的下载与安装 简介 下载地址 单元测试框架下载 单元测试被测工程下载 安装 安装Cygwin 下载地址 安装步骤 手动安装CMake 编译单元测试框架CppUTest 导入到Virtual Studio 准备
  • c++在线编译器

    https wandbox org
  • PID控制的深入探讨(位置式PID、增量式PID、PID的积分饱和)

    本文主要探讨PID算法在使用时的一些实际问题 处理技巧和方法 学习本节内容需要先对PID控制算法有基本的了解 1 PID控制的基本原理 PID是一个二阶线性控制器 它具有不需要建立数学模型 控制效果好 良好的鲁棒性等等优点 它的原理如下图
  • go grpc实战

    go rpc实战 什么是rpc以及rpc的原理就不加以阐述了 wiki rpc对其进行了说明 本文 以登录过程为例 使用go作为开发语言 使用grpc库实现了登录接口 具体过程及代码如下所示 环境准备 在app的同级目录创建appGoPat
  • zabbix 监控Linux TCP/UDP端口流量

    zabbix agent客户端在Linux服务器安装之后 服务器端配置上Template OS Linux这个模板 就会自动搜索该服务器上的所有网卡 然后实时记录income流量和outcome流量 并绘制成图标显示 如下 有这个粗略的统计