GKE의 로깅 및 모니터링 구성


Google Kubernetes Engine(GKE)에는 Google Cloud Managed Service for Prometheus를 포함하여 Cloud Logging 및 Cloud Monitoring과의 통합이 포함됩니다.

이 통합을 통해 실행 중인 GKE 클러스터를 모니터링하고, 시스템 및 디버그 로그를 관리하고, 고급 프로파일링 및 추적 기능을 사용하여 시스템 성능을 분석할 수 있습니다.

이 통합은 또한 GKE 클러스터 관측을 위한 대시보드를 제공합니다.

기본 감사 로그를 비롯한 보안 로그는 GKE 클러스터에 대해 Cloud Logging이 사용 설정되지 않은 경우에도 GKE 및 다른 대부분의 Google Cloud 서비스에서 사용할 수 있습니다. 자세한 내용은 Cloud 감사 로그를 참조하세요.

이 페이지에서는 다음 작업을 수행하는 방법을 설명합니다.

  • 새 클러스터를 만들고 Cloud Logging, Cloud Monitoring, Google Cloud Managed Service for Prometheus를 구성합니다.

  • 수집할 로그 및 측정항목을 선택합니다.

  • 클러스터에 대해 Cloud Logging, Cloud Monitoring, Google Cloud Managed Service for Prometheus를 사용 중지합니다.

GKE Autopilot 클러스터의 경우 Cloud Logging 및 Cloud Monitoring 통합을 사용 중지할 수 없습니다.

시작하기 전에

시작하기 전에 다음 태스크를 수행했는지 확인합니다.

  • Google Kubernetes Engine API를 사용 설정합니다.
  • Google Kubernetes Engine API 사용 설정
  • 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치한 경우 gcloud components update를 실행하여 최신 버전을 가져옵니다.
  • 클러스터가 포함된 프로젝트의 소유자인지 확인하세요.

  • Cloud Logging API를 사용 설정했는지 확인합니다. 개요 페이지에서 Cloud Logging API 상태를 확인할 수 있습니다.

로그 및 측정항목

GKE 클러스터에서 Cloud Logging 및 Cloud Monitoring으로 로그 및 측정항목을 전송할지 여부를 선택할 수 있습니다. 다음 섹션에서는 사용 가능한 로그 및 측정항목이 무엇이고 클러스터 생성 시 기본적으로 사용 설정되는 로그 및 측정항목이 무엇인지 설명합니다.

사용 가능한 로그

Cloud Logging으로 로그 전송을 선택한 경우 시스템 로그를 전송해야 하며, 선택적으로 추가 소스의 로그를 전송할 수 있습니다.

Cloud Logging 가격 책정 알아보기

다음 테이블에서는 createupdate 명령어의 --logging 플래그에 지원되는 값을 보여줍니다.

로그 소스 --logging 수집된 로그
없음 NONE Cloud Logging으로 로그가 전송되지 않습니다. 클러스터에 로그 수집 에이전트가 설치되지 않습니다. 이 값은 GKE Autopilot 클러스터에서 지원되지 않습니다.
시스템 SYSTEM 다음 위치에서 로그 수집:
  • 네임스페이스 kube-system, istio-system, knative-serving, gke-system, config-management-system에서 실행되는 모든 Pod
  • docker/containerd 런타임, kubelet, kubelet-monitor, node-problem-detector, kube-container-runtime-monitor 등 컨테이너화되지 않은 키 서비스
  • VM 인스턴스 메타데이터 serial-port-logging-enable이 true로 설정된 경우 노드의 직렬 포트 출력

또한 Kubernetes 이벤트를 수집합니다. 이 값은 모든 클러스터 유형에 필요합니다.

워크로드 WORKLOAD 사용자 노드에서 실행되는 비시스템 컨테이너로 생성되는 모든 로그입니다. 이 값은 기본적으로 사용 설정되어 있지만 모든 클러스터 유형에서 선택사항입니다.
API 서버 API_SERVER kube-apiserver에서 생성하는 모든 로그입니다. 이 값은 모든 클러스터 유형에서 선택사항입니다.
스케줄러 SCHEDULER kube-scheduler에서 생성하는 모든 로그입니다. 이 값은 모든 클러스터 유형에서 선택사항입니다.
컨트롤러 관리자 CONTROLLER_MANAGER kube-controller-manager에서 생성하는 모든 로그입니다. 이 값은 모든 클러스터 유형에서 선택사항입니다.

