如何在 ElastiCache for Redis 快取叢集中開啟 Redis 慢速日誌?

2 分的閱讀內容
0

我想在我的 ElastiCache for Redis 快取叢集中開啟 Redis 慢速日誌。我該如何進行?

簡短描述

Redis Slow 慢速日誌功能會記錄超過指定時長的查詢記錄。慢速日誌提供了一種選項,可以將慢速查詢記錄至 Amazon CloudWatch 或是 Amazon Kinesis Data Firehose。Redis 慢速日誌是偵錯和追蹤 Redis 資料庫的實用工具,特別適合用於遇到高延遲和/或高 CPU 使用率的情況。

當指令的執行時間超過 slowlog-log-slower-than 參數所設定的時長時,慢速日誌就會新增一個條目。每個日誌條目都會以 JSON 或文字格式傳遞至指定的目的地(CloudWatch 或 Kinees)。

以下是各別格式的範例:

JSON

{
    "CacheClusterId": "logslowxxxxmsxj",
    "CacheNodeId": "0001",
    "Id": 296,
    "Timestamp": 1605631822,
    "Duration (us)": 0,
    "Command": "GET ... (1 more arguments)",
    "ClientAddress": "192.168.12.104:55452",
    "ClientName": "logslowxxxxmsxj##"
}

文字

logslowxxxxmsxj,0001,1605631822,30,GET ... (1 more arguments),192.168.12.104:55452,logslowxxxxmsxj##

解析度

先決條件

Redis 慢速日誌需要 Redis 引擎版本 6.0 及更高版本。如果您的引擎版本低於 6.0,您可以使用 slowlog get 128 指令手動擷取慢速日誌。每個節點都有專屬的慢速日誌。因此,您必須從叢集中的每個節點取得日誌檔。

在叢集建立或修改期間開啟「慢速日誌」功能需要發佈到 CloudWatch 或 Kinesis Firehose 的權限。請建立 Identify and Access Management 政策將其連接至負責的使用者,以使用下列權限:

Amazon CloudWatch 許可權:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "logs:CreateLogDelivery",
        "logs:GetLogDelivery",
        "logs:UpdateLogDelivery",
        "logs:DeleteLogDelivery",
        "logs:ListLogDeliveries"
      ],
      "Resource": [
        "*"
      ],
      "Effect": "Allow",
      "Sid": "ElastiCacheLogging"
    },
    {
      "Sid": "ElastiCacheLoggingCWL",
      "Action": [
        "logs:PutResourcePolicy",
        "logs:DescribeResourcePolicies",
        "logs:DescribeLogGroups"
      ],
      "Resource": [
        "*"
      ],
      "Effect": "Allow"
    }
  ]
}

Amazon Kinesis Data Firehose許可權:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "logs:CreateLogDelivery",
        "logs:GetLogDelivery",
        "logs:UpdateLogDelivery",
        "logs:DeleteLogDelivery",
        "logs:ListLogDeliveries"
      ],
      "Resource": [
        "*"
      ],
      "Effect": "Allow",
      "Sid": "ElastiCacheLogging"
    },
    {
      "Sid": "ElastiCacheLoggingFHSLR",
      "Action": [
        "iam:CreateServiceLinkedRole"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Sid": "ElastiCacheLoggingFH",
      "Action": [
        "firehose:TagDeliveryStream"
      ],
      "Resource": "Amazon Kinesis Data Firehose delivery stream ARN",
      "Effect": "Allow"
    }
  ]
}

在您的 ElastiCache 叢集中開啟 Redis 慢速日誌

確定符合先決條件後,您可以在建立或修改現有叢集時開啟慢速日誌。

如需進一步瞭解如何從 AWS Console 開啟 Redis 慢速日誌,請參閱使用主控台指定日誌傳遞

慢速日誌內容

選取日誌目的地後,當查詢超過指定的時間範圍時,事件就會記錄至日誌目的地。每個日誌事件都包含下列內容:

  • CacheClusterId:快取叢集的 ID。
  • CacheNodeId:快取節點的 ID。
  • Id:每個慢速日誌條目的唯一流水 ID。
  • Timestamp:處理日誌所記錄的指令的 Unix 時間戳記。
  • Duration:執行所需的時間長度,以微秒為單位。
  • Command:用戶端所使用的指令。例如設定 foo bar,其中 foo 為索引鍵 (key),bar 為值 (value)。ElastiCache for Redis 會將實際的索引鍵名稱和值取代為 (另外 2 個引數),避免暴露敏感資料。
  • ClientAddress:用戶端的 IP 地址和連接埠。
  • ClientName:用戶端名稱(如果是透過 CLIENT SETNAME 指令設定)。

AWS 官方
AWS 官方已更新 2 年前