【问题标题】: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

【问题讨论】:

    标签: amazon-web-services amazon-cloudwatch amazon-cloudwatchlogs


    【解决方案1】:

    我还没有找到好的解决方案。

    但我至少找到了一个。

    如果您搜索的键是 != 特定值,它似乎会对其进行空值检查。

    如果你说:

    {$.response != "something_no_one_should_have_ever_saved_this_response_as"}
    

    然后你会得到所有在你的 json 中存在 response 的条目,并且它不是你的字符串(希望是所有有效的条目)

    绝对不是一个干净的解决方案,但它似乎很实用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-02
      • 1970-01-01
      • 2013-07-03
      • 2011-06-05
      • 1970-01-01
      • 2018-04-20
      • 1970-01-01
      相关资源
      最近更新 更多