Cloudflare Analytics Dashboard

25 年 8 月 30 日 星期六 (已编辑)
1153 字
6 分钟

Cloudflare Analytics Dashboard

多账户、多 Zone 的 Cloudflare 流量分析仪表盘

Demo

功能特性

  • 支持多个 Cloudflare 账户
  • 多 Zone 流量监控
  • 实时数据图表展示
  • 历史数据分析(支持 1 天、3 天、7 天、30 天)
  • 数据精度智能切换:
    • 1 天和 3 天数据:小时级精度
    • 7 天和 30 天数据:天级精度
  • 多语言支持(中文/英文)
  • 地理位置统计(前 5 个国家/地区访问统计)
  • 缓存分析和性能监控
  • 响应式设计(完美适配桌面端和移动端)

技术栈

  • 前端:React + Recharts
  • 后端:Node.js + Express
  • 部署:Docker + Nginx

快速开始

视频教程

现在支持三种部署方式,按优先级排序:

方式 1: Docker Compose

如果您想要最快速的部署方式,只需运行以下命令:

bash
# 创建项目目录
mkdir cloudflare-analytics
cd cloudflare-analytics

# 下载 Docker Compose 配置文件
wget https://raw.githubusercontent.com/Geekertao/cloudflare-analytics/main/docker-compose.yml

#若您服务器位于国内,请执行下命令(使用我维护的Github镜像加速)
wget https://gh.dpik.top/https://raw.githubusercontent.com/Geekertao/cloudflare-analytics/main/docker-compose.yml

# 编辑配置文件(添加您的 Cloudflare Token 和 Zone 信息)
nano docker-compose.yml  # 或使用 vim docker-compose.yml

# 启动服务
sudo docker compose -f docker-compose.yml up -d

方式 2: Docker Run 命令(单容器部署)

bash
# 单账户配置
docker run -p 80:80 \
  -e CF_TOKENS="你的Cloudflare_API_Token" \
  -e CF_ZONES="zone_id_1,zone_id_2" \
  -e CF_DOMAINS="example.com,cdn.example.com" \
  -e CF_ACCOUNT_NAME="我的主账户" \
  geekertao/cloudflare-analytics

# 多账户配置
docker run -p 80:80 \
  -e CF_TOKENS_1="token1" \
  -e CF_ZONES_1="zone1,zone2" \
  -e CF_DOMAINS_1="site1.com,site2.com" \
  -e CF_ACCOUNT_NAME_1="账户1" \
  -e CF_TOKENS_2="token2" \
  -e CF_ZONES_2="zone3,zone4" \
  -e CF_DOMAINS_2="site3.com,site4.com" \
  -e CF_ACCOUNT_NAME_2="账户2" \
  geekertao/cloudflare-analytics

# JSON格式配置
docker run -p 80:80 \
  -e CF_CONFIG='{"accounts":[{"name":"主账号","token":"your_token","zones":[{"zone_id":"zone1","domain":"example.com"},{"zone_id":"zone2","domain":"cdn.example.com"}]}]}' \
  geekertao/cloudflare-analytics

方式 3: 配置文件(传统方式)

编辑 server/zones.yml 文件:

yaml
accounts:
  - name: '账户名称'
    token: '你的Cloudflare API Token'
    zones:
      - domain: 'example.com'
        zone_id: '你的Zone ID'

🎯 部署完成后

  • 访问 http://ip:端口 查看仪表盘
  • 确保在 docker-compose.yml 中正确配置了您的 Cloudflare API Token 和 Zone 信息
  • 首次启动可能需要几分钟来获取数据

🚀 本地开发步骤

  1. 克隆项目
bash
git clone https://github.com/Geekertao/cloudflare-analytics.git
cd cloudflare-analytics
  1. 生成 package-lock.json 文件(重要!)
bash
# 方法1:手动生成(推荐)
cd web && npm install --package-lock-only && cd ..
cd server && npm install --package-lock-only && cd ..

# 方法2:使用辅助脚本
node generate-lockfiles.js
  1. 启动服务
bash
# 使用Docker Compose(推荐)
docker-compose up -d

# 或者直接构建运行
docker build -t cf-analytics .
docker run -p 80:80 \
  -e CF_TOKENS="your_token" \
  -e CF_ZONES="your_zone_id" \
  -e CF_DOMAINS="your_domain" \
  cloudflare-analytics

Cloudflare API Token 配置

要使用此仪表盘,您需要创建一个具有以下权限的 Cloudflare API Token:

  1. Account | Analytics | Read
  2. Zone | Analytics | Read
  3. Zone | Zone | Read

您可以在此处创建 Token:https://dash.cloudflare.com/profile/api-tokens

📋 Token 权限 vs 配置的 Zone

重要说明:Token 权限和实际配置的 Zone 是两个不同的概念:

Token 权限范围

  • 您的 Cloudflare API Token 可能有权限访问账户下的所有 Zone
  • Token 验证时会显示类似:Token可访问 10 个Zone
  • 这表示您的账户总共有 10 个 Zone,Token 都可以访问

项目配置的 Zone

  • 您可以选择性地配置需要监控的 Zone
  • 例如:只配置 3 个重要的 Zone 进行监控
  • 系统会显示:配置加载成功: 1 个账户 (3 个 zones)

日志示例

bash
[Token验证] Token可访问 10 个Zone              # ← Token 权限范围
 账户 Test Token验证成功,可访问 10 个Zone
 Zone example.top (xxx) 可访问            # ← 配置的具体Zone
 Zone example.com (xxx) 可访问
 Zone example.cn (xxx) 可访问

配置加载成功: 1 个账户 (3  zones)              # ← 实际监控的Zone数量

这种设计的优势

  • 🔒 安全性:Token 权限验证确保配置的 Zone 都是可访问的
  • 🎯 灵活性:您可以选择只监控重要的 Zone,避免信息过载
  • 📊 性能:减少不必要的数据获取,提高系统响应速度
  • 🔧 扩展性:将来可以轻松添加更多 Zone 到监控列表

数据更新频率

  • 后端数据更新:每 2 小时更新一次
  • 数据量控制:
    • 小时级数据:最多 168 个数据点(7 天范围)
    • 天级数据:最多 45 个数据点(45 天范围)

环境变量

  • CF_TOKENS: Cloudflare API 令牌(每个账户用英文逗号分隔)
  • CF_ZONES: Zone ID(英文逗号分隔)
  • CF_DOMAINS: 域名(英文逗号分隔)
  • CF_ACCOUNT_NAME: 账户显示名称

功能概览

数据可视化

  • 统计卡片:总请求数、总流量、总威胁数
  • 缓存分析:请求和带宽缓存统计,配有饼状图
  • 地理位置统计:显示当天前 5 个国家/地区的访问量(仅在单日数据视图中显示)
  • 流量趋势:显示小时/天级趋势的折线图

文章标题:Cloudflare Analytics Dashboard

文章作者:Geekertao

文章链接:https://blog.geekertao.top/posts/cloudflare-analytics[复制]

最后修改时间:


Layer 1

商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。