我有一个lambda函数,可以将指标写入Cloudwatch。在写入指标的同时,它会在日志组中生成一些日志。
INFO:: username: simran+test@example.com ClinicID: 7667 nodename: MacBook-Pro-2.local
INFO:: username: simran+test2@example.com ClinicID: 7667 nodename: MacBook-Pro-2.local
INFO:: username: simran+test@example.com ClinicID: 7668 nodename: MacBook-Pro-2.local
INFO:: username: simran+test3@example.com ClinicID: 7667 nodename: MacBook-Pro-2.local
我想查询过去x
小时内的AWS日志,其中x可以是12到24小时之间的任何时间,基于任何参数。
例如:
1.查询最近5小时的Cloudwatch日志,其中ClinicID=7667
或
1.查询过去5小时的Cloudwatch日志,其中ClinicID=7667
和username='simran+test@example.com'
或
1.查询过去5小时的Cloudwatch日志,其中username='simran+test@example.com'
我在Python中使用boto3
。
4条答案
按热度按时间91zkwejq1#
您可以使用CloudWatch Logs Insights获取所需信息。
您可以使用
start_query
和get_query_results
API:https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/logs.html要启动查询,您将使用(对于问题中的用例2,用例1和用例3类似):
响应将包含以下格式的数据(加上一些元数据):
mqkwyuun2#
你可以通过cloudWatchlogs客户端和一些编码来实现这一点。你也可以自定义条件或使用JSON模块来获得精确的结果。
编辑
你可以使用describe_log_streams来获取流,如果你只想要最新的流,只需设置limit 1,或者如果你想要多个流,使用for循环来迭代所有流,同时进行过滤,如下所述。
告诉我进展如何。
pokxtpni3#
我用的是
awslogs
。如果你安装了它,你就可以了。--watch
会跟踪新的日志。您可以使用以下命令进行安装
要筛选,您可以执行以下操作:
它还支持多种过滤模式。
参考文献:
awslogs
awslogs . PyPI
xwbd5t1u4#
最简单的方法是使用awswrangler:
你可以传递一个需要的日志组列表,开始和结束时间。输出是一个包含结果的Pandas数据框。
仅供参考,awswrangler使用boto 3命令,如@dejan answer