我有一个系统将记录导入数据库,然后将导入持续时间记录为 hh:mm:ss.fffffff。这些日志被导入 Loki,我正在尝试在 Grafana 中创建导入时间图。下面是一个示例日志行:
2021-10-13T20:59:41.546540906Z 标准输出 F [10] INFO Import.Actions.Base.ImportController - 导入时间 00:00:04.3612494
我有下面的查询,它使用正则表达式来解析分钟和秒,然后使用 unwrap 和 avg_over_time 来绘制这些值,但它只适用于 1 分钟以下的时间:
sum(avg_over_time({app="import"} | regexp `Import time 00:(?P<processing_mins>\d\d):(?P<processing_secs>\d+\.\d+)` | processing_secs > 0 | unwrap processing_secs [2m]))
当持续时间类似于 00:01:05.000000 时,时间会被误报为 5s,而不是 1m 5s。有没有办法让 Loki / Grafana 将 01:05 理解为持续时间,或者对我提取的两个值进行数学运算并绘制图表?我试图做类似的事情:
sum(avg_over_time({app="import"} | regexp `Import time 00:(?P<processing_mins>\d\d):(?P<processing_secs>\d+\.\d+)` | processing_secs > 0 | unwrap processing_mins * 60 + processing_secs [2m]))
但这不起作用。
我还尝试了以下方法来创建持续时间(文档表明 Loki 理解持续时间https://grafana.com/docs/loki/latest/logql/),但我也遇到了错误:
avg_over_time({app="import"} |= "Import time" | regexp `Import time 00:(?P<processing_mins>\d\d):(?P<processing_secs>\d+\.\d+)` | label_format duration="{{.processing_mins}}m{{.processing_secs}}s" | unwrap duration[1m])
给了我这个错误:
管道错误:'SampleExtractionErr' 系列:'{ error ="SampleExtractionErr", app="import", container="eps-aapimport", duration="00m04.0713535s", filename="/var/log/pods/import -fb874d5fc-9v64l_522d5b82-78c0-4780-a256-f3b95b62e269/import/0.log", job="stable/import", namespace="stable", pod="import-fb874d5fc-9v64l", pod_template_hash="fb874d5fc", processing_mins="00", processing_secs="04.0713535"}'。使用标签过滤器有意跳过此错误。(例如 | error !="SampleExtractionErr")。要跳过所有潜在错误,您可以匹配空错误。(例如错误=“”)标签过滤器也可以在展开之后指定。(例如。克 | 解包延迟 | 错误=“”)