Skip to content

bandwidthd-ye 是一款高性能的通用流量可视化工具。它能够处理多维度的流量记录,并通过现代化的 Web 界面提供实时或历史流量的交互式分析视图。

Notifications You must be signed in to change notification settings

zhongshen6/bandwidthd-ye

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

bandwidthd-ye: 现代流量可视化与分析方案

image

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 格式

1. 原始文件格式 (CSV/CDF)

源文件可以是 .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 列,缺失部分将自动补零。

2. 预处理 JSON 格式

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_下
            ]
          }
        }
      ]
    }
  }
}

🏗️ 运行模式

模式 A:轻量直接模式 (无需后端)

直接在前端上传原始 CSV 文件或通过配置 autoLoadUrl 指向一个 CSV 地址。

  • 优点: 部署极其简单,只需 index.html
  • 缺点: 浏览器处理数万行以上的原始数据时可能会有短暂卡顿。

模式 B:高性能生产模式 (推荐)

使用 C 预处理器在服务器端定期处理日志。

  1. 编译: gcc preprocessor.c -o preprocessor -lm
  2. 处理: ./preprocessor log.csv data.json
  3. 部署: 使前端加载生成的 preprocessed_data.json
  • 优点: 极速加载,即便原始数据有几千万行,前端加载的也只是聚合后的几百 KB 结果。

🛠️ 后端预处理器详解 (preprocessor)

preprocessor 是一个高性能的 C11 程序,负责将原始的逐行流量日志聚合为浏览器易于处理的 JSON 格式。

1. 编译指南

在包含 preprocessor.c 的目录下运行:

gcc preprocessor.c -o preprocessor -lm

2. 命令行使用

./preprocessor [选项] [输入文件] [输出文件]
  • 不带参数: 生成和读取同目录下的默认配置文件 preprocessor.conf 进行配置,并运行一次预处理,生成preprocessed_data.json文件。
  • 指定文件: 传入 input_fileoutput_file 将覆盖配置文件中的路径设置。
  • -w, --watch (监听模式): 程序将常驻后台,持续监控输入文件的修改时间。一旦发现文件更新(如 bandwidthd 写入了新日志),程序会立即重新生成 JSON。

3. 配置文件 (preprocessor.conf)

首次运行程序时会自动在同目录下生成默认配置。

配置项 说明 默认值
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 - 洞察流量,尽在掌握。

About

bandwidthd-ye 是一款高性能的通用流量可视化工具。它能够处理多维度的流量记录,并通过现代化的 Web 界面提供实时或历史流量的交互式分析视图。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published