我有一个lambda函数,可将指标写入Cloudwatch。在编写指标的同时,在日志组中生成一些日志。
INFO:: username: [email protected] ClinicID: 7667 nodename: MacBook-Pro-2.local
INFO:: username: [email protected] ClinicID: 7667 nodename: MacBook-Pro-2.local
INFO:: username: [email protected] ClinicID: 7668 nodename: MacBook-Pro-2.local
INFO:: username: [email protected] ClinicID: 7667 nodename: MacBook-Pro-2.local
我想查询过去x
小时内的AWS日志,其中x可以根据任何参数在12到24小时之间的任何时间。
例如:
ClinicID=7667
或
ClinicID=7667
和username='[email protected]'
或
username='[email protected]'
我正在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 '" [email protected]"' --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"] == "[email protected]":
match_result.append(event["message"])
#.
#.
# more if or else conditions
让我知道怎么回事。