PostgreSQL 서버 로그 수준 점검

PostgreSQL 서버 로그에 필요한 메시지 수준을 선택하고, 유효하지 않은 값과 과도하거나 부족한 기록을 방지하세요.

설명

Cloud SQL for PostgreSQL의 log_min_messages는 서버 로그에 남길 메시지의 최소 수준을 결정합니다. 유효하지 않은 값은 설정 적용을 실패하게 할 수 있고, 유효한 값이라도 운영 목적과 맞지 않으면 필요한 기록이 빠지거나 로그가 과도하게 쌓일 수 있습니다.

PostgreSQL의 기본값은 warning입니다. 서버 로그 수준에서 log는 error보다 높고 fatal보다 낮으므로, log로 설정하면 일반적인 warning과 error 메시지는 제외됩니다. 값이 유효하다는 것과 필요한 로그를 모두 남긴다는 것은 다릅니다.

잠재적 영향

  • 필요한 경고와 오류 기록이 빠지면 장애나 이상 징후를 파악하기 어려울 수 있습니다.
  • 지나치게 상세한 기록은 로그 처리 비용과 운영 노이즈를 늘릴 수 있습니다.

해결 방법

  • settings.database_flags의 log_min_messages에 지원되는 값을 지정하고, 필요한 경고와 오류가 포함되는 수준을 선택하세요.
  • 다른 PostgreSQL 로그 설정과 함께 검토하세요. 이 설정만으로 모든 데이터베이스 작업에 대한 감사 기록이 확보되지는 않습니다.
  • 변경 후 실제 메시지 수집 여부, 로그량과 성능 영향을 확인하세요.

google.cloud 1.14.0의 SQL 모듈은 기존 인스턴스 갱신을 지원하지 않습니다. 다음 예시는 생성용이며, 기존 인스턴스의 플래그는 지원되는 Cloud SQL 도구나 API로 변경하세요.

예시

지원되는 PostgreSQL 버전과 인스턴스 등급, 실제 프로젝트와 리소스 이름, 서비스 계정 JSON 파일을 사용하세요. 다음 예시는 메시지 수준의 유효성과 기록 범위를 비교합니다.

변경 전

yaml
- name: Cloud SQL 인스턴스 생성
  google.cloud.gcp_sql_instance:
    auth_kind: serviceaccount
    database_version: POSTGRES_13
    name: "{{ resource_name }}-2"
    project: test_project
    region: us-central1
    service_account_file: /tmp/auth.pem
    settings:
      database_flags:
        - name: log_min_messages
          value: debug6
      tier: db-custom-1-3840
    state: present

debug6은 지원되는 메시지 수준이 아니므로 유효한 배포 설정으로 사용할 수 없습니다.

변경 후

yaml
- name: Cloud SQL 인스턴스 생성
  google.cloud.gcp_sql_instance:
    auth_kind: serviceaccount
    database_version: POSTGRES_13
    name: "{{ resource_name }}-2"
    project: test_project
    region: us-central1
    service_account_file: /tmp/auth.pem
    settings:
      database_flags:
        - name: log_min_messages
          value: log
      tier: db-custom-1-3840
    state: present

log는 유효한 값이지만 일반적인 warning과 error 메시지를 제외합니다. 필요한 기록 범위에 맞는지 확인하고, 경고부터 수집해야 한다면 warning 등 적절한 수준을 선택하세요.

참조