사용 가능한 측정항목

Cloud Monitoring으로 측정항목 전송을 선택한 경우 시스템 측정항목을 전송해야 하며, 선택적으로 추가 측정항목을 전송할 수 있습니다.

청구 대상이 아닌 측정항목을 포함하여 Cloud Monitoring 가격 책정에 대해 자세히 알아보세요.

다음 테이블에서는 createupdate 명령어의 --monitoring 플래그에 지원되는 값을 보여줍니다.

소스 --monitoring 수집된 측정항목
없음 NONE Cloud Monitoring으로 측정항목이 전송되지 않습니다. 클러스터에 측정항목 수집 에이전트가 설치되지 않습니다. 이 값은 GKE Autopilot 클러스터에서 지원되지 않습니다.
시스템 SYSTEM Kubernetes에 필요한 필수 시스템 구성요소의 측정항목입니다. 이러한 Kubernetes 측정항목의 전체 목록을 참조하세요.
API 서버 API_SERVER kube-apiserver의 측정항목입니다. API 서버 측정항목의 전체 목록을 참조하세요.
스케줄러 SCHEDULER kube-scheduler의 측정항목입니다. 스케줄러 측정항목의 전체 목록을 참조하세요.
컨트롤러 관리자 CONTROLLER_MANAGER kube-controller-manager의 측정항목입니다. 컨트롤러 관리자 측정항목의 전체 목록을 참조하세요.
영구 볼륨(스토리지) STORAGE kube-state-metrics의 스토리지 측정항목입니다. 영구 볼륨 및 영구 볼륨 클레임의 측정항목이 포함됩니다. 스토리지 측정항목의 전체 목록을 참조하세요.
포드 POD kube-state-metrics의 포드 측정항목입니다. 포드 측정항목의 전체 목록을 참조하세요.
배포 DEPLOYMENT kube-state-metrics의 배포 측정항목입니다. 배포 측정항목의 전체 목록을 참조하세요.
StatefulSet STATEFULSET kube-state-metrics의 StatefulSet 측정항목입니다. StatefulSet 측정항목의 전체 목록을 참조하세요.
DaemonSet DAEMONSET kube-state-metrics의 DaemonSet 측정항목입니다. DaemonSet 측정항목의 전체 목록을 참조하세요.
HorizonalPodAutoscaler HPA kube-state-metrics의 HPA 측정항목입니다. HorizonalPodAutoscaler 측정항목의 전체 목록을 참조하세요.

또한 Google Cloud Managed Service for Prometheus를 사용해서 GKE 워크로드로 노출되는 Prometheus 스타일의 측정항목을 수집할 수 있습니다. 이렇게 하면 대규모 Prometheus 관리 및 운영을 수동으로 수행할 필요 없이 Prometheus를 사용해서 워크로드를 모니터링하고 알림을 표시할 수 있습니다.

기본적으로 사용 설정되는 로그 및 측정항목

Google Cloud에서 새 GKE 클러스터를 만들면 클러스터 생성 중에 일부 로그와 측정항목이 기본적으로 사용 설정됩니다.

  • 시스템 로그 및 측정항목은 모든 유형의 클러스터에 대해 사용 설정되며 중지될 수 없습니다.
  • 워크로드 로그는 모든 Autopilot 클러스터에서 기본적으로 사용 설정되지만 사용 중지할 수 있습니다. 지원 용이성에 영향을 미치므로 워크로드 로그는 사용 중지하지 않는 것이 좋습니다.
  • GKE Enterprise 버전 프로젝트의 경우 클러스터를 만드는 동안 Fleet에 등록하면 유용한 추가 로그 및 측정항목이 기본적으로 사용 설정됩니다. 클러스터가 생성된 후 이러한 로그 및 측정항목을 사용 설정하려면 클러스터 수정을 참조하세요.

다음 표에서 체크표시()는 GKE Enterprise가 사용 설정된 프로젝트에서 새 클러스터를 만들고 등록할 때 기본적으로 사용 설정되는 로그 및 측정항목을 나타냅니다.

