如何为cloudwatch日志事件创建JSON过滤器?

时间:2020-08-28 06:18:19

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

在我的cloudwatch日志中,有三个不同的Sensor日志事件,分别是OK(正常),Warning(警告)和Critical(严重)状态。具有所有状态代码的单个传感器的参考类似,

JSON日志事件:

2020-08-27T19:30:06.998+05:30   {" NumberOfThreads": "Warning"}
2020-08-27T19:43:11.996+05:30   {" NumberOfThreads": "Ok"}
2020-08-27T19:43:11.996+05:30   {" NumberOfThreads": "Critical"}   

我想应用“ NumberOfThreads!= OK”之类的过滤器,这意味着该过滤器应该能够为紧急状态或警告状态创建警报。

基于文本的日志事件;

2020-08-26T13:05:08.741+05:30   Elasticsearch Ok 
2020-08-26T13:05:08.992+05:30   Elasticsearch Warning
2020-08-26T13:05:08.992+05:30   Elasticsearch Critical    

我能够以简单的文本格式为“ NumberOfThreads:警告”和“ NumberOfThreads:严重”创建每个过滤器。在这两种方法中,是否都可以选择定义仅选择Elasticsearch严重或警告状态的过滤器?请帮助我以文本或JSON格式解决此问题

我的脚本:

SENSOR=$(curl https://mywebpage/admin/monitoring/Elsticsearch/ | awk -F"Sensor<\/th><td>" '{print $2}' |awk -F"<\/td></tr>" '{print $1}')
STATUS=$(curl https://mywebpage/admin/monitoring/Elsticsearch/ | awk -F"Status</th><td>" '{print $2}' |awk -F"</td></tr><tr><th>" '{printf $1}')
echo {\"datetime\": "$TIME", \"$SENSOR\": \"$STATUS\"} >> zoop.json

1 个答案:

答案 0 :(得分:0)

由于日志输出结构的定义不明确,因此无法使用基于文本的过滤器来获得类似逻辑的文本。

唯一的解决方案是,从您的应用程序中,您需要再次将其日志输出重新定义为定义良好的基于​​JSON的日志,以便可以开始使用JSON(而不是TEXT)过滤日志。

{"datetime": 2020, "thread": "ok"}

以下是过滤模式的示例:

cwlogs-filter-pattern