创建计划查询 - Amazon CloudWatch 日志
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建计划查询

创建计划查询,自动运行 L CloudWatch ogs Insights 查询并将结果传送到您选择的目的地。

先决条件

在创建计划查询之前,请确保您具备以下条件:

  • 日志组-包含要分析的数据的一个或多个日志组

  • 执行 IAM 角色-具有以下权限的 IAM 角色:

    • logs:StartQuery-启动 CloudWatch 日志见解查询的权限

    • logs:GetQueryResults-检索查询结果的权限

    • logs:DescribeLogGroups-访问日志组信息的权限。只有基于前缀的日志组才需要这样做,以便发现日志组

  • 目的地权限-您所选目的地的其他 IAM 权限:

    • 对于亚马逊 S3 目的地:s3:PutObject

  • fo Amazon CLI r 和 API 用法-配置了具有调用 CloudWatch 日志权限的Amazon凭证 APIs

有关详细的 IAM 策略示例,请参阅Amazon CloudWatch 日志的身份和访问管理。另外需要注意的是,每个账户只能有 1000 个预定查询。

Console
创建计划查询(控制台)
  1. https://console.aws.amazon.com/cloudwatch/家中打开 CloudWatch 日志控制台 #logsV2:

  2. 在导航窗格中,选择日志、见解

  3. 选择 “创建计划查询”

  4. 在 “查询定义” 部分中:

    1. 对于查询语言,请从列表中选择要使用的查询语言。

    2. 对于查询字符串,在框中输入您的 CloudWatch Logs Insights 查询。

    3. 对于日志组,请从列表中选择要查询的日志组。

  5. 在 “时间表设置” 部分:

    1. 对于计划表达式,请配置查询的运行时间。从预定义的选项中选择或输入自定义 cron 表达式。

    2. 对于 “创建时生效”,请指定计划何时生效。选择立即开始或使用YYYY/MM/DD格式在特定的日期和时间开始。

    3. 在 “时间范围” 中,指定每次执行查询的回顾周期。输入以分钟为单位的持续时间,该持续时间定义了从执行时间向后多久进行查询。

    4. 对于无限期继续,请指定计划何时结束。使用YYYY/MM/DD格式选择无限期运行或直到特定的日期和时间运行。

  6. 控制台将根据您的配置显示接下来的三次计划查询运行,并以 UTC 显示查询执行的确切日期和时间。

  7. 在 “将查询结果发布到 S3-可选” 部分(如果使用 S3 目标):

    1. 对于 Amazon S3 URI,请输入存储结果的 Amazon S3 存储桶和前缀(例如s3://my-bucket/query-results/)。

    2. 选择 “查看 Amazon S3”,在新选项卡中打开 Amazon S3 控制台并验证存储桶配置。

    3. 选择 “浏览亚马逊 S3”,使用亚马逊 S3 浏览器选择现有亚马逊 S3 地点。

  8. 在 “用于将查询结果发布到 Amazon S3 的 IAM 角色” 部分中:

    1. 对于选择 IAM 角色,选择具有所需策略的现有 IAM 角色,或者选择在 IAM 控制台中创建新角色来创建新角色。

    2. 使用搜索字段从列表中查找并选择相应的 IAM 角色。

  9. 在 “用于计划查询执行的 IAM 角色” 部分中:

    1. 对于选择 IAM 角色,选择具有所需策略的现有 IAM 角色,或者选择在 IAM 控制台中创建新角色来创建新角色。

    2. 使用搜索字段从列表中查找并选择相应的 IAM 角色。

  10. 选择创建计划以创建计划查询。

Amazon CLI
创建计划查询 (Amazon CLI)
  • 使用create-scheduled-query命令创建新的计划查询:

    aws logs create-scheduled-query \ --name "ErrorAnalysisQuery" \ --query-language "CWLI" \ --query-string "fields @timestamp, @message | filter @message like /ERROR/ | stats count() by bin(5m)" \ --schedule-expression "cron(8 * * * ? *)" \ --execution-role-arn "arn:aws:iam::123456789012:role/CloudWatchLogsScheduledQueryRole" \ --log-group-identifiers "/aws/lambda/my-function" "/aws/apigateway/my-api" \ --state "ENABLED"
API
创建计划查询 (API)
  • 使用CreateScheduledQuery操作创建新的计划查询。以下示例创建了每小时运行一次的计划查询:

    { "name": "ErrorAnalysisQuery", "queryLanguage": "CWLI", "queryString": "fields @timestamp, @message | filter @message like /ERROR/ | stats count() by bin(5m)", "scheduleExpression": "cron(8 * * * ? *)", "executionRoleArn": "arn:aws:iam::123456789012:role/CloudWatchLogsScheduledQueryRole", "logGroupIdentifiers": ["/aws/lambda/my-function", "/aws/apigateway/my-api"], "state": "ENABLED" }

创建计划查询后,您可以从 “计划查询” 页面和使用 ListScheduledQueries API 查看和管理该查询,API 会显示您的所有计划查询及其名称、创建日期、上次运行状态、上次触发时间和重复频率。