Como faço para ativar o log lento do Redis em um cluster de cache do ElastiCache for Redis?

Data da última atualização: 24/06/2022

Quero ativar o log lento do Redis no cluster de cache do ElastiCache for Redis. Como posso fazer isso?

Breve descrição

O recurso de log lento do Redis registra consultas que excedem um período de tempo especificado. O log lento oferece uma opção para registrar consultas lentas no Amazon CloudWatch ou no Amazon Kinesis Data Firehose. O log lento do Redis é uma boa ferramenta para depurar e rastrear o banco de dados Redis, especialmente se você estiver enfrentando alta latência e/ou alto uso de CPU.

Uma nova entrada é adicionada ao log lento quando um comando excede o tempo de execução definido pelo parâmetro slowlog-log-slower-than. Cada entrada de log é entregue ao destino especificado (CloudWatch ou Kineses) em formato JSON ou texto.

Veja a seguir exemplos de cada 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##"
}

Texto

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

Resolução

Pré-requisitos

O log lento do Redis requer o mecanismo Redis versão 6.0 e superior. Se a versão do mecanismo for anterior à versão 6.0, você poderá recuperar manualmente o log lento usando o comando slowlog get 128. Cada nó tem seu próprio log lento. Portanto, você deve coletar o log de cada nó do cluster.

Ativar o recurso de log lento durante a criação ou modificação do cluster requer permissão para publicação no CloudWatch ou no Kinesis Firehose. Use as seguintes permissões criando uma política de gerenciamento de identidade e acesso e anexando-a ao usuário responsável:

Permissões do 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"
    }
  ]
}

Ativar logs lentos do Redis no cluster do ElastiCache

Depois de atender aos pré-requisitos, você pode ativar o log lento ao criar o cluster ou ao modificar um cluster existente.

Para obter instruções sobre como ativar os logs lentos do Redis no console da AWS, consulte Especificar a entrega de logs usando o console.

Conteúdo do log lento

Depois que destino do log é selecionado, quando uma consulta excede o período de tempo especificado, o evento é registrado no destino do log. Cada evento registrado tem o seguinte conteúdo:

  • CacheClusterId: o ID do cluster de cache.
  • CacheNodeId: o ID do nó de cache.
  • Id: um identificador progressivo exclusivo para cada entrada do log lento.
  • Timestamp: o timestamp Unix em que o comando registrado foi processado.
  • Duração: a quantidade de tempo necessária para a execução, em microssegundos.
  • Comando: o comando usado pelo cliente. Por exemplo, set foo bar, em que foo é a chave e bar é o valor. O ElastiCache for Redis substitui o nome e o valor da chave real por (mais 2 argumentos) para evitar a exposição de dados confidenciais.
  • ClientAddress: endereço IP e porta do cliente.
  • ClientName: nome do cliente se definido pelo comando CLIENT SETNAME.

Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?