如何對 Amazon OpenSearch Service 中的慢速日誌進行疑難排解?

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

我為 Amazon OpenSearch Service (Amazon Elasticsearch Service 的後繼者) 網域啟用了搜尋慢速日誌。但是,我收到錯誤,或者現慢速日誌未顯示在 Amazon CloudWatch 日誌群組中。如何解決此錯誤?

解決方案

我在嘗試設定慢速日誌時收到錯誤

如果您的 AWS 帳戶超過區域的十項資源政策,您會在 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) 設定個別 INDEX 層級閾值。

例如,您可以在 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 偵錯層級的記錄。由於每個偵錯層級都會記錄不同類別的資訊,因此最佳實務是根據請求狀態啟用日誌記錄。