Amazon CloudWatch Logs에 Aurora PostgreSQL 로그 게시 - Amazon Aurora

Amazon CloudWatch Logs에 Aurora PostgreSQL 로그 게시

Amazon CloudWatch Logs로 로그 데이터를 정기적으로 내보내도록 Aurora PostgreSQL DB 클러스터를 구성할 수 있습니다. 그러면 Aurora PostgreSQL DB 클러스터의 PostgreSQL 로그 이벤트가 Amazon CloudWatch Logs로 Amazon CloudWatch에 자동으로 게시됩니다. CloudWatch의 내보낸 로그 데이터는 Aurora PostgreSQL DB 클러스터의 로그 그룹에서 찾을 수 있습니다. 로그 그룹에는 클러스터에 있는 각 인스턴스의 PostgreSQL 로그 이벤트가 포함된 하나 이상의 로그 스트림이 포함됩니다.

CloudWatch Logs에 로그를 게시하면 클러스터의 PostgreSQL 로그 레코드를 내구성이 뛰어난 스토리지에 보관할 수 있습니다. CloudWatch Logs에서 사용 가능한 로그 데이터를 사용하여 클러스터 작업을 평가하고 개선할 수 있습니다. CloudWatch에서 경보를 생성하고 지표를 볼 수도 있습니다. 자세한 내용은 Amazon CloudWatch에서 로그 이벤트 모니터링 단원을 참조하세요.

참고

CloudWatch Logs에 PostgreSQL 로그를 게시하면 스토리지가 사용되며 해당 스토리지에 대한 요금이 부과됩니다. 더 이상 필요하지 않은 CloudWatch Logs는 삭제해야 합니다.

기존 Aurora PostgreSQL DB 클러스터에 대한 로그 내보내기 옵션을 꺼도 CloudWatch Logs에 이미 보관된 데이터에는 영향을 미치지 않습니다. 기존 로그는 로그 보관 설정에 따라 CloudWatch Logs에서 계속 사용할 수 있습니다. CloudWatch Logs에 대한 자세한 내용은 Amazon CloudWatch Logs란?을 참조하세요.

Aurora PostgreSQL은 다음 버전에 대해 CloudWatch Logs에 로그 게시를 지원합니다.

  • 14.3 이상의 14 버전

  • 13.3 이상의 13 버전

  • 12.8 이상의 12 버전

  • 11.12 이상의 11 버전

Amazon CloudWatch로 로그를 게시하는 옵션 설정

Aurora PostgreSQL DB 클러스터의 PostgreSQL 로그를 CloudWatch Logs에 게시하려면 클러스터에 대한 Log export(로그 내보내기) 옵션을 선택합니다. Aurora PostgreSQL DB 클러스터를 생성할 때 로그 내보내기 설정을 선택할 수 있습니다. 클러스터는 나중에 수정해도 됩니다. 기존 클러스터를 수정하면 해당 시점부터 각 인스턴스의 PostgreSQL 로그가 CloudWatch 클러스터에 게시됩니다. Aurora PostgreSQL의 경우 PostgreSQL 로그(postgresql.log)는 Amazon CloudWatch에 게시되는 유일한 로그입니다.

AWS Management Console, AWS CLI 또는 RDS API를 사용하여 Aurora PostgreSQL DB 클러스터에 대한 로그 내보내기 기능을 설정 수 있습니다.

로그 내보내기 옵션을 선택하여 Aurora PostgreSQL DB 클러스터에서 CloudWatch Logs로 PostgreSQL 로그 게시를 시작합니다.

콘솔에서 로그 내보내기 기능을 켜려면
  1. https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 데이터베이스를 선택합니다.

  3. CloudWatch Logs에 게시하려는 로그 데이터가 있는 Aurora PostgreSQL DB 클러스터를 선택합니다.

  4. 수정을 선택합니다.

  5. Log exports(로그 내보내기) 섹션에서 PostgreSQL log(PostgreSQL 로그를 선택합니다.

  6. 계속을 선택한 후, 요약 페이지에서 클러스터 수정을 선택합니다.

로그 내보내기 옵션을 켜서 AWS CLI를 사용하여 Amazon CloudWatch Logs에 Aurora PostgreSQL 로그 게시를 시작할 수 있습니다. 이를 위해서는 modify-db-cluster AWS CLI 명령을 다음 옵션과 함께 실행해야 합니다.

  • --db-cluster-identifier - DB 클러스터 식별자입니다.

  • --cloudwatch-logs-export-configuration - DB 클러스터에 대하여 CloudWatch Logs로 내보내기를 설정할 로그 유형의 구성 설정입니다.

또한 다음 AWS CLI 명령 중 하나를 실행하여 Aurora PostgreSQL 로그를 게시할 수 있습니다.

다음 옵션으로 AWS CLI 명령 중 하나를 실행합니다.

  • --db-cluster-identifier—DB 클러스터 식별자입니다.

  • --engine—데이터베이스 엔진입니다.

  • --enable-cloudwatch-logs-exports—DB 클러스터에 대하여 CloudWatch Logs로 내보내기를 활성화할 로그 유형의 구성 설정입니다.

실행하는 AWS CLI 명령에 따라 다른 옵션이 필요할 수 있습니다.

다음 명령은 CloudWatch Logs에 로그 파일을 게시하도록 Aurora PostgreSQL DB 클러스터를 생성합니다.

Linux, macOS, Unix:

aws rds create-db-cluster \ --db-cluster-identifier my-db-cluster \ --engine aurora-postgresql \ --enable-cloudwatch-logs-exports postgresql

Windows의 경우:

aws rds create-db-cluster ^ --db-cluster-identifier my-db-cluster ^ --engine aurora-postgresql ^ --enable-cloudwatch-logs-exports postgresql

다음 명령은 CloudWatch Logs에 로그 파일을 게시하도록 기존 Aurora PostgreSQL DB 클러스터를 수정합니다. --cloudwatch-logs-export-configuration 값은 JSON 객체입니다. 이 객체의 키는 EnableLogTypes, 이고 그 값은 postgresql입니다.

Linux, macOS, Unix:

aws rds modify-db-cluster \ --db-cluster-identifier my-db-cluster \ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["postgresql"]}'

