如何在Grafana中向WebSocket API发送数据?本地配置无数据接收求助
问题分析与解决
你的本地WebSocket服务仅实现了简单的echo逻辑,但Golioth WebSocket数据源需要接收符合时序数据规范的JSON格式内容才能在Grafana中解析展示,普通字符串无法被识别。
解决方案步骤
1. 修改WebSocket服务,输出合规的时序数据
将服务端改为定时发送包含时间戳和指标值的JSON数据,示例代码:
# ----------- 修改后的 server.py----------- import asyncio import websockets import json from datetime import datetime async def send_metrics(websocket, path): # 保持连接,定时发送时序数据 while True: # 构造符合Grafana解析要求的JSON结构 metric_data = { "timestamp": int(datetime.now().timestamp() * 1000), # 毫秒级时间戳 "value": 25 + (asyncio.get_event_loop().time() % 10), # 模拟波动数值 "metric": "temperature" } await websocket.send(json.dumps(metric_data)) await asyncio.sleep(2) # 每2秒发送一次 asyncio.get_event_loop().run_until_complete(websockets.serve(send_metrics, 'localhost', 8765)) asyncio.get_event_loop().run_forever()
2. 配置Grafana查询规则
在Grafana的查询编辑界面:
- 选择对应的WebSocket数据源
- 在查询配置中,指定时间字段为
timestamp,数值字段为value,标签字段可设为metric - 切换到表格/图表视图,即可看到实时更新的数据
关键说明
Golioth WebSocket数据源默认期望数据是时序结构,必须包含可识别的时间戳和数值字段,普通文本或非结构化JSON无法被自动解析。如果需要自定义数据格式,需在数据源配置中调整字段映射规则。
内容的提问来源于stack exchange,提问作者Parting
相关产品推荐
相关产品推荐