로그

로그 이름 Autopilot Standard
시스템
Workloads -
API 서버
스케줄러
컨트롤러 관리자

제어 영역 로그(API 서버, 스케줄러, 컨트롤러 관리자)에는 Cloud Logging 요금이 부과됩니다.

측정항목

측정항목 이름 Autopilot Standard
시스템
API 서버
스케줄러
컨트롤러 관리자
영구 볼륨(스토리지)
포드
Deployment
StatefulState
DaemonSet
HorizonalPodAutoscaler

GKE Enterprise가 사용 설정된 프로젝트에 등록된 모든 클러스터는 추가 비용 없이 제어 영역 측정항목Kubernetes 상태 측정항목을 사용할 수 있습니다. 그렇지 않은 경우에는 이러한 측정항목에 Cloud Monitoring 요금이 부과됩니다.

클러스터 생성 중이나 클러스터 생성 후에 기본 로그 및 측정항목을 사용 중지할 수 있습니다.

새 클러스터의 모니터링 및 로깅 구성

이 섹션의 클러스터 만들기 안내에서는 Cloud Logging 및 Cloud Monitoring에 관련된 옵션만 다룹니다. GKE 클러스터 만들기에 대한 자세한 안내는 Standard 또는 Autopilot 클러스터 만들기 문서를 참조하세요.

GKE 클러스터를 만드는 동안 로깅 및 모니터링을 수동으로 구성하려면 다음 단계를 수행합니다.

콘솔

Autopilot 클러스터의 경우:

  1. Autopilot 클러스터 만들기 페이지의 탐색 창에서 고급 설정을 클릭합니다.

    Autopilot 클러스터 만들기

  2. 작업 목록에서 수집하려는 로그 및 측정항목을 선택합니다.

    • Cloud Logging의 구성요소 목록에서 로그를 수집할 구성요소를 선택합니다.

    • Cloud Monitoring의 구성요소 목록에서 측정항목을 수집할 구성요소를 선택합니다.

    GKE Autopilot 클러스터는 항상 Google의 원격 분석 수집 권장사항을 사용합니다. 즉, 시스템 및 워크로드 로깅이 항상 사용 설정되고 시스템 모니터링도 항상 사용 설정됩니다.

  3. 만들기를 클릭합니다.

표준 클러스터의 경우:

  1. Standard 클러스터 만들기 페이지의 탐색창에 있는 클러스터 아래에서 기능을 클릭합니다.

    Kubernetes 클러스터 만들기

  2. 작업 목록에서 수집하려는 로그 및 측정항목을 선택합니다.

    • Cloud Logging의 구성요소 목록에서 로그를 수집할 구성요소를 선택합니다.

    • Cloud Monitoring의 구성요소 목록에서 측정항목을 수집할 구성요소를 선택합니다.

    • Cloud Logging을 사용 중지하려면 (감사 로그 제외) Cloud Logging 사용 설정 체크박스를 선택 취소합니다.

    • Cloud Monitoring을 사용 중지하려면 Cloud Monitoring 사용 설정 체크박스를 선택 취소합니다.

    • Google Cloud Managed Service for Prometheus를 사용 중지하려면 Google Cloud Managed Service for Prometheus 사용 설정 체크박스를 해제합니다.

