用于检查 JSON 密钥的 CloudWatch 指标筛选器是不是存在
Posted
技术标签:
【中文标题】用于检查 JSON 密钥的 CloudWatch 指标筛选器是不是存在【英文标题】:CloudWatch Metric Filter for checking JSON key exists用于检查 JSON 密钥的 CloudWatch 指标筛选器是否存在 【发布时间】:2021-12-13 17:07:50 【问题描述】:我正在尝试提出一个指标过滤器表达式,用于在存在特殊 JSON 键属性时过滤 CloudWatch Logs。
用例如下:应用程序执行各种日志记录(JSON 格式),只要它有一个特殊的 JSON 键(来自第三方服务的嵌套 JSON 响应),我想过滤它。
示例日志:
"severity":"INFO","msg":"EVENT","event":"key1":"value1"
"severity":"INFO","msg":"FooService responded","response":"response_code":800
我尝试过的过滤模式不起作用:
$.response
$.response = *
$.response = "*"
$.response EXISTS
$.response IS TRUE
$.response NOT NULL
$.response != NULL
预期的过滤结果:
"severity":"INFO","msg":"FooService responded","response":"response_code":800
$.response EXISTS
与我的预期相反(返回第一行而不是第二行),但我不知道如何否定它。
参考资料:Filter and pattern syntax @ CloudWatch User Guide
【问题讨论】:
【参考方案1】:我还没有找到好的解决方案。
但我至少找到了一个。
如果您搜索的键是 !=
特定值,它似乎会对其进行空值检查。
如果你说:
$.response != "something_no_one_should_have_ever_saved_this_response_as"
然后你会得到所有在你的 json 中存在 response
的条目,并且它不是你的字符串(希望是所有有效的条目)
绝对不是一个干净的解决方案,但它似乎很实用
【讨论】:
以上是关于用于检查 JSON 密钥的 CloudWatch 指标筛选器是不是存在的主要内容,如果未能解决你的问题,请参考以下文章
Terraform:通知 SNS 的 CloudWatch 事件