bandwidthd-ye 是一款高性能的通用流量可视化工具。它能够处理多维度的流量记录,并通过现代化的 Web 界面提供实时或历史流量的交互式分析视图。
- 灵活的数据接入: 前端支持直接加载原始 CSV/CDF 文件,也支持加载由 C 语言预处理器生成的压缩 JSON 数据。
- 性能优化 (可选): 提供的 C 语言预处理器
preprocessor可处理 GB 级别的原始日志,将其聚合压缩为极小的 JSON 包,极大地提升 Web 端加载速度并减少带宽占用。 - 全时间维度: 支持 1小时(原始/精细)、1天、1周、1月、1年五种粒度的视图。
- 深度分析: 提供基于 IP 和协议(HTTP, TCP, UDP, ICMP, FTP, SMTP)的双向流量统计与 Top 排名。
注意: 本程序只有将流量数据可视化的功能,没有获取流量数据的功能
项目支持两种数据格式:原始 CSV 格式 和 预处理 JSON 格式。
源文件可以是 .csv, .cdf, .txt 等。每一行代表一个特定时间点、特定 IP 的流量快照。字段通过英文逗号 , 分隔。
| 索引 | 字段名 | 说明 |
|---|---|---|
| 0 | IP 地址 | 字符串 (如 192.168.1.1) |
| 1 | 时间戳 | Unix Timestamp (秒) |
| 2 - 8 | 下载数据 | 依次为:总下载, ICMP, TCP, HTTP, FTP, UDP, SMTP (字节) |
| 9 - 15 | 上传数据 | 依次为:总上传, ICMP, TCP, HTTP, FTP, UDP, SMTP (字节) |
注意: 前端解析器具备容错性,如果列数不足 16 列,缺失部分将自动补零。
由 preprocessor 生成。采用紧凑数组结构以极大地减小文件体积。
核心结构:
{
"ts": 1700000000,
"ranges": {
"1h": {
"buckets": [
{
"ts": 1700000000,
"d": {
"192.168.1.1": [
上传总量, 下载总量,
ICMP_上, ICMP_下,
TCP_上, TCP_下,
HTTP_上, HTTP_下,
FTP_上, FTP_下,
UDP_上, UDP_下,
SMTP_上, SMTP_下
]
}
}
]
}
}
}直接在前端上传原始 CSV 文件或通过配置 autoLoadUrl 指向一个 CSV 地址。
- 优点: 部署极其简单,只需
index.html。 - 缺点: 浏览器处理数万行以上的原始数据时可能会有短暂卡顿。
使用 C 预处理器在服务器端定期处理日志。
- 编译:
gcc preprocessor.c -o preprocessor -lm - 处理:
./preprocessor log.csv data.json - 部署: 使前端加载生成的
preprocessed_data.json。
- 优点: 极速加载,即便原始数据有几千万行,前端加载的也只是聚合后的几百 KB 结果。
preprocessor 是一个高性能的 C11 程序,负责将原始的逐行流量日志聚合为浏览器易于处理的 JSON 格式。
在包含 preprocessor.c 的目录下运行:
gcc preprocessor.c -o preprocessor -lm./preprocessor [选项] [输入文件] [输出文件]- 不带参数: 生成和读取同目录下的默认配置文件
preprocessor.conf进行配置,并运行一次预处理,生成preprocessed_data.json文件。 - 指定文件: 传入
input_file和output_file将覆盖配置文件中的路径设置。 -w,--watch(监听模式): 程序将常驻后台,持续监控输入文件的修改时间。一旦发现文件更新(如 bandwidthd 写入了新日志),程序会立即重新生成 JSON。
首次运行程序时会自动在同目录下生成默认配置。
| 配置项 | 说明 | 默认值 |
|---|---|---|
swap_up_down |
是否交换上传/下载定义 (0 或 1) | 1 |
interval_1h |
1小时视图的分桶间距 (秒)。设为 0 则保留原始点。 | 0 |
interval_1d |
1天视图的分桶间距 (秒)。 | 1400 |
watch_interval |
监听模式下的检查频率 (秒)。 | 5 |
input_file |
默认输入的 CSV/CDF 路径。 | /log.1.0.cdf |
output_file |
默认输出的 JSON 路径。 | preprocessed_data.json |
路径规则: 所有相对路径均相对于 预处理器可执行文件 所在的目录,而非当前终端的工作目录。
- 前端: HTML5, CSS3 (Glassmorphism), Chart.js v4, PapaParse
- 后端: 标准 C11
Generated by bandwidthd-ye - 洞察流量,尽在掌握。