首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在LogQL中添加两个要在聚合函数中使用的字段

在LogQL中添加两个要在聚合函数中使用的字段
EN

Stack Overflow用户
提问于 2022-06-22 18:35:30
回答 1查看 1.1K关注 0票数 1

我有包含一些时间戳字段的日志行。下面是我正在筛选的日志行的一个示例,以便对其进行处理:

代码语言:javascript
复制
{
  "time": "2022-06-22T10:33:08.710037238Z",
  "@version": "1",
  "message": "Duration at response processing ends",
  "logger_name": "com.mks.cloud.filters.MainFilter",
  "thread_name": "reactor-http-epoll-1",
  "level": "INFO",
  "level_value": 20000,
  "rqst_id_ts": "b65c37d9284584e71b1dcd84b6a74075",
  "rqst_end_ts": "1655893988698",
  "rqst_start_ts": "1655893988698",
  "rsp_start_ts": "1655893988709",
  "rsp_end_ts": "1655893988709"
}

我想要做的是计算一个值,该值表示日志行中两个时间戳之间的持续时间,这样我就可以将获得的范围放入quantile_over_time()或任何其他聚合函数中。

例如,以下工作:

代码语言:javascript
复制
quantile_over_time(0.99, {app="myapp"} |~ "rsp_end_ts"
      | json
      | __error__ = ""
      | unwrap rsp_end_ts | __error__="" [5m]) by (tsNs)

然而,这不是我想要做的,因为计算时标的分位数是没有意义的。我要计算的是p99 of (rsp_end_ts - rqst_start_ts)。

我尝试了以下当然不起作用的方法,但给出了我试图做什么的想法:

代码语言:javascript
复制
quantile_over_time(0.99, {app="myapp"} |~ "rsp_end_ts"
      | json
      | __error__ = ""
      | unwrap (rsp_end_ts - rqst_start_ts) | __error__="" [5m]) by (tsNs)

如果有一种方法可以创建像rqst_duration=(rsp_end_ts - rqst_start_ts)这样的新标签

下面就是我要找的东西:

代码语言:javascript
复制
quantile_over_time(0.99, {app="myapp"} |~ "rsp_end_ts"
      | json
      | __error__ = ""
      | unwrap rqst_duration | __error__="" [5m]) by (tsNs)

我找不到关于这方面的任何文档,这让我很惊讶,我认为(但似乎我可能错了)这是一个常见的用例。任何帮助都将不胜感激:)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-23 13:35:22

为此您可以使用模板函数。下面是一个关于格拉法纳游乐场的示例查询,您可以从中得到启发。

因此,您的查询将类似于:

代码语言:javascript
复制
{app="myapp"} |~ "rsp_end_ts"
      | json
      } label_format result=`{{sub .rsp_end_ts rqst_start_ts}}` | line_format "{{ .result }}" 

然后你可以使用结果。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72720466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档