AlloyDB Omni 로그 로테이션 구성

이 문서에서는 AlloyDB Omni Kubernetes 연산자를 사용할 때 AlloyDB Omni 진단 로그의 회전을 구성하는 방법을 설명합니다.

다음 로그 파일은 /obs/diagnostic/ 디렉터리에 있습니다.

  • postgresql.audit: 이 로그 파일은 세션 및 객체 액세스 감사 로그를 수집합니다. 감사 로그를 수집하려면 감사 로그를 사용 설정해야 합니다.

  • postgresql.log: 이 로그 파일은 PostgreSQL 서버 로그를 수집합니다. 이러한 로그는 항상 수집되며 사용 설정할 필요가 없습니다.

로그 파일이 회전하면 다음과 같은 일이 발생합니다.

  1. 로그 파일이 /obs/diagnostic/archive/ 디렉터리에 복사됩니다. 같은 이름의 로그 파일이 디렉터리에 있으면 덮어씁니다.

  2. 원래 회전된 로그 파일의 콘텐츠가 삭제되어 파일이 비워집니다.

  3. 로그 정보가 비어 있고 회전된 로그 파일에 즉시 쓰기 시작합니다. 로그 정보는 파일이 크기 또는 기간 기준에 도달할 때까지 로그 파일에 기록되며, 이 시점에서 다시 순환됩니다. 로그가 너무 커지지 않도록 로테이션됩니다.

기본적으로 각 로그 파일의 크기가 200MB에 도달하면 순환 설정에 따라 순환됩니다. 기본 순환에는 연령 설정이 포함되지 않습니다.

보관처리된 각 파일은 Gzip (.gz) 파일 형식을 사용하여 개별적으로 압축됩니다.

보관처리된 파일은 7일 동안 보관됩니다. 이전 순환 중에 보관처리된 파일을 제외하고 보관처리된 파일 중 7일이 지난 파일은 자동으로 삭제됩니다. 예를 들어 log_rotation_age가 7일 이상 지난 경우 보관 파일이 현재 파일의 순환 전에 7일 기준점에 도달합니다. 이 경우 다음 순환에서 새 보관 파일을 생성할 때까지 보관 파일이 삭제되지 않습니다.

보관처리된 각 로그 파일 이름은 postgresql-%Y-%m-%d_%H%M%S.log.gz 형식입니다. 타임스탬프는 로그 순환 시 결정되며 협정 세계시 (UTC)로 표시됩니다. 예를 들어 2024년 12월 20일 13:01:02(UTC)에 로그가 회전된 경우 보관처리된 파일 이름은 postgresql-2024-12-20_130102.log.gz입니다.

보관처리된 파일을 영구적으로 저장하려면 kubectl cp를 사용하여 데이터베이스 컨테이너에서 로컬 디렉터리로 파일을 복사하면 됩니다.

감사 로그 사용 설정

postgresql.audit 파일에서 세션 및 객체 액세스 로그를 수집하려면 pgaudit 데이터베이스 매개변수를 사용 설정해야 합니다. pgaudit를 사용 설정하려면 Secret 아래의 v1_dbcluster_parameters.yaml 파일의 parameters 섹션에 다음 줄을 추가합니다.

alloydb.enable_pgaudit: "on"

다음은 이와 같은 출력을 보여주는 예시입니다.

apiVersion: v1
kind: Secret
...
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
   name: DB_CLUSTER_NAME
spec:
  databaseVersion: "15.7.0"
  primarySpec:
    ...
    parameters:
      ...
      alloydb.enable_pgaudit: "on"

자세한 내용은 지원되는 데이터베이스 확장 프로그램pgauditPostgreSQL 감사 확장 프로그램을 참고하세요. PostgreSQL 서버 로그는 항상 postgresql.log 파일에서 수집되며 pgaudit를 사용 설정할 필요가 없습니다.

로그 로테이션 구성

로그 순환 시점을 더 세부적으로 제어하려면 최대 파일 크기, 로그 순환 간격 또는 둘 다를 구성합니다. 로그 순환 간격을 로그의 '만료일'이라고도 합니다. 두 설정을 모두 사용하는 경우 각 로그가 임곗값 중 하나에 도달하면 로테이션됩니다.

로그 회전을 구성하려면 DBCluster 매니페스트의 parameters 섹션에서 다음 매개변수 중 하나 또는 둘 다를 설정합니다.

  • log_rotation_size: "SIZE_IN_KB"
  • log_rotation_age: "AGE_IN_MINUTES"

로그 순환 설정 중 하나를 사용 중지하려면 0 ("0")으로 설정하세요. 파일 크기가 200MB에 도달하면 로그를 순환하는 기본 설정을 유지하려면 두 매개변수 중 하나도 설정하지 마세요.

로그 순환 최대 로그 크기 및 기간 예시

다음 샘플은 파일 크기가 400MB에 도달하거나 로그 순환 간격이 1일에 도달할 때(둘 중 먼저 발생하는 경우) 로그가 순환되도록 설정합니다.

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: DB_CLUSTER_NAME
spec:
...
  primarySpec:
  ...
    parameters:
      log_rotation_size: "400000" # 400 MB
      log_rotation_age: "1440" # 24 hours * 60 minutes = 1 day

로그 순환 최대 로그 크기 예시

다음 샘플은 파일 크기가 400MB에 도달하면 로그를 순환하도록 설정합니다.

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: DB_CLUSTER_NAME
spec:
...
  primarySpec:
  ...
    parameters:
      log_rotation_size: "400000" # 400 MB
      log_rotation_age: "0" # Set to 0 to disable

로그 로테이션 기간 예시

다음 샘플은 로그가 24시간마다 한 번 로테이션되도록 설정합니다.

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: DB_CLUSTER_NAME
spec:
...
  primarySpec:
  ...
    parameters:
      log_rotation_size: "0" # Set to 0 to disable
      log_rotation_age: "1440" # 24 hours * 60 minutes = 1 day

다음 단계