Comment activer Redis Slow Log dans un cluster de cache ElastiCache pour Redis ?

Dernière mise à jour: 24/06/2022

Je souhaite activer Redis Slow Log dans mon cluster de cache ElastiCache pour Redis. Comment procéder ?

Brève description

La fonction Redis Slow Log enregistre les requêtes qui dépassent une période spécifiée. Le journal Slow fournit une option permettant de consigner les requêtes lentes sur Amazon CloudWatch ou Amazon Kinesis Data Firehose. Redis Slow Log est un bon outil pour déboguer et suivre votre base de données Redis, en particulier si vous êtes confronté à une latence élevée et/ou à une utilisation élevée du processeur.

Une nouvelle entrée est ajoutée au journal des ralentissements lorsqu'une commande dépasse le temps d'exécution défini par le paramètre slowlog-log-slower-than. Chaque entrée de journal est envoyée à la destination spécifiée (CloudWatch ou Kineses) au format JSON ou texte.

Voici des exemples de chaque 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##"
}

Texte

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

Solution

Prérequis

Redis Slow Log nécessite la version 6.0 et ultérieure du moteur Redis. Si la version de votre moteur est inférieure à 6.0, vous pouvez récupérer manuellement le journal lent à l'aide de la commande slowlog get 128. Chaque nœud possède son propre journal des ralentissements. Vous devez donc collecter le journal auprès de chaque nœud du cluster.

L'activation de la fonctionnalité de journalisation lente lors de la création ou de la modification d'un cluster nécessite une autorisation de publication sur CloudWatch ou Kinesis Firehose. Utilisez les autorisations suivantes en créant une politique d'identification et de gestion des accès et en l'associant à l'utilisateur responsable :

Autorisations 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"
    }
  ]
}
{
  "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"
    }
  ]
}

Activer Redis Slow Log dans votre cluster ElastiCache

Après avoir rempli les conditions préalables, vous pouvez activer Slow Log lors de la création de votre cluster ou en modifiant un cluster existant.

Pour obtenir des instructions sur l'activation de Redis Slow Logs depuis la console AWS, consultez Spécification de la remise des journaux à l'aide de la console.

Contenu Slow Log

Après avoir sélectionné la destination du journal, lorsqu'une requête dépasse la période spécifiée, l'événement est consigné dans la destination du journal. Chaque événement enregistré contient le contenu suivant :

  • CacheClusterID : Identifiant du cluster de cache.
  • CacheNodeID : identifiant du nœud de cache.
  • Identifiant : identifiant progressif unique pour chaque entrée de journal lente.
  • Horodatage : horodatage Unix auquel la commande enregistrée a été traitée.
  • Durée : temps nécessaire à son exécution, en microsecondes.
  • Commande : commande utilisée par le client. Par exemple, définissez « foo bar « où « foo » est la clé et « bar » la valeur. ElastiCache pour Redis remplace le nom et la valeur de la clé par (2 arguments supplémentaires) afin d'éviter d'exposer des données sensibles.
  • ClientAddress : adresse IP et port du client.
  • ClientName : nom du client s'il est défini via la commande CLIENT SETNAME.

Cet article vous a-t-il été utile ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?