통합 CloudWatch 에이전트가 로그 이벤트를 푸시하지 않는 문제를 해결하려면 어떻게 해야 하나요?

5분 분량
0

통합 Amazon CloudWatch 에이전트가 로그 이벤트를 푸시하지 않는 문제를 해결하고 싶습니다.

간략한 설명

통합 CloudWatch 에이전트가 로그 이벤트를 푸시하지 않는 경우 다음과 같은 원인이 있을 수 있습니다.

  • 동기화되지 않은 메타데이터
  • 오래된 버전의 CloudWatch 에이전트
  • CloudWatch 로그 엔드포인트에 연결하지 못함
  • 잘못된 계정, AWS 리전 또는 로그 그룹 구성
  • AWS Identity and Access Management(IAM) 권한 부족
  • CloudWatch 에이전트 실행 오류
  • 타임스탬프 문제
  • 로그의 상태 파일에 누락되거나 잘못된 값이 있음
  • 잘못된 소스 로그 파일 구성
  • PutLogEvents 제약 조건
  • 높은 force_flush_interval

참고: 다음 해결 방법은 CloudWatch Container Insights에는 적용되지 않습니다. CloudWatch 컨테이너 인사이트 문제 해결에 대한 자세한 내용은 컨테이너 인사이트 문제 해결아마존 EKS에서 포드 상태 문제를 해결하려면을 참고하세요.

해결 방법

동기화되지 않은 메타데이터

동기화되지 않은 메타데이터가 있는 경우 CloudWatch 에이전트가 의도한 대로 작동하지 않는 것입니다. 이 문제를 해결하려면 다음 단계를 완료하십시오.

오래된 버전의 CloudWatch 에이전트

CloudWatch 에이전트의 오래된 버전을 사용 중인 경우 CloudWatch 에이전트 패키지 릴리즈 노트 및 최신 버전 번호를 다운로드하세요. 최신 버전에는 문제를 해결하는 업데이트가 포함되어 있을 수 있습니다.

CloudWatch 로그 엔드포인트에 연결하지 못함

CloudWatch 로그 엔드포인트에 대한 연결을 테스트하려면 다음 명령 중 하나를 사용하세요.

참고: example-region을 필요한 지역으로 바꿉니다.

telnet logs.<example-region>.amazonaws.com 443
nc -zv logs.<example-region>.amazonaws.com 443

연결 실패가 발생하면 다음 단계를 완료하세요.

  • 보안 그룹 및 네트워크 액세스 제어 목록(네트워크 ACL)에서 연결을 허용하는지 확인합니다.
  • 퍼블릭 엔드포인트의 경우 인스턴스에 인터넷 게이트웨이 또는 NAT 게이트웨이를 사용하세요.
  • Amazon Virtual Private Cloud(Amazon VPC) 엔드포인트를 사용하는 경우 엔드포인트가 Amazon VPC IP로 확인되는지 확인하세요. 또한 엔드포인트 보안 그룹이 소스 인스턴스에서 액세스를 허용하는지 확인하세요.

잘못된 계정, 리전 또는 로그 그룹 구성

CloudWatch 에이전트 구성 파일의 경우, 지정된 지역이 콘솔 지역과 일치하는지 확인하세요. 또한 로그가 올바른 계정에서 확인되었는지 확인하세요.

선택 사항으로 다음 common-config.toml 파일을 사용하여 CloudWatch 에이전트에 대한 시스템 기본값을 재정의합니다.

Linux:

/opt/aws/amazon-cloudwatch-agent/etc/common-config.toml
/etc/amazon/amazon-cloudwatch-agent/common-config.toml

Windows:

$Env:ProgramData\Amazon\AmazonCloudWatchAgent\common-config.toml

IAM 권한이 충분하지 않음

CloudWatch 에이전트는 IAM 사용자 또는 IAM 역할 정책의 자격 증명을 사용하여 로그 이벤트를 CloudWatch 서비스에 푸시합니다. 로그 이벤트를 게시하기 전에 로그 그룹 및 로그 스트림을 만드세요. 로그 그룹이나 로그 스트림이 없는 경우 CloudWatch 에이전트가 이를 만듭니다.

정책에 다음 IAM 권한이 포함되어 있는지 확인하세요.

"logs:CreateLogGroup","logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogStreams"

사용자 정책 또는 역할 정책에 누락된 IAM 권한을 추가하십시오.

참고: IAM 역할 및 사용자를 생성할 때는 Amazon에서 만든 CloudWatchAgentServerPolicyCloudWatchAgentAdminPolicy 정책을 사용하는 것이 좋습니다.

CloudWatch 에이전트 실행 오류

CloudWatch 에이전트가 실행 중인지 확인합니다. 에이전트가 실행되고 있지 않다면 로그 파일 위치에서 오류를 확인하세요.

Linux:

/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log

Windows:

$Env:ProgramData\Amazon\AmazonCloudWatchAgent\Logs\amazon-cloudwatch-agent.log

