如何使用LogQL在Grafana-Loki中绘制日志时序图表?
解决LogQL时序图表绘制问题
关键步骤与查询语句
要生成时序图表,需完成日志过滤、字段提取、时序聚合三个核心操作,直接使用以下LogQL语句即可实现:
{filename="/var/tmp/myfile/my.log"} |= "Val:" | regexp `^(?P<timestamp>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\+\d{4}) Val: (?P<val>\d+\.?\d*)` | line_format "{{.timestamp}} {{.val}}" | rate_over_time({__value__=~".+"}[$__interval])
语句拆解说明
- 过滤目标日志:
{filename="/var/tmp/myfile/my.log"} |= "Val:"先筛选出包含Val:的有效日志行,避免无效数据干扰。 - 提取核心字段:通过
regexp正则捕获两个关键分组:timestamp:匹配日志开头的ISO格式时间(如2023-08-04T07:31:02+0000)val:匹配Val:后的浮点数值(兼容整数、小数格式)
- 格式化时序格式:
line_format将提取的时间和数值整理为Prometheus可识别的时序结构。 - 生成聚合时序:
rate_over_time按查询面板的时间间隔($__interval)聚合数值,输出可直接绘制图表的时序数据。
注意事项
- 检查日志中的时间合法性:你提供的日志里存在
2023-08-04T51:21:02+0000这种小时为51的无效时间,会导致时间解析失败,需先修正日志中的时间格式。 - 若需使用日志自身时间而非Loki的 ingestion 时间,需确保Loki配置开启了自定义时间戳解析,或在查询中追加
| timestamp .timestamp指定使用提取的时间字段。
内容的提问来源于stack exchange,提问作者Ryu S.
相关产品推荐
相关产品推荐

