在sumologic中如何有条件地聚合多个字段

问题描述 投票:0回答:1

在 sumologic 中,我有两个具有以下性质的日志记录

2024-04-01 - level:INFO - event_type:APIRequestStart - endpoint:someproject/v1?param=x
...
...
...
2024-04-01 - level:INFO - event_type:APIRequestEnd - time_taken:2 - endpoint:someproject/v1?param=x

所以基本上,当 api 请求开始时,它会添加字段

event_type:APIRequestStart
,当 api 请求完成处理时,它会添加字段
event_type:APIRequestEnd
time_taken:2
(处理所花费的时间)。

我想计算,带有

APIRequestStart
的语句数量,我们称之为
no_of_api_calls
,带有
APIRequestEnd
的语句数量,我们称之为
successful_api_calls
,我想计算
time_taken
的平均值。

本质上我想创建一个像这样的表:

端点 没有 api 调用 成功的_api_调用 成功率 平均响应时间
端点/v1 20 20 1 0.2

我能够单独计算所有这三个字段,但无法将它们组合在一个查询中。例如

_source=logs
| parse "* - event_type:* - *"
| if(event_type="APIRequestStart, 1, 0) as success 
| if(event_type="APIRequestEnd", 1, 0) as handled
| sum(success) as no_of_api_calls, sum(handled) as successful_api_calls

是否可以在单个查询中计算所有三个字段,以便我可以创建表视图?感谢您的时间和帮助。

logging sumologic
1个回答
0
投票

您粘贴的查询看起来像是一个接近的解决方案。

解析

就这一行:

| parse "* - event_type:* - *"

看起来不完整。

尝试:

| parse "* - event_type:* - *" as irrelevant1, event_type, irrelevant2

如果不添加,

| parse
运算符将无法运行。 此外,您也无法“处理”从日志行中解析出的内容。

免责声明:我现在恰好受雇于 Sumo Logic。

© www.soinside.com 2019 - 2024. All rights reserved.