참고: 사용자 지정 logfile 위치에 로그가 지정되어 있을 수 있습니다. 사용자 지정 로그 위치를 확인하려면 상담원 구성 파일을 확인하세요.

구성 파일에서 자세한 디버그 로깅을 사용 설정하려면 debug 매개 변수를 사용합니다. run_as_user 매개 변수를 사용하는 경우에는 사용자에게 로그 위치에 대한 권한이 있는지 확인하세요. 사용자에게 필요한 권한이 없는 경우 CloudWatch가 해당 위치에 로그를 쓸 수 없습니다.

CloudWatch 에이전트를 시작할 때 IMDS 관련 문제가 관찰되는 경우 다음 단계를 완료하세요.

타임스탬프 문제

14일 이상 또는 2시간 이상 지난 로그 이벤트 타임스탬프가 있는지 확인하세요. PutLogEvents 명령은 두 기간의 로그 일괄 처리를 허용하지 않습니다. 또한 인스턴스의 시스템 시간 서비스가 올바르게 구성되어 있는지 확인하십시오. 자세한 내용은 인스턴스의 시간대 변경을 참조하십시오.

로그의 상태 파일에 누락되거나 잘못된 값이 있음

로그의 상태 파일에 누락되었거나 잘못된 값을 해결하려면 다음 단계를 완료하세요.

  1. 상태 파일이 올바른 위치에 있는지 확인합니다.
    Linux:

    /opt/aws/amazon-cloudwatch-agent/logs/state
    
    

    Windows:

    C:\ProgramData\Amazon\AmazonCloudWatchAgent\Logs\state

    참고: 앞의 상태 파일에 로그 파일과 동일한 크기 값이 포함되어 있는지 확인하세요. 이렇게 하면 새 데이터를 읽고 CloudWatch에 게시할 수 있습니다.

  2. state 파일의 크기 값을 확인하십시오.
    Linux:

    sudo cat /opt/aws/amazon-cloudwatch-agent/logs/state/_var_log_httpd_access_log
    
    

    Windows:

    gc 'C:\ProgramData\Amazon\AmazonCloudWatchAgent\Logs\state\C__Program_Files_log.log'
    
    

    참고: 앞의 명령의 출력은 현재 오프셋의 숫자 값입니다. 예를 들어, 출력이 34이면 현재 오프셋은 로그 파일의 34번째 바이트에 있습니다. 새 로그가 로그 파일에 기록될 때 이 바이트에서 로그를 읽습니다.

  3. 로그 파일의 크기 값을 확인합니다.
    Linux:

    stat /var/log/httpd/access_log | grep Size | awk '{print $2}'
    
    

    Windows:

    Get-Item 'C:\Program Files\log.log' | Format-List | findstr Length
  4. 앞의 2단계와 3단계의 출력이 동일한지 확인합니다.

잘못된 소스 로그 파일 구성

잘못된 소스 로그 파일 구성으로 인한 문제를 해결하려면 다음 단계를 완료하세요.

  • CloudWatch 에이전트 구성에 모니터링하려는 로그 파일이 포함되어 있는지 확인하세요.
  • 로그 파일의 파일 형식이 올바른지, 올바른 이름과 위치가 사용되었는지 확인하세요.
  • 현재 구성에서 데이터를 검색하려는 것과 동일한 로그 그룹 및 로그 스트림으로 로그가 푸시되는지 확인하세요.
  • 인스턴스에서 모니터링 중인 로그 파일을 검토합니다. 소스 로그 파일에 로그 그룹에 게시하려는 데이터가 포함되어 있는지 확인합니다.

PutLogEvents 제약 조건

CloudWatch 에이전트는 PutLogEvents API를 사용하여 CloudWatch 로그 그룹에 로그 이벤트를 게시합니다. 이 API의 제약 조건을 준수하는지 확인하세요. 자세한 내용은 PutLogEvents를 참고하세요.

높은 force_flush_interval 값

force_flush_interval은 로그가 서버로 전송되기 전에 메모리 버퍼에 남아있을 수 있는 최대 시간을 지정합니다. 로그의 크기가 최대 버퍼인 1MB에 도달하면 로그가 즉시 CloudWatch에 게시됩니다. 로그는 force_flush_interval로 설정한 간격에 관계없이 CloudWatch에 게시됩니다.

간격을 높은 값으로 설정하고 로그 크기가 1MB에 도달하지 않으면 로그가 버퍼에 남아 있습니다. 로그는 버퍼가 가득 차거나 간격이 경과할 때까지 버퍼에 남아 있습니다. 이 간격 동안에는 CloudWatch에서 로그를 사용할 수 없습니다. 간격 값을 올바른 크기로 설정했는지 확인하세요. 게시하려는 로그 크기와 간격에 따라 간격 값을 설정하는 것이 가장 좋습니다.

관련 정보

CloudWatch 에이전트 문제 해결