如何在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小时之间的任何时间。

例如:

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

  1. 查询Cloudwatch最近5个小时的日志,其中ClinicID=7667username='simran+test@abc.com'

  1. 查询最近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)的列表?

如何使用 python boto3 将新角色权限附加到 aws 中的 iam_role?

如何:Zeppelin + boto3 + AWS 凭证

如何使用 Boto3 get_query_results 方法从 AWS Athena 创建数据框