如何排查 Amazon OpenSearch Service 中的慢速日志?

上次更新日期:2021 年 7 月 30 日

我为 Amazon OpenSearch Service 域启用了搜索慢速日志。但是我收到错误提示,或者慢速日志不显示在 Amazon CloudWatch 日志组中。如何解决此问题?

解决方法

当我尝试设置慢速日志时收到错误提示

如果您的 AWS 账户超过了所在区域的 10 个资源策略,您将在 Amazon CloudWatch Logs 中收到以下错误消息:

"Unable to create the Resource Access Policy - You have reached the maximum limit for number of Resource Access Policies for CloudWatch Logs. Please select an existing policy and edit it or delete an older policy and try again."

要解决此错误消息,请创建包含多个日志组的资源策略。

例如:

{
    "Version": "2012-10-17",
    "Statement": [
        {
         "Effect": "Allow",
         "Principal": {
         "Service": "es.amazonaws.com"
        },
        "Action": [
         "logs:PutLogEvents",
         "logs:CreateLogStream"
        ],
        "Resource": [
         "ARN-Log-Group-1",
         "ARN-Log-Group-2",
         "ARN-Log-Group-3",
         "ARN-Log-Group-4"
        }
    ]
}

注意:AWS Identity and Access Management (IAM) 策略限制无法提高。

我没有看到任何慢速日志传送

如果您没有看到慢速日志传送到 CloudWatch,请检查 IAM 策略或 OpenSearch Service 阈值。

由于 OpenSearch Service 需要写入 CloudWatch Logs 的权限,因此您必须具有适当的 IAM 策略才能录入查询。要更新您的 IAM 策略,请导航到 Search Slow Logs(搜索慢速日志),然后选择 Select Setup(选择设置)。

例如:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "es.amazonaws.com"
      },
      "Action": [
        "logs:PutLogEvents",
        "logs:CreateLogStream"
      ],
      "Resource": "arn:aws:logs:us-east-1:588671893395:log-group:/aws/aes/domains/myes/search-logs:*"
    }
  ]
}

此外,请务必为您的域设置适当的时间阈值。例如,如果所有请求都在设定的阈值之内完成,日志就不会传送到日志组。

您还可以为每个调试级别(TRACE、DEBUG、INFO 和 WARN)设置单独的索引级阈值。

例如,对于 OpenSearch 控制面板中的 YOURINDEXNAME 索引,您可以将 WARN 调试级别的阈值设置为 10 秒:

PUT /YOURINDEXNAME/_settings{"index.search.slowlog.threshold.query.warn": "10s"}

注意:您可以将 TRACE 设置为“0”毫秒,这样做将在日志中记录域的所有查询。但是,由于记录所有查询属于资源密集型操作,因此您的域性能可能会受到影响。

然后,使用以下命令检查阈值:

GET/YOURINDEXNAME/_settings?pretty

OpenSearch Service 会录入超出定义阈值的所有查询。

最佳实践

  • 避免同时进行多个配置更改(例如启用或禁用发布到 CloudWatch 的日志)。一次进行过多的配置更改会触发多个蓝/绿部署。多个蓝/绿部署可能会导致 OpenSearch Service 域卡在处理状态。有关蓝/绿部署的更多信息,请参阅在 OpenSearch Service 中进行配置更改
  • 设置查询阶段和获取阶段的阈值,以识别慢速搜索查询。
  • 使用较低的阈值进行测试,慢慢增加阈值,以便仅记录影响性能或需要优化的查询。
  • 为集群选择适当数量的分区,以优化集群性能。有关分区维护的更多信息,请参阅 Amazon OpenSearch Service 最佳实践
  • 对于慢速日志,请在 TRACE、DEBUG、INFO 和 WARN 调试级别启用日志记录。由于每个调试级别记录不同类别的信息,因此最佳做法是根据请求状态启用日志记录。

Amazon OpenSearch Service 是 Amazon Elasticsearch Service 的后继者。