CloudWatch Logs Insights解析语法

时间:2019-02-05 21:37:55

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

我有一个Lambda,可以查询ec2 api并将输出打印到cloudwatch日志中,我想将其用作指标。但是,我在解析输出(从字典生成)时遇到了麻烦。这是典型的@message:

defaultdict(None, {ec2.Instance(id='i-instance'): {'InstanceID': 'i-instance', 'Type': 't2.micro', 'ImageID': 'ami-0e5493310d2c6de5b', 'State': 'running'

我曾尝试|parse 'InstanceID': *' as InstanceId和类似的错误,但是在文档(https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html)中没有找到示例。

感谢协助。

1 个答案:

答案 0 :(得分:1)

如果您可以修改Lambda,则可能最简单的解决方案是将字典打印为单行JSON(而不是Python字典的字符串格式)-像print(json.dumps(myvalue))这样的方法就可以了。然后,Cloudwatch将自动了解这些字段。

如果您无法修改Lambda的输出,请在Logs Insights查询中添加更多引号可能会有所帮助:parse @message "'InstanceID': '*'" as InstanceID