如何计算Loki日志行中两个时间戳之间的时间间隔值?
计算Loki日志行中两个时间戳的时长
目标日志内容
2022-07-28 00:19:44 Ana-Utils279 {"message": "Loaded ana_model", "timestamp": "2022-07-27T18:49:44.682875Z", "level": "INFO", "module": "Ana-Utils", "process": 279} 2022-07-28 00:19:44 Topo-Utils279 {"message": "Filtering out small font text from LW", "timestamp": "2022-07-27T18:49:44.326452Z", "level": "INFO", "module": "Topo-Utils", "process": 279} 2022-07-28 00:19:44 Topology-Inference279 {"message": "topology processing doc..", "timestamp": "2022-07-27T18:49:44.289498Z", "level": "INFO", "module": "Topology-Inference", "process": 279} 2022-07-28 00:19:44 Topo-Utils279 {"message": "Subscribed to Topo Update channel", "timestamp": "2022-07-27T18:49:44.260830Z", "level": "INFO", "module": "Topo-Utils", "process": 279}
手动计算时长
1. 提取目标时间戳
从日志中选取需要对比的两个时间戳,比如取该进程下最早和最晚的日志时间:
- 最早时间:
2022-07-27T18:49:44.260830Z(对应"Subscribed to Topo Update channel"日志) - 最晚时间:
2022-07-27T18:49:44.682875Z(对应"Loaded ana_model"日志)
2. 计算时间差
将时间戳转换为纳秒级数值后相减:
- 最早时间纳秒值:1658957384260830000
- 最晚时间纳秒值:1658957384682875000
- 时长:
1658957384682875000 - 1658957384260830000 = 422045000纳秒,即 422.045毫秒
Loki中用LogQL自动计算
如果要直接在Loki中批量计算指定进程的日志时间跨度,可使用以下LogQL查询:
sum by (process) ( max_over_time({process="279"} | json | unwrap timestamp [1m]) - min_over_time({process="279"} | json | unwrap timestamp [1m]) )
该查询会提取进程279的所有日志时间戳,计算最大值与最小值的差值,得到该进程这段时间内的日志时间跨度。
内容的提问来源于stack exchange,提问作者Aniket Singh
相关产品推荐
相关产品推荐

