在 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
是否可以在单个查询中计算所有三个字段,以便我可以创建表视图?感谢您的时间和帮助。
您粘贴的查询看起来像是一个接近的解决方案。
就这一行:
| parse "* - event_type:* - *"
看起来不完整。
尝试:
| parse "* - event_type:* - *" as irrelevant1, event_type, irrelevant2
如果不添加,
| parse
运算符将无法运行。
此外,您也无法“处理”从日志行中解析出的内容。
免责声明:我现在恰好受雇于 Sumo Logic。