Windows의 경우:

aws rds modify-db-cluster ^ --db-cluster-identifier my-db-cluster ^ --cloudwatch-logs-export-configuration '{\"EnableLogTypes\":[\"postgresql\"]}'
참고

Windows 명령 프롬프트를 사용하는 경우 백슬래시(\)를 접두사로 추가하여 JSON 코드에서 큰 따옴표(")를 이스케이프해야 합니다.

다음 예에서는 CloudWatch Logs에 로그 파일 게시를 비활성화하도록 기존 Aurora PostgreSQL DB 클러스터를 수정합니다. --cloudwatch-logs-export-configuration 값은 JSON 객체입니다. 이 객체의 키는 DisableLogTypes, 이고 그 값은 postgresql입니다.

Linux, macOS, Unix:

aws rds modify-db-cluster \ --db-cluster-identifier mydbinstance \ --cloudwatch-logs-export-configuration '{"DisableLogTypes":["postgresql"]}'

Windows의 경우:

aws rds modify-db-cluster ^ --db-cluster-identifier mydbinstance ^ --cloudwatch-logs-export-configuration "{\"DisableLogTypes\":[\"postgresql\"]}"
참고

Windows 명령 프롬프트를 사용하는 경우 백슬래시(\)를 접두사로 추가하여 JSON 코드에서 큰 따옴표(")를 이스케이프해야 합니다.

로그 내보내기 옵션을 켜서 AWS CLI를 사용하여 Amazon CloudWatch Logs에 Aurora PostgreSQL 로그 게시를 시작할 수 있습니다. 이를 위해서는 다음 옵션과 함께 ModifyDBCluster 작업을 실행해야 합니다.

  • DBClusterIdentifier - DB 클러스터 식별자입니다.

  • CloudwatchLogsExportConfiguration - DB 클러스터에 대하여 CloudWatch Logs로 내보내기를 활성화할 로그 유형의 구성 설정입니다.

또한 다음 RDS API 작업 중 하나를 실행하여 RDS API로 Aurora MySQL 로그를 게시할 수 있습니다.

다음 파라미터로 RDS API 작업을 실행합니다.

  • DBClusterIdentifier—DB 클러스터 식별자입니다.

  • Engine—데이터베이스 엔진입니다.

  • EnableCloudwatchLogsExports—DB 클러스터에 대하여 CloudWatch Logs로 내보내기를 활성화할 로그 유형의 구성 설정입니다.

실행하는 AWS CLI 명령에 따라 다른 파라미터가 필요할 수 있습니다.

Amazon CloudWatch에서 로그 이벤트 모니터링

Aurora PostgreSQL 로그 이벤트를 게시하고 Amazon CloudWatch Logs로 사용할 수 있으므로 Amazon CloudWatch를 사용하여 이벤트를 보고 모니터링할 수 있습니다. 모니터링에 대한 자세한 내용은 CloudWatch Logs로 전송된 로그 데이터 보기를 참조하세요.

로그 내보내기를 켜면 다음 패턴과 같이 Aurora PostgreSQL 이름과 로그 유형이 있는 접두사 /aws/rds/cluster/를 사용하여 새 로그 그룹이 자동으로 생성됩니다.

/aws/rds/cluster/your-cluster-name/postgresql

예를 들어 docs-lab-apg-small이라는 Aurora PostgreSQL DB 클러스터가 로그를 Amazon CloudWatch Logs로 내보낸다고 가정합니다. Amazon CloudWatch의 로그 그룹 이름은 다음과 같습니다.

/aws/rds/cluster/docs-lab-apg-small/postgresql

지정된 이름이 있는 로그 그룹이 존재할 경우 Aurora은 이 로그 그룹을 사용하여 Aurora DB 클러스터의 로그 데이터를 내보냅니다. Aurora PostgreSQL DB 클러스터의 각 DB 인스턴스는 PostgreSQL 로그를 고유한 로그 스트림으로 로그 그룹에 업로드합니다. Amazon CloudWatch에서 사용할 수 있는 다양한 그래픽 및 분석 도구를 사용하여 로그 그룹과 해당 로그 스트림을 검사할 수 있습니다.

예를 들어 Aurora PostgreSQL DB 클러스터에서 로그 이벤트 내 정보를 검색하고 CloudWatch Logs 콘솔, AWS CLI 또는 CloudWatch Logs API를 사용하여 이벤트를 필터링할 수 있습니다. 자세한 내용은 Amazon CloudWatch Logs 사용 설명서의 로그 데이터 검색 및 필터링을 참조하세요.

기본적으로 새 로그 그룹은 보관 기간 동안 Never expire(만기 없음)를 사용하여 생성됩니다. CloudWatch Logs 콘솔, AWS CLI 또는 CloudWatch Logs API를 사용하여 로그 보관 기간을 변경할 수 있습니다. 자세한 내용은 Amazon CloudWatch Logs 사용 설명서CloudWatch Logs에서 로그 데이터 보관 변경을 참조하세요.

작은 정보

AWS CloudFormation 같은 자동 구성을 사용하여 미리 정의된 로그 보관 기간, 메트릭 필터 및 액세스 권한이 있는 로그 그룹을 생성할 수 있습니다.

CloudWatch Logs Insights를 사용하여 PostgreSQL 로그 분석

Aurora PostgreSQL DB 클러스터의 PostgreSQL 로그를 CloudWatch Logs로 게시하면 CloudWatch Logs Insights를 사용하여 Amazon CloudWatch Logs의 로그 데이터를 대화식으로 검색하고 분석할 수 있습니다. CloudWatch Logs Insights에는 잠재적 문제를 식별하고 수정 사항을 확인할 수 있도록 로그 데이터를 분석하기 위한 쿼리 언어, 샘플 쿼리 및 기타 도구가 포함되어 있습니다. 자세히 알아보려면 Amazon CloudWatch Logs 사용 설명서CloudWatch Logs Insights에서 로그 데이터 분석을 참조하세요. Amazon CloudWatch Logs

CloudWatch Logs 인사이트를 사용하여 PostgreSQL 로그 분석
  1. https://console.aws.amazon.com/cloudwatch/에서 CloudWatch 콘솔을 엽니다.

  2. 탐색 창의 로그에서 로그 인사이트를 선택합니다.

  3. Select log group(s)(로그 그룹 선택)에서 DB 클러스터의 로그 그룹을 선택합니다.

    Aurora PostgreSQL 로그 그룹을 선택합니다.
  4. 쿼리 편집기에서 현재 표시되어 있는 쿼리를 삭제하고 다음을 입력한 후 쿼리 실행(Run query)을 선택합니다.

    ##Autovacuum execution time in seconds per 5 minute fields @message | parse @message "elapsed: * s" as @duration_sec | filter @message like / automatic vacuum / | display @duration_sec | sort @timestamp | stats avg(@duration_sec) as avg_duration_sec, max(@duration_sec) as max_duration_sec by bin(5 min)
    쿼리 편집기의 쿼리.
  5. 시각화(Visualization) 탭을 선택합니다.

    시각화(Visualization) 탭.
  6. 대시보드에 추가(Add to dashboard)를 선택합니다.

  7. 대시보드 선택(Select a dachboard)에서 대시보드를 선택하거나 이름을 입력하여 새 대시보드를 만듭니다.

  8. 위젯 유형(Widget type)에서 시각화에 사용할 위젯 유형을 선택합니다.

    대시보드.
  9. (선택 사항) 로그 쿼리 결과에 따라 위젯을 더 추가합니다.

    1. 위젯 추가를 선택합니다.

    2. 위젯 유형을 선택합니다(예:).

      위젯을 선택합니다.
    3. 이 대시보드에 추가(Add to this dashboard) 창에서 로그를 선택합니다.

      대시보드에 로그를 추가합니다.
    4. 로그 그룹 선택(Select log group(s))에서 DB 클러스터의 로그 그룹을 선택합니다.

    5. 쿼리 편집기에서 현재 표시되어 있는 쿼리를 삭제하고 다음을 입력한 후 쿼리 실행(Run query)을 선택합니다.

      ##Autovacuum tuples statistics per 5 min fields @timestamp, @message | parse @message "tuples: " as @tuples_temp | parse @tuples_temp "* removed," as @tuples_removed | parse @tuples_temp "remain, * are dead but not yet removable, " as @tuples_not_removable | filter @message like / automatic vacuum / | sort @timestamp | stats avg(@tuples_removed) as avg_tuples_removed, avg(@tuples_not_removable) as avg_tuples_not_removable by bin(5 min)
      쿼리 편집기의 쿼리.
    6. 위젯 생성을 선택합니다.

      대시보드가 다음 이미지와 비슷해야 합니다.

      두 개의 그래프가 있는 대시보드.