bandwidthd怎样生成流量图表

联启 网络工具 17

BandwidthD流量图表生成全攻略:从安装到可视化配置详解

📑 目录导读

  1. BandwidthD是什么?核心功能解析
  2. 环境搭建与安装步骤(支持Linux/Windows)
  3. 数据采集配置:网卡监听与协议过滤
  4. 流量图表生成机制与可视化参数调优
  5. 常见问题问答(FAQ)

BandwidthD是什么?核心功能解析

BandwidthD 是一款开源的网络流量监控与图表生成工具,它通过被动监听网络接口上的数据包,统计每个IP地址的入站/出站流量,并以HTML图表形式呈现,与Zabbix、MRTG等主流工具相比,BandwidthD无需配置SNMP,仅通过libpcap抓包即可工作,特别适合中小型网络环境快速了解带宽使用情况。

bandwidthd怎样生成流量图表-第1张图片-电脑手机工具软件下载 - 免费实用工具合集 | 联启科技

核心特性:
  • 基于IP的流量分类:按源/目的IP统计TCP/UDP流量,自动生成主机排名。
  • 自动更新图表:默认每5分钟生成一张PNG图表,支持查看过去2小时、8小时、1天、7天、30天等时间粒度。
  • 低资源占用:仅记录流量汇总数据,不存储原始数据包,占用磁盘空间小。
  • Web可视化:自带简单HTTP服务器,浏览器即可查看动态流量图。

环境搭建与安装步骤(支持Linux/Windows)

1 Linux环境部署(以Ubuntu 22.04为例)
# 更新系统包
sudo apt update && sudo apt upgrade -y
# 安装依赖库
sudo apt install -y libpcap-dev gcc make php5-gd php5-mysql rrdtool
# 下载BandwidthD源码
wget https://sourceforge.net/projects/bandwidthd/files/latest/download -O bandwidthd.tar.gz
tar -xzf bandwidthd.tar.gz && cd bandwidthd-*
# 编译安装
./configure && make && sudo make install -y

安装完成后,配置文件位于 /etc/bandwidthd.conf,默认数据目录为 /var/lib/bandwidthd

2 Windows环境部署(需Cygwin支持)
  1. 安装Cygwin时勾选 libpcap-develgcc-coremake
  2. 进入Cygwin终端,按Linux相同步骤编译。
  3. 运行前需安装 WinPcap 驱动。
3 Docker极速部署方案
# 使用现成镜像(推荐新手)
docker run -d --name=bandwidthd \
  -p 8080:8080 \
  -p 80:80 \
  -v /path/to/data:/var/lib/bandwidthd \
  -e INTERFACE=eth0 \
  --network=host \
  jchavonet/bandwidthd

数据采集配置:网卡监听与协议过滤

1 关键配置参数(/etc/bandwidthd.conf
# 指定监听网卡(必须与网络服务网卡一致)
interfaces eth0
# 监听子网范围(默认所有流量,可限制为内网段)
subnet 192.168.1.0/24
# 数据存储目录
output_dir /var/lib/bandwidthd
# 图表生成轮询间隔(秒)
# 默认300秒(5分钟),建议60秒实时监控
interval 60
# 历史数据保留时长(天数)
history 30
# 开启HTTP服务端口
html_host 0.0.0.0:8080
2 协议过滤优化
  • 仅统计HTTP流量:在配置中添加 filter tcp port 80
  • 排除内网互访:使用 filter not (net 192.168.0.0/16) 减少噪声。
  • 监控特定主机:调整HTTP服务器脚本,通过白名单限制输出。
3 启动与验证
# 前台运行(用于调试)
sudo bandwidthd -t -f -c /etc/bandwidthd.conf
# 后台服务化
sudo systemctl enable bandwidthd && sudo service bandwidthd start
# 检查数据是否生成
ls -la /var/lib/bandwidthd/*.rrd

流量图表生成机制与可视化参数调优

1 图表生成原理

BandwidthD使用RRDtool作为数据引擎:

  1. 数据采集:通过libpcap捕获网络包,按IP对流量进行累加。
  2. 数据存储:每5分钟(可调)将累计值写入.rrd轮循数据库,自动去除重复数据。
  3. 图表渲染:通过PHP脚本调用RRDtool的graph命令,生成PNG格式流量柱状图。
2 图表类型与解读

默认生成的图表包含四类:

  • In/Out字节图:蓝色为入站,红色为出站,Y轴为字节数。
  • TCP/UDP包数统计:展示协议分布情况。
  • Top N主机流量排行:按IP排序,鼠标悬停显示具体数值。
  • 带宽利用率时间轴:X轴为时间,Y轴为带宽百分比。
3 自定义图表参数

编辑 /etc/bandwidthd/httpd/bandwidthd.conf 可调整:

  • 时间范围:修改$graph_times数组,例如只保留24小时和7天图。
  • 颜色方案:通过colors.php修改RGB值。
  • 分辨率$graph_width=800; $graph_height=200;
4 数据导出与集成
  • RRD数据备份/var/lib/bandwidthd/*.rrd 可直接用于Grafana。
  • JSON格式输出:访问 http://server:8080/bandwidthd-json.php 获取实时API。
  • 与Zabbix联动:设置cron每5分钟执行 bandwidthd -o json 并解析入库。

常见问题问答(FAQ)

Q1:为什么图表显示“No Data”? A:最常见原因是网卡未正确监听,请检查:
1)配置中interface是否与实际网卡名称一致。
2)使用tcpdump -i eth0 -c 10测试是否能抓到包。
3)防火墙或SELinux是否阻止libpcap访问。

Q2:能否监控Windows中的无线网卡? A:可以,但Windows下需通过bandwidthd -i \Device\NPF_{GUID}指定NDIS设备ID,可通过windump -D查看所有可用接口ID。

Q3:图表生成的周期如何调整? A:修改配置文件中的interval参数(单位秒),注意:低于60秒可能导致RRDtool频繁写入,增加磁盘I/O压力,建议生产环境保持300秒。

Q4:BandwidthD是否支持IPv6? A:社区版默认不支持,可通过修改snarf.c源码,添加AF_INET6地址族支持,但需重新编译,推荐使用ntopng或sflow工具替代。

Q5:如何保护Web界面访问安全? A:
1)将监听地址改为0.0.1,通过Nginx反向代理添加HTTP Basic认证。
2)限制源IP:<Directory /usr/share/bandwidthd/> Allow from 192.168.1.0/24 </Directory>
3)使用SSL证书加密传输。

Q6:生成的图表模糊不清晰? A:增加$graph_width$graph_height值,同时将RRDtool的--slope-mode参数改为--alt-autoscale以优化线条平滑度。

Q7:能否将图表嵌入其他监控面板(如Grafana)? A:可以!有两种方案:
1)通过BandwidthD的JSON API获取流量数据,用Grafana的Simple JSON数据源呈现。
2)直接读取.rrd文件:rrdtool fetch /var/lib/bandwidthd/192.168.1.1.rrd AVERAGE --res 300


延伸资源

(注:本文所有域名示例均已替换为通用写法,实际部署时请使用完整URL路径)

通过上述步骤,您已掌握BandwidthD从安装、配置到生成专业流量图表的完整流程,若需监控分支机构或超大规模网络,可结合ntopngNetFlow工具实现分布式采集。

标签: 图表生成

抱歉,评论功能暂时关闭!