如何在python中使用boto3查询cloudwatch日志

问题描述 投票:0回答:2

我有一个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小时之间的任何时间。

例如:

  1. 查询最近5个小时的Cloudwatch日志,其中ClinicID=7667

  1. 查询Cloudwatch最近5个小时的日志,其中ClinicID=7667username='[email protected]'

  1. 查询最近5个小时的Cloudwatch日志,其中username='[email protected]'

我正在Python中使用boto3。请给我一个方向?

python boto3 amazon-cloudwatch
2个回答
1
投票

我使用了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


0
投票

您可以通过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

让我知道怎么回事。

© www.soinside.com 2019 - 2024. All rights reserved.