Grafana面板刷新时在数据与无数据间闪烁问题排查(Loki+JSON日志)
Grafana v12.3.0 + Loki 面板交替显示数据/无数据问题排查
现象描述
- 仪表盘开启自动刷新(5秒/10秒)
- 多个面板(Geomap、Time series、Table)交替呈现两种状态:
- ✅ 正常展示预期数据
- ❌ 显示“No data”
- 上述状态循环往复
数据源与日志背景
- 数据源:Loki
- 日志格式:通过Promtail摄入的JSON行日志
- 日志标签稳定:包含
job="project"、log_type="traps",以及type/layer/trapId等标签
数据有效性验证(Loki API稳定返回数据)
在Grafana显示“No data”的同一时间范围,直接调用Loki API可稳定获取结果:
curl -sG "http://127.0.0.1:3100/loki/api/v1/query_range" \ --data-urlencode 'query={job="project",log_type="traps"} | json | __error__=""' \ --data-urlencode "start=${START_NS}" \ --data-urlencode "end=${NOW_NS}" \ --data-urlencode "limit=50"
说明Loki数据摄入无问题,不稳定现象出现在Grafana的查询/面板处理环节。
示例日志结构(已脱敏)
{ "t": 1234567890, "type": "trap", "ip": "REDACTED", "trapId": "GW_REQ", "reason": "rid=REDACTED", "layer": "gateway", "route": "GET /something", "ua": "REDACTED", "geo_country": "SomeCountry", "geo_country_code": "XX", "geo_city": "SomeCity", "geo_lat": 0, "geo_lon": 0, "dst_lat": 0, "dst_lon": 0 }
面板使用的基础Loki查询
{job="engchat",log_type="traps"} | json | __error__=""
Geomap面板具体配置
- 图层类型:Markers
- 位置模式:Coords(使用提取的JSON字段作为经纬度)
- 部分标记点闪烁更频繁(非所有点同时消失)
- 应用的转换操作:
- 提取JSON字段
- 将经纬度字段转换为数值型
- (可选)分组/整理字段
核心问题与咨询方向
为何Loki的query_range接口持续返回数据时,Grafana面板会交替显示有效结果与“No data”?
需要以下方向的指导:
- Geomap + Loki + JSON + 转换操作的已知问题
- 查询选项(interval / max data points / direction / step)是否会导致交替空帧
- 聚合/转换操作是否会间歇性产生“无字段”情况,触发“No data”
- 稳定跨刷新结果的最佳实践
内容的提问来源于stack exchange,提问作者Xin Lok
相关产品推荐
相关产品推荐

