Redis용 ElastiCache 캐시 클러스터에서 Redis 슬로우 로그를 켜려면 어떻게 해야 합니까?

3분 분량
0

ElastiCache for Redis 캐시 클러스터에서 Redis 슬로우 로그를 켜고 싶습니다. 어떻게 해야 합니까?

간략한 설명

Redis 슬로우 로그 기능은 지정된 기간을 초과하는 쿼리를 기록합니다. 슬로우 로그는 Amazon CloudWatch 또는 Amazon Kinesis Data Firehose에 슬로우 쿼리를 기록하는 옵션을 제공합니다. Redis 슬로우 로그는 특히 대기 시간이 길거나, CPU 사용량이 많은 경우, Redis 데이터베이스를 디버깅 및 추적하는 데 유용한 도구입니다.

명령이 slowlog-log-slower-than파라미터로 설정한 실행 시간을 초과하면, 슬로우 로그에 새 항목이 추가됩니다. 각 로그 항목은 JSON 또는 텍스트 형식으로 지정된 대상(CloudWatch 또는 Kineses)에 전송됩니다.

다음은 각 형식의 예제입니다.

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에 게시할 수 있는 권한이 필요합니다. 식별 및 액세스 관리 정책을 생성하고 이를 책임 있는 사용자에게 연결하여 다음 권한을 사용합니다.

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: 모든 느린 로그 항목에 대한 고유한 점진적 식별자입니다.
  • 타임스탬프: 로깅된 명령이 처리된 Unix 타임스탬프입니다.
  • 기간: 실행에 필요한 시간 (마이크로초) 입니다.
  • 명령: 클라이언트가 사용하는 명령입니다. 예를 들어 foo는 키이고 bar는 값인 foo bar를 설정합니다. Redis용 ElastiCache는 중요한 데이터가 노출되지 않도록 실제 키 이름과 값을 (2개의 추가 인수)로 변경합니다.
  • ClientAddress: 클라이언트 IP 주소 및 포트입니다.
  • ClientName: CLIENT SETNAME 명령을 통해 설정한 경우 클라이언트 이름입니다.

AWS 공식
AWS 공식업데이트됨 2년 전