如何在python中使用boto3查询cloudwatch日志
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在python中使用boto3查询cloudwatch日志相关的知识,希望对你有一定的参考价值。
我有一个lambda函数,可将指标写入Cloudwatch。在编写指标的同时,在日志组中生成一些日志。
INFO:: username: simran+test@abc.com ClinicID: 7667 nodename: MacBook-Pro-2.local
INFO:: username: simran+test2@abc.com ClinicID: 7667 nodename: MacBook-Pro-2.local
INFO:: username: simran+test@abc.com ClinicID: 7668 nodename: MacBook-Pro-2.local
INFO:: username: simran+test3@abc.com ClinicID: 7667 nodename: MacBook-Pro-2.local
我想查询过去x
小时内的AWS日志,其中x可以根据任何参数在12到24小时之间的任何时间。
例如:
- 查询最近5个小时的Cloudwatch日志,其中
ClinicID=7667
或
- 查询Cloudwatch最近5个小时的日志,其中
ClinicID=7667
和username='simran+test@abc.com'
或
- 查询最近5个小时的Cloudwatch日志,其中
username='simran+test@abc.com'
我正在Python中使用boto3
。请给我一个方向?
我使用了awslogs
。如果您安装它,则可以。 --watch
将尾随新日志。
awslogs get /aws/lambda/log-group-1 --start="5h ago" --watch
您可以使用pip install awslogs
进行过滤可以:
awslogs get /aws/lambda/log-group-1 --filter-pattern '"ClinicID=7667"' --start "5h ago" --timestamp
它也支持多种过滤器模式。
awslogs get /aws/lambda/log-group-1 --filter-pattern '"ClinicID=7667"' --filter-pattern '" username=simran+test@abc.com"' --start "5h ago" --timestamp
您可以通过cloudWatchlogs client和一些编码来实现。您也可以自定义条件或使用JSON模块以获得精确结果。
import boto3
client = boto3.client('logs')
match_result = []
response = client.get_log_events(
logGroupName='testName',
logStreamName='testStream',
startTime=12345678,
endTime=12345678,
)
## For example, you want to search "ClinicID=7667", can be dynamic
for event in response["events"]:
if event["message"]["ClinicID"] == "7667":
match_result.append(event["message"])
elif event["message"]["username"] == "simran+test@abc.com":
match_result.append(event["message"])
#.
#.
# more if or else conditions
让我知道怎么回事。
以上是关于如何在python中使用boto3查询cloudwatch日志的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python 中使用 JDBC 驱动程序和 Boto3 API 连接到现有的 Redshift 数据库
在单个AWS Lambda中使用两个python函数boto3
我们如何使用 python boto3 获取挂载到 EC2 实例的所有文件系统(EFS)的列表?