我希望使用 CloudWatch Logs Insights 按请求 url 字段对日志进行分组,但是 url 可以包含 0-2 个唯一的数字标识符,我希望在进行分组时忽略这些标识符。
一些网址示例:
/dev/user
/dev/user/123
/dev/user/123/inventory/4
/dev/server/3/statistics
这些组看起来像:
/dev/user
/dev/user/
/dev/user//inventory/
/dev/server//statistics
我有一些非常接近我需要的东西,它提取第一个可选标识符前面的 url 部分以及第一个标识符和第二个标识符之间的部分并将两者连接起来,但它并不完全可靠。这是我目前所在的位置,@message 是有效的 json,其中包含一个“端点”字段,看起来像上面的网址之一:
fields @message | parse endpoint /(\bdev)\/(?<@prefix>[^0-9]+)(?:[0-9]+)(?<@suffix>[^0-9]+)/ | stats count(*) by @prefix
虽然此查询将使用像“/dev/accounts/1”这样的端点,但它会忽略像“/dev/accounts”这样的端点,因为它没有正则表达式正在寻找的所有组件,这意味着我错过了很多结果。