Come posso attivare il registro Redis Slow in un cluster di cache ElastiCache per Redis?

Ultimo aggiornamento: 24/06/2022

Desidero attivare il registro Redis Slow nel mio cluster di cache ElastiCache per Redis. Come posso farlo?

Breve descrizione

La funzione di registro Redis Slow registra le query che superano un periodo di tempo specificato. Il registro lento fornisce un'opzione per registrare le query lente su Amazon CloudWatch o su Amazon Kinesis Data Firehose. Redis Slow Log è un ottimo strumento per il debug e il tracciamento del database Redis, soprattutto se stai riscontrando un'elevata latenza e/o un elevato utilizzo della CPU.

Una nuova voce viene aggiunta al registro lento quando un comando supera il tempo di esecuzione impostato dal parametro slowlog-log-slower-than. Ogni voce di registro viene consegnata alla destinazione specificata (CloudWatch o Kineses) in formato JSON o testo.

Di seguito sono riportati alcuni esempi di ogni formato:

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

Testo

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

Risoluzione

Prerequisiti

Il registro Redis Slow richiede il motore Redis versione 6.0 e successive. Se la versione del motore è inferiore alla 6.0, puoi recuperare manualmente il registro lento utilizzando il comando slowlog get 128. Ogni nodo ha il proprio registro lento. Pertanto, è necessario raccogliere il registro da ogni nodo all'interno del cluster.

L'attivazione della funzione di registro lento durante la creazione o la modifica del cluster richiede l'autorizzazione per la pubblicazione su CloudWatch o Kinesis Firehose. Utilizza le seguenti autorizzazioni creando una policy Identity and Access Management e collegandola all'utente responsabile:

Autorizzazioni 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"
    }
  ]
}

Attivazione dei registri lenti di Redis nel cluster ElastiCache

Dopo aver soddisfatto i prerequisiti, puoi attivare il registro lento durante la creazione del cluster o modificandone uno esistente.

Per istruzioni su come attivare i registri di Redis Slow dalla console AWS, consulta Specifica della consegna del registro tramite la console.

Contenuti del registro lento

Dopo aver selezionato la destinazione del registro, quando una query supera l'intervallo di tempo specificato, l'evento viene registrato nella destinazione del registro. Ogni evento registrato contiene il seguente contenuto:

  • CacheClusterID: l'ID del cluster di cache.
  • CacheNodeID: l'ID del nodo di cache.
  • Id: un identificatore progressivo univoco per ogni voce di registro lenta.
  • Timestamp: il timestamp Unix in cui è stato elaborato il comando registrato.
  • Durata: la quantità di tempo necessaria per la sua esecuzione, in microsecondi.
  • Comando: il comando utilizzato dal client. Ad esempio, imposta foo bar dove foo è la chiave e bar è il valore. ElastiCache per Redis sostituisce il nome e il valore della chiave con (altri 2 argomenti) per evitare di esporre dati sensibili.
  • ClientAddress: indirizzo IP e porta del client.
  • ClientName: nome del client se impostato tramite il comando CLIENT SETNAME.

Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?