gcloud

  1. 새 클러스터의 경우 Cloud Logging 및 Cloud Monitoring이 기본적으로 사용 설정됩니다. 클러스터를 만들려면 다음 명령어를 실행합니다.

    gcloud container clusters create CLUSTER_NAME \
        --location=COMPUTE_LOCATION
    

    다음을 바꿉니다.

    1. 또는 create 명령어의 --logging 플래그에 쉼표로 구분된 값 목록을 전달하여 Cloud Logging에 전송되는 로그를 구성할 수 있습니다. 로그를 수집하지 않으려면 --logging=NONE을 전달합니다. 시스템, API 서버, 스케줄러, 컨트롤러 관리자 로그를 수집하려면 --logging=SYSTEM,API_SERVER,SCHEDULER,CONTROLLER_MANAGER를 전달합니다. 시스템 및 워크로드 로그를 모두 수집하려면 --logging=SYSTEM,WORKLOAD를 전달합니다. 예를 들면 다음과 같습니다.

      gcloud container clusters create CLUSTER_NAME \
          --location=COMPUTE_LOCATION \
          --logging=SYSTEM,WORKLOAD
      
    2. 마찬가지로 쉼표로 구분된 값 목록을 --monitoring 플래그에 전달하여 Cloud Monitoring에 전송되는 측정항목을 구성할 수 있습니다. 측정항목을 수집하지 않으려면 --monitoring=NONE을 전달합니다. 시스템 측정항목을 수집하려면 --monitoring=SYSTEM을 전달합니다. 모든 측정항목을 수집하려면 --monitoring=SYSTEM,API_SERVER,SCHEDULER,CONTROLLER_MANAGER,STORAGE,POD,DEPLOYMENT,STATEFULSET,DAEMONSET,HPA를 전달합니다. 예를 들면 다음과 같습니다.

      gcloud container clusters create CLUSTER_NAME \
          --location=COMPUTE_LOCATION \
          --monitoring=SYSTEM,API_SERVER,SCHEDULER,CONTROLLER_MANAGER,STORAGE,POD,DEPLOYMENT,STATEFULSET,DAEMONSET,HPA
      
    3. 개별적으로 --enable-managed-prometheus 플래그를 사용하여 Google Cloud Managed Service for Prometheus를 사용 설정할 수 있습니다. 예를 들면 다음과 같습니다.

      gcloud container clusters create CLUSTER_NAME \
          --location=COMPUTE_LOCATION \
          --enable-managed-prometheus
      

      --enable-managed-prometheus 플래그는 구성이 필요한 관리되는 수집기를 사용 설정합니다.

Terraform

  • Terraform을 사용하여 로그 및 측정항목 수집을 구성하려면 google_container_cluster용 Terraform 레지스트리에서 logging_configmonitoring_config 블록을 참조하세요. API 서버, 스케줄러, 컨트롤러 관리자에서 로그 수집을 사용 설정하려면 Terraform Google Cloud 제공업체 버전 4.44.0 이상이 필요합니다.

  • Terraform과 함께 Google Cloud를 사용하는 방법에 대한 일반적인 내용은 Google Cloud에서 Terraform을 참조하세요.

기존 클러스터에 대한 모니터링 및 로깅 구성

다음 섹션에서는 기존 GKE 클러스터에 대해 Cloud Logging 및 Cloud Monitoring 통합을 수정하는 방법을 자세히 설명합니다.

모니터링 및 로깅 지원을 변경하는 것과 클러스터의 Kubernetes 버전을 변경하는 것은 별개의 작업입니다. 클러스터의 Kubernetes 버전을 변경해도 구성된 모니터링 및 로깅 지원은 변경되지 않습니다.

클러스터에서 사용하는 모니터링 및 로깅 지원 기능은 무엇인가요?

클러스터의 Cloud Logging 및 Cloud Monitoring 통합 설정을 보려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔의 탐색 패널에서 Kubernetes Engine을 선택한 후 클러스터를 선택합니다.

    Kubernetes 클러스터로 이동

  2. 클러스터의 세부정보 패널에서 Cloud Logging, Cloud Monitoring, Google Cloud Managed Service for Prometheus 상태를 확인합니다.

클러스터 수정

기존 클러스터에 대해 Cloud Logging 및 Cloud Monitoring 통합 설정을 변경하려면 다음 단계를 따르세요.

콘솔

  1. Google Cloud 콘솔의 탐색 패널에서 Kubernetes Engine을 선택한 후 클러스터를 선택합니다.

    Kubernetes 클러스터로 이동

  2. 클러스터 이름을 클릭합니다.

  3. Cloud Logging에 전송된 로그, Cloud Monitoring에 전송된 측정항목, Google Cloud Managed Service for Prometheus가 사용 설정되었는지 여부를 수정하려면 Cloud Logging, Cloud Monitoring, Google Cloud Managed Service for Prometheus 옆에 있는 수정 을 클릭합니다.

  4. 저장을 클릭합니다.

gcloud

