CloudWatch日志分析语法解析

4
我有一个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':*”等类似的方法,但出现错误,并且我在文档(https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html)中没有找到示例。
感谢您的帮助。
2个回答

5
如果您可以修改Lambda,最简单的解决方案可能是将字典作为一行JSON打印出来(而不是Python字典的字符串格式) - 像print(json.dumps(myvalue))这样做应该就可以了。Cloudwatch将会自动理解字段。
如果您无法修改Lambda的输出,增加更多的引号到Logs Insights查询中可能会有所帮助:parse @message "'InstanceID': '*'" as InstanceID

1

如果您正在使用日志洞察,则以下内容将为您提供实例 ID

fields @timestamp, @message, responseElements.instancesSet.items.0.instanceId as instanceId

您的回答会更好,如果加上这个链接: JSON 日志中的字段 - Martin P.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接