如何处理 nginx 访问日志中 request_uri 中的动态值

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

我有一个 PLG 堆栈,可以提取 nginx 日志(json 格式)并在 grafana 中对其进行可视化,因此我想在 grafana 中创建一个仪表板,在其中获取不同路由的延迟。

为此,我使用查询:

min_over_time({job="nginx"}
| json
| unwrap request_time [1m])
by (request_uri) 

但我注意到我有一些具有动态值的路线,例如

/route1/?name=adarsh
。所以这条路线也出现在我的仪表板上,这是我不想要的。

nginx prometheus grafana grafana-loki promtail
1个回答
0
投票

使用

| label_format
表达式
regexReplaceAll
模板函数 可以引入一个附加标签
sanitized_request_uri
并删除参数:

min_over_time({job="nginx"}
| json
| label_format sanitized_request_uri="{{ regexReplaceAll  \"[^?]*).*\" .request_uri \"$1\" }}"
| unwrap request_time [1m])
by (sanitized_request_uri) 

如果您在请求 URI 中遇到尾随

/
的问题,妨碍正确分组,可以通过添加以下表达式来删除它们

 | label_format sanitized_request_uri="{{ regexReplaceAll  \"(.*)/\" .sanitized_request_uri\"$1\" }}"

在第一个

label_format
表达式之后。

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