我有一个 PLG 堆栈,可以提取 nginx 日志(json 格式)并在 grafana 中对其进行可视化,因此我想在 grafana 中创建一个仪表板,在其中获取不同路由的延迟。
为此,我使用查询:
min_over_time({job="nginx"}
| json
| unwrap request_time [1m])
by (request_uri)
但我注意到我有一些具有动态值的路线,例如
/route1/?name=adarsh
。所以这条路线也出现在我的仪表板上,这是我不想要的。
使用
| 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
表达式之后。