You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

带时间戳的定时JSON数据可视化方案咨询(含Grafana需求)

方案一:生成静态图片文件(无编程基础友好)

准备工作

  • 确认Linux虚拟机的Python环境:打开终端输入 python3 --version,若未安装则执行 sudo apt install python3 python3-pip(Debian/Ubuntu系)。
  • 安装数据处理与绘图依赖:运行 pip3 install pandas matplotlib。

数据处理与绘图脚本

创建名为 plot_prices.py 的文件,复制以下代码并修改 folder_path 为你的JSON文件实际存储路径:

import os
import json
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime

# 替换为你的JSON文件所在文件夹路径
folder_path = "/home/yourname/json_data"

data = []
# 遍历所有JSON文件
for filename in os.listdir(folder_path):
    if not filename.endswith(".json"):
        continue
    # 从文件名提取时间
    time_str = filename.split(".")[0]
    try:
        timestamp = datetime.strptime(time_str, "%Y-%m-%d_%H-%M-%S")
    except:
        continue
    # 读取文件内容
    with open(os.path.join(folder_path, filename), "r") as f:
        items = json.load(f)
    # 提取价格(兼容price和super字段)
    prices = []
    for item in items:
        if "price" in item:
            prices.append(item["price"])
        elif "super" in item:
            prices.append(item["super"])
    # 计算统计值
    if prices:
        data.append({
            "time": timestamp,
            "min": min(prices),
            "max": max(prices),
            "avg": sum(prices)/len(prices)
        })

# 排序并绘图
df = pd.DataFrame(data).sort_values("time")
plt.figure(figsize=(12,6))
plt.plot(df["time"], df["min"], label="最低价格", marker="o")
plt.plot(df["time"], df["max"], label="最高价格", marker="s")
plt.plot(df["time"], df["avg"], label="平均价格", marker="^")

# 配置图表样式
plt.title("价格统计随时间变化")
plt.xlabel("时间")
plt.ylabel("价格")
plt.legend()
plt.xticks(rotation=45)
plt.tight_layout()

# 保存图片
plt.savefig("price_trend.png")
print("图片已保存为price_trend.png")

运行与自动更新

  • 在终端执行 python3 plot_prices.py,当前目录会生成 price_trend.png。
  • 若需每30分钟自动更新:输入 crontab -e,在文件末尾添加 */30 * * * * /usr/bin/python3 /path/to/your/plot_prices.py(替换为脚本实际路径),保存退出即可。

方案二:搭建Grafana仪表盘(使用免费grafana.net账号)

步骤1:安装Telegraf数据代理

Telegraf用于读取JSON文件并发送数据到Grafana Cloud:

sudo apt update && sudo apt install telegraf
sudo systemctl start telegraf
sudo systemctl enable telegraf

步骤2:配置Telegraf

打开配置文件 sudo nano /etc/telegraf/telegraf.conf,完成以下修改:

  1. 替换输出配置(使用你的grafana.net账号中InfluxDB的URL、Token、组织名和桶名):
[[outputs.influxdb_v2]]
  urls = ["https://你的Grafana InfluxDB地址"]
  token = "你的InfluxDB令牌"
  organization = "你的组织名称"
  bucket = "你的桶名称"
  1. 在文件末尾添加JSON文件读取配置:
[[inputs.file]]
  files = ["/path/to/your/json/files/*.json"]
  data_format = "json"
  json_tag_keys = ["name"]
  json_string_fields = ["address", "Nr"]
  # 从文件名提取时间戳
  timestamp = "filename"
  timestamp_format = "2006-01-02_15-04-05"

保存配置后重启服务:sudo systemctl restart telegraf

步骤3:创建Grafana仪表盘

  • 登录grafana.net账号,进入「Dashboards」页面点击「New dashboard」。
  • 添加面板,选择你的InfluxDB数据源,编写查询:
    • 最低价格:from(bucket: "你的桶名") |> range(start: v.timeRangeStart) |> filter(fn: (r) => r._field == "price" or r._field == "super") |> aggregateWindow(every: v.windowPeriod, fn: min, createEmpty: false) |> yield(name: "min")
    • 最高价格:将上述查询中的fn: min改为fn: max
    • 平均价格:改为fn: mean
  • 调整图表样式(折线图、标题、坐标轴标签),保存仪表盘即可。

故障排查

若数据未显示,查看Telegraf日志:sudo journalctl -u telegraf,检查配置路径或凭证是否正确。

内容的提问来源于stack exchange,提问作者pekohub

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 22:29:55