AWS Cloudwatch Log Insights - 替换字符串函数
AWS Cloudwatch Log Insights - replace string function
如何使用 AWS Cloudwatch Log Insights 的 replace 函数?
docs不给出工作实例
给定的日志包含 /api/lumberjack/123/axe/456/fashion
等路径
我正在尝试:
fields message
| parse message "path=* " as path
| fields replace(path, /[0123456789]+/, 'ID') as uniqpath
| stats count(*) by uniqpath
我希望得到如下结果:
uniqpath | count
/api/lumberjack/ID/axe/ID/fashion | 12
/api/lumberjack/ID/beardedness | 44
但它却抱怨“无效参数,收到:(路径)但预期:(str:string,searchValue:string,replaceValue:string)”
该错误消息是不言自明的。 replace
函数需要第一个参数的字符串类型的输入。您提供的字段名称 path
不可接受。
编辑: 令我惊讶的是,replace
函数接受路径作为第一个参数,这在文档中没有提到。请参阅上面奥马尔的回答。
replace
函数接受字段作为第一个参数的输入。
不支持的是第二个参数。您传递的正则表达式未被识别为字符串。
我还没有找到将正则表达式转换为字符串的方法。但至少你可以为第一个参数传递字段名 path
。我已经测试过它改变普通字符串的正则表达式。
查询:
fields @message
| parse @message "path=*" as path
| fields replace(path, 'lumberjack', 'ID') as uniqpath
| stats count(*) by uniqpath
结果:
如何使用 AWS Cloudwatch Log Insights 的 replace 函数?
docs不给出工作实例
给定的日志包含 /api/lumberjack/123/axe/456/fashion
我正在尝试:
fields message
| parse message "path=* " as path
| fields replace(path, /[0123456789]+/, 'ID') as uniqpath
| stats count(*) by uniqpath
我希望得到如下结果:
uniqpath | count
/api/lumberjack/ID/axe/ID/fashion | 12
/api/lumberjack/ID/beardedness | 44
但它却抱怨“无效参数,收到:(路径)但预期:(str:string,searchValue:string,replaceValue:string)”
该错误消息是不言自明的。 replace
函数需要第一个参数的字符串类型的输入。您提供的字段名称 path
不可接受。
编辑: 令我惊讶的是,replace
函数接受路径作为第一个参数,这在文档中没有提到。请参阅上面奥马尔的回答。
replace
函数接受字段作为第一个参数的输入。
不支持的是第二个参数。您传递的正则表达式未被识别为字符串。
我还没有找到将正则表达式转换为字符串的方法。但至少你可以为第一个参数传递字段名 path
。我已经测试过它改变普通字符串的正则表达式。
查询:
fields @message
| parse @message "path=*" as path
| fields replace(path, 'lumberjack', 'ID') as uniqpath
| stats count(*) by uniqpath
结果: