AlloyDB Omni 관리 및 모니터링

이 페이지에서는 AlloyDB Omni 사용자 역할을 관리하고, AlloyDB Omni 서버의 활동을 모니터링하고, AlloyDB Omni 설치를 업데이트하거나 삭제하는 방법을 설명합니다.

사용자 역할 관리

AlloyDB Omni는 AlloyDB에 포함된 사전 정의된 PostgreSQL 사용자 역할 집합을 사용하지만 다음과 같은 차이점이 있습니다.

  • AlloyDB Omni에는 alloydbadmin라는 수퍼유저 역할과 alloydbmetadata라는 수퍼유저가 아닌 역할이 포함되어 있습니다.

  • 기본 postgres 사용자는 수퍼유저 역할을 갖습니다.

  • 다른 모든 사전 정의된 사용자 역할에는 권한이 없습니다. 이러한 주소는 향후 사용할 수 있도록 예약되어 있습니다.

AlloyDB와 마찬가지로 데이터베이스를 설정할 때는 다음 단계를 따르는 것이 좋습니다.

  1. postgres 사용자 역할을 사용하여 데이터베이스를 정의하거나 가져옵니다. 새 설치에서 이 역할에는 수퍼유저 권한이 있으며 비밀번호가 필요하지 않습니다.

  2. postgres 사용자 역할을 다시 사용하여 애플리케이션 테이블에 대한 올바른 액세스 수준이 있는 새 사용자 역할을 만듭니다.

  3. 이러한 새로운 제한된 액세스 권한 역할을 사용하여 데이터베이스에 연결하도록 애플리케이션을 구성합니다.

필요한 만큼 새 사용자 역할을 만들고 정의할 수 있습니다. AlloyDB Omni와 함께 제공되는 사용자 역할을 수정하거나 삭제하지 마세요.

자세한 내용은 AlloyDB 사용자 역할 관리를 참고하세요.

AlloyDB Omni 모니터링

AlloyDB Omni 설치를 모니터링한다는 것은 로그 파일을 읽고 분석하는 것을 의미합니다.

Kubernetes에서 실행되는 AlloyDB Omni에는 Prometheus 엔드포인트로 사용할 수 있는 기본 측정항목 집합도 있습니다. 사용 가능한 측정항목 목록은 AlloyDB Omni 측정항목을 참고하세요.

단일 서버

기본적으로 AlloyDB Omni 로그를 검색하려면 다음을 실행합니다.

 docker logs CONTAINER_NAME

CONTAINER_NAME을 AlloyDB Omni 컨테이너 이름으로 바꿉니다.

AlloyDB Omni의 로깅 동작을 구성하려면 AlloyDB Omni 설치 맞춤설정을 참고하세요.

Kubernetes

데이터베이스 클러스터 로그 파일 찾기

postgresql.auditpostgresql.log 파일은 데이터베이스 포드의 파일 시스템에서 찾을 수 있습니다. 이러한 파일에 액세스하려면 다음 단계를 따르세요.

  1. 데이터베이스 pod의 이름이 포함된 환경 변수를 정의합니다.

    export DB_POD=`kubectl get pod -l alloydbomni.internal.dbadmin.goog/dbcluster=DB_CLUSTER_NAME,alloydbomni.internal.dbadmin.goog/task-type=database -o jsonpath='{.items[0].metadata.name}'`

    DB_CLUSTER_NAME을 데이터베이스 클러스터 이름으로 바꿉니다. 이는 데이터베이스 클러스터를 만들 때 선언한 데이터베이스 클러스터 이름과 동일합니다.

  2. 데이터베이스 포드에서 루트로 셸을 실행합니다.

    kubectl exec ${DB_POD} -it -- /bin/bash
  3. /obs/diagnostic/ 디렉터리에서 로그 파일을 찾습니다.

    • /obs/diagnostic/postgresql.audit
    • /obs/diagnostic/postgresql.log

모니터링 서비스 나열

v1.0

데이터베이스 클러스터를 만들면 AlloyDB Omni는 동일한 네임스페이스에 데이터베이스 클러스터의 각 인스턴스 CR에 대해 다음 모니터링 서비스를 만듭니다.

al-INSTANCE_NAME-monitoring-system

모니터링 서비스를 나열하려면 다음 명령어를 실행합니다.

kubectl get svc -n NAMESPACE | grep monitoring

NAMESPACE을 클러스터가 속한 네임스페이스로 바꿉니다.

다음 응답 예는 al-1060-dbc-monitoring-system, al-3de6-dbc-monitoring-system, al-4bc0-dbc-monitoring-system 서비스를 보여줍니다. 각 서비스는 하나의 인스턴스에 해당합니다.

al-1060-dbc-monitoring-system   ClusterIP   10.0.15.227   <none>        9187/TCP   7d20h
al-3de6-dbc-monitoring-system   ClusterIP   10.0.5.205    <none>        9187/TCP   7d19h
al-4bc0-dbc-monitoring-system   ClusterIP   10.0.15.92    <none>        9187/TCP   7d19h

버전 1.0 미만

데이터베이스 클러스터를 만들면 AlloyDB Omni는 데이터베이스 클러스터와 동일한 네임스페이스에 다음 모니터링 서비스를 만듭니다.

  • DB_CLUSTER-monitoring-db

  • DB_CLUSTER-monitoring-system

모니터링 서비스를 나열하려면 다음 명령어를 실행합니다.

kubectl get svc -n NAMESPACE | grep monitoring

NAMESPACE을 클러스터가 속한 네임스페이스로 바꿉니다.

다음 응답 예는 al-2953-dbcluster-foo7-monitoring-systemal-2953-dbcluster-foo7-monitoring-db 서비스를 보여줍니다.

al-2953-dbcluster-foo7-monitoring-db           ClusterIP   10.36.3.243    <none>        9187/TCP   44m
al-2953-dbcluster-foo7-monitoring-system       ClusterIP   10.36.7.72     <none>        9187/TCP   44m

명령줄에서 Prometheus 측정항목 보기

포트 9187는 모든 모니터링 서비스에 metricsalloydbomni로 이름이 지정됩니다.

  1. 로컬 환경에서 모니터링 서비스로 포트 전달을 설정합니다.

    kubectl port-forward service/MONITORING_SERVICE -n NAMESPACE MONITORING_METRICS_PORT:metricsalloydbomni
    

    다음을 바꿉니다.

    • MONITORING_SERVICE: 전달하려는 모니터링 서비스의 이름입니다(예: al-1060-dbc-monitoring-system).

    • NAMESPACE: 클러스터가 속한 네임스페이스입니다.

    • MONITORING_METRICS_PORT: 로컬에서 사용할 수 있는 TCP 포트입니다.

    다음 응답은 서비스가 전달되고 있음을 보여줍니다.

    Forwarding from 127.0.0.1:9187 -> 9187
    Forwarding from [::1]:9187 -> 9187
    
  2. 이전 명령어가 실행되는 동안 지정한 포트에서 HTTP를 통해 모니터링 측정항목에 액세스할 수 있습니다. 예를 들어 curl를 사용하여 모든 측정항목을 일반 텍스트로 볼 수 있습니다.

    curl http://localhost:MONITORING_METRICS_PORT/metrics
    

Prometheus API를 사용하여 측정항목 보기

alloydbomni.internal.dbadmin.goog/task-type 라벨 키와 metricsalloydbomni 포트는 AlloyDB Omni의 모든 모니터링 서비스에 기본값으로 사용할 수 있습니다. 단일 serviceMonitor 맞춤 리소스와 함께 사용하여 데이터베이스 클러스터의 모든 네임스페이스에 대한 모든 서비스를 선택할 수 있습니다.

Prometheus API 사용에 관한 자세한 내용은 Prometheus 운영자 문서를 참고하세요.

다음은 alloydbomni.internal.dbadmin.gdc.goog/task-type 라벨 키와 metricsalloydbomni 포트가 포함된 serviceMonitor 커스텀 리소스의 spec 필드 예시입니다. serviceMonitor 맞춤 리소스는 모든 네임스페이스의 모든 Kubernetes 서비스를 모니터링하고 수집합니다.

전체 ServiceMonitor 정의에 관한 자세한 내용은 ServiceMonitor 커스텀 리소스 정의 를 참고하세요.

v1.0

    spec:
      selector:
        matchLabels:
          alloydbomni.internal.dbadmin.goog/task-type: monitoring
      namespaceSelector:
        any: true
      endpoints:
        - port: metricsalloydbomni

버전 1.0 미만

    spec:
      selector:
        matchExpressions:
        - key: alloydbomni.internal.dbadmin.gdc.goog/task-type
          operator: Exists
          values: []
      namespaceSelector:
        any: true
      endpoints:
      - port: metricsalloydbomni

AlloyDB Omni 업그레이드

AlloyDB Omni 15.5.2 이하 버전에서 15.5.4로 업그레이드하려면 이전 버전의 AlloyDB Omni에서 최신 버전으로 이전의 안내를 따르세요.

15.5.4 이상에서 업그레이드하려면 다음 안내를 따르세요.

  1. 새 이미지 버전을 사용하여 AlloyDB Omni를 다시 시작합니다.

  2. 이전 버전의 AlloyDB Omni에서 사용된 것과 동일한 경로와 일치하도록 데이터 디렉터리를 지정해야 합니다.

AlloyDB Omni 제거

단일 서버

AlloyDB Omni를 제거하려면 다음 명령어를 사용하여 AlloyDB Omni 컨테이너를 중지하고 삭제합니다.

 docker container stop CONTAINER_NAME
 docker container rm CONTAINER_NAME

CONTAINER_NAME을 AlloyDB Omni 컨테이너 이름으로 바꿉니다.

AlloyDB Omni를 제거한 후 데이터를 보존할지 여부와 방법에 따라 외부 데이터 디렉터리를 이동, 보관처리 또는 삭제할 수 있습니다.

Kubernetes

데이터베이스 클러스터 삭제

데이터베이스 클러스터를 삭제하려면 매니페스트에서 isDeletedtrue로 설정합니다. 다음 명령어를 실행하여 이 작업을 수행할 수 있습니다.

kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -p '{"spec":{"isDeleted":true}}' --type=merge

DB_CLUSTER_NAME을 데이터베이스 클러스터 이름으로 바꿉니다. 데이터베이스 클러스터를 만들 때 선언한 데이터베이스 클러스터 이름과 동일합니다.

AlloyDB Omni Operator 제거

Kubernetes 클러스터에서 AlloyDB Omni Kubernetes Operator를 제거하려면 다음 단계를 따르세요.

  1. 모든 데이터베이스 클러스터를 삭제합니다.

    for ns in $(kubectl get dbclusters.alloydbomni.dbadmin.goog --all-namespaces -o=jsonpath='{range .items[*]}{.metadata.namespace}{"\n"}{end}'); do
    for cr in $(kubectl get dbclusters.alloydbomni.dbadmin.goog -n $ns -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'); do
    kubectl patch dbclusters.alloydbomni.dbadmin.goog $cr -n $ns --type=merge -p '{"spec":{"isDeleted":true}}'
    done
    done
  2. AlloyDB Omni Kubernetes Operator가 모든 데이터베이스 클러스터를 삭제할 때까지 기다립니다. 다음 명령어를 사용하여 데이터베이스 리소스가 남아 있는지 확인합니다.

    kubectl get dbclusters.alloydbomni.dbadmin.goog --all-namespaces
  3. AlloyDB Omni Kubernetes Operator가 만든 다른 리소스를 삭제합니다.

    kubectl delete failovers.alloydbomni.dbadmin.goog --all --all-namespaces
    kubectl delete restores.alloydbomni.dbadmin.goog --all --all-namespaces
    kubectl delete switchovers.alloydbomni.dbadmin.goog --all --all-namespaces
  4. AlloyDB Omni Kubernetes Operator를 제거합니다.

    helm uninstall alloydbomni-operator --namespace alloydb-omni-system
  5. AlloyDB Omni Kubernetes Operator와 관련된 보안 비밀, 맞춤 리소스 설명, 네임스페이스를 삭제합니다.

    kubectl delete certificate -n alloydb-omni-system --all
    kubectl get secrets --all-namespaces -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name,ANNOTATION:.metadata.annotations.cert-manager\.io/issuer-name | grep -E 'alloydbomni|dbs-al' | awk '{print $1 " " $2}' | xargs -n 2 kubectl delete secret -n
    kubectl delete crd -l alloydb-omni=true
    kubectl delete ns alloydb-omni-system

Kubernetes 기반 데이터베이스 클러스터 크기 조정

Kubernetes 기반 데이터베이스 클러스터의 CPU, 메모리 또는 스토리지 크기를 조정하려면 포드를 정의하는 매니페스트의 resources 필드를 업데이트합니다. AlloyDB Omni Operator는 새 사양을 데이터베이스 포드에 즉시 적용합니다.

AlloyDB Omni 연산자 매니페스트 문법에 관한 자세한 내용은 데이터베이스 클러스터 만들기를 참고하세요.

실행 중인 데이터베이스 클러스터의 리소스를 수정하는 경우 다음과 같은 제한사항이 적용됩니다.

  • 지정된 storageClass가 볼륨 확장을 지원하는 경우에만 디스크 크기를 늘릴 수 있습니다.
  • 디스크 크기를 줄일 수는 없습니다.