Wie aktiviere ich Redis Slow Log in einem Cache-Cluster von ElastiCache for Redis?

Lesedauer: 3 Minute
0

Ich möchte Redis Slow Log in meinem Cache-Cluster von ElastiCache for Redis aktivieren. Wie kann ich vorgehen?

Kurzbeschreibung

Die Protokollfunktion von Redis Slow Log protokolliert Abfragen, die einen bestimmten Zeitraum überschreiten. Slow Log bietet eine Option, um entweder langsame Abfragen an Amazon CloudWatch oder Amazon Kinesis Data Firehose zu protokollieren. Redis Slow Log ist ein gutes Tool zum Debuggen und Verfolgen Ihrer Redis-Datenbank, insbesondere wenn Sie eine hohe Latenz und/oder eine hohe CPU-Auslastung feststellen.

Ein neuer Eintrag wird dem Slow Log hinzugefügt, wenn ein Befehl die vom Parameter slowlog-log-slower-than festgelegte Ausführungszeit überschreitet. Jeder Protokolleintrag wird im JSON- oder Textformat an das angegebene Ziel (CloudWatch oder Kineses) übermittelt.

Im Folgenden finden Sie Beispiele für jedes Format:

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##"
}

Text

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

Lösung

Voraussetzungen

Redis Slow Log erfordert die Redis-Engine-Version 6.0 und höher. Wenn Ihre Engine-Version niedriger als 6.0 ist, können Sie das Slow Log mithilfe des Befehls slowlog get 128 manuell abrufen. Jeder Knoten hat sein eigenes Slow Log. Sie müssen also das Protokoll von jedem Knoten innerhalb des Clusters sammeln.

Das Aktivieren der Slow-Log-Funktion während der Cluster-Erstellung oder -Änderung erfordert die Berechtigung zum Veröffentlichen in CloudWatch oder Kinesis Firehose. Verwenden Sie die folgenden Berechtigungen, indem Sie eine Richtlinie im Identity and Access Management erstellen und diese dem verantwortlichen Benutzer zuordnen:

Berechtigungen für 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"
    }
  ]
}

Berechtigungen für 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"
    }
  ]
}

Aktivieren Sie Redis Slow Logs in Ihrem ElastiCache-Cluster

Nachdem Sie die Voraussetzungen erfüllt haben, können Sie Slow Log beim Erstellen Ihres Clusters oder durch Ändern eines vorhandenen Clusters aktivieren.

Anweisungen zum Aktivieren von Redis Slow Logs über die AWS-Konsole finden Sie unter Angeben der Protokollzustellung mithilfe der Konsole.

Inhalt des Slow Log

Wenn nach Auswahl des Protokollziels eine Abfrage den angegebenen Zeitraum überschreitet, wird das Ereignis im Protokollziel protokolliert. Jedes Protokollereignis hat den folgenden Inhalt:

  • CacheClusterId: Die ID des Cache-Clusters.
  • CacheNodeId: Die ID des Cache-Knotens.
  • Id: Ein eindeutiger progressiver Bezeichner für jeden Slow-Log-Eintrag.
  • Timestamp: Der Unix-Zeitstempel, zu dem der protokollierte Befehl verarbeitet wurde.
  • Duration: Die für die Ausführung benötigte Zeit in Mikrosekunden.
  • Command: Der vom Client verwendete Befehl. Stellen Sie beispielsweise foo bar ein, wobei foo der Schlüssel und bar der Wert ist. ElastiCache for Redis ersetzt den tatsächlichen Schlüsselnamen und -wert durch (2 weitere Argumente), um zu vermeiden, dass vertrauliche Daten offengelegt werden.
  • ClientAddress: IP-Adresse und Port des Clients.
  • ClientName: Name des Clients, falls über den Befehl CLIENT SETNAME festgelegt.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren