有没有办法在基于正则表达式的 LOKI 查询中使用推断值?
Posted
技术标签:
【中文标题】有没有办法在基于正则表达式的 LOKI 查询中使用推断值?【英文标题】:Is there a way to use inferred values in a regex based LOKI query? 【发布时间】:2021-12-31 22:41:11 【问题描述】:我的 Loki 数据源中确实有以下日志行:
Trace_MSG_IN: 933a1425-5e62-545d-9947-274c5b870607
Trace_MSG_IN: 933a1425-5e62-545d-9947-274c5b870607
Trace_MSG_CR: 933a1425-5e62-545d-9947-274c5b870607
Trace_MSG_IN: a37da313-512a-50e6-9050-fd917b30c632
Trace_MSG_CR: a37da313-512a-50e6-9050-fd917b30c632
要创建适当的图表,所需的输出将是找到消息标识符的频率以及跟踪点的类型:
msg_id=933a1425-5e62-545d-9947-274c5b870607, type=IN => 2
msg_id=933a1425-5e62-545d-9947-274c5b870607, type=CR => 1
msg_id=a37da313-512a-50e6-9050-fd917b30c632, type=IN => 1
msg_id=a37da313-512a-50e6-9050-fd917b30c632, type=CR => 1
以下 LogQL 查询进行分组,但我看不到如何集成计数功能。
build="runtimeidentifier" |= "Trace_MSG_" | regexp "(?P<type>(CR|IN)): (?P<msg_id>[a-z0-9.-]36)"
我尝试基于https://grafana.com/blog/2021/01/11/how-to-use-logql-range-aggregations-in-loki/#a-word-on-grouping 集成计数功能,查询如下:
count by(msg_id) (build="runtimeidentifier" |= "Trace_MSG_" | regexp "(?P<type>(CR|IN)): (?P<msg_id>[a-z0-9.-]36)" | type = "CR" )
但这会导致语法错误
parse error at line 1, col 155: syntax error: unexpected )
以及此查询的其他变体:
count_over_time(build="runtimeidentifier" |= "Trace_MSG_" | regexp "(?P<type>(CR|IN)): (?P<msg_id>[a-z0-9.-]36)" [10m])
(同样的错误)
有没有办法在查询中使用不是日志行显式部分的推断值?
【问题讨论】:
【参考方案1】:这样的事情怎么样:
sum by (type, msg_id) (count_over_time(build="runtimeidentifier" |= "Trace_MSG_" | pattern `Trace_MSG_<type>: <msg_id>` [$__interval]))
不确定我是否完全符合您的模式,但您可以看到一个示例 here,这与您想要完成的非常相似:
【讨论】:
以上是关于有没有办法在基于正则表达式的 LOKI 查询中使用推断值?的主要内容,如果未能解决你的问题,请参考以下文章