다음 gcloud 안내는 gcloud container clusters update 명령어를 사용하여 클러스터 모니터링 및 로깅 지원을 업그레이드하는 방법을 다룹니다. upgrade 명령어가 아닌 update 명령어를 사용합니다.

  • gcloud container clusters update 명령어의 --logging 플래그에 쉼표로 구분된 값 목록을 전달하여 Cloud Logging에 전송되는 로그를 구성합니다. 사용 가능한 로그 소스의 전체 목록을 참조하세요. 예를 들어 시스템 및 워크로드 로그를 모두 수집하려면 --logging=SYSTEM,WORKLOAD를 전달합니다. 시스템 로그만 수집하려면 --logging=SYSTEM을 전달합니다. 또는 로그를 수집하지 않으려면 --logging=NONE을 전달합니다.

    gcloud container clusters update CLUSTER_NAME \
        --location=COMPUTE_LOCATION \
        --logging=NONE
    
  • 쉼표로 구분된 값 목록을 gcloud container clusters update 명령어의 --monitoring 플래그에 전달하여 Cloud Monitoring에 전송되는 측정항목을 구성합니다. 사용 가능한 측정항목 소스의 전체 목록을 참조하세요. 예를 들어 시스템 측정항목을 수집하려면 --monitoring=SYSTEM을 전달합니다. 또는 측정항목을 수집하지 않으려면 --monitoring=NONE을 전달합니다.

    gcloud container clusters update CLUSTER_NAME \
        --location=COMPUTE_LOCATION \
        --monitoring=NONE
    
  • --enable-managed-prometheus 또는 --disable-managed-prometheus 플래그를 사용하여 Google Cloud Managed Service for Prometheus를 사용 설정할지 여부를 구성합니다. 예를 들면 다음과 같습니다.

    gcloud container clusters update CLUSTER_NAME \
        --location=COMPUTE_LOCATION \
        --enable-managed-prometheus
    

Terraform

  • Terraform을 사용하여 로그 및 측정항목 수집을 구성하려면 google_container_cluster용 Terraform 레지스트리에서 logging_configmonitoring_config 블록을 참조하세요. API 서버, 스케줄러, 컨트롤러 관리자에서 로그 수집을 사용 설정하려면 Terraform Google Cloud 제공업체 버전 4.44.0 이상이 필요합니다.

  • Terraform과 함께 Google Cloud를 사용하는 방법에 대한 일반적인 내용은 Google Cloud에서 Terraform을 참조하세요.

지원 중단된 구성 매개변수

이전에 예전 구성 매개변수를 사용하여 GKE 클러스터에 대해 로깅 및 모니터링 지원을 구성한 경우 해당 매개변수는 지원 중단되었습니다. 다음 표에서는 지원 중단된 플래그를 대체할 동일한 구성 매개변수를 보여줍니다.

기존 설정 기존 create 인수 기존 update 인수 새로운 createupdate 인수
사용 중지됨 --no-enable-stackdriver-kubernetes --no-enable-stackdriver-kubernetes --logging=NONE
--monitoring=NONE
시스템 모니터링만(로깅 사용 중지됨) --enable-stackdriver-kubernetes
--no-enable-cloud-logging
--logging-service=none
--monitoring-service=monitoring.googleapis.com/kubernetes
--logging=NONE
--monitoring=SYSTEM
시스템 및 워크로드 로깅만(모니터링 사용 중지됨) --enable-stackdriver-kubernetes
--no-enable-cloud-monitoring
--logging-service=logging.googleapis.com/kubernetes
--monitoring-service=none
--logging=SYSTEM,WORKLOAD
--monitoring=NONE
시스템 로깅 및 모니터링만(베타) --enable-logging-monitoring-system-only --enable-logging-monitoring-system-only --logging=SYSTEM
--monitoring=SYSTEM
시스템/워크로드 로깅 및 모니터링 --enable-stackdriver-kubernetes --enable-stackdriver-kubernetes --logging=SYSTEM,WORKLOAD
--monitoring=SYSTEM

다음 단계

  • Cloud Logging, Cloud Monitoring, Google Cloud Managed Service for Prometheus에 대한 자세한 내용은 가격 책정 페이지를 참조하세요.