로깅 및 모니터링

GKE On-Prem에는 클라우드 기반 관리형 서비스, 오픈소스 도구, 타사 상업용 솔루션과의 검증된 호환성을 비롯한 여러 가지 클러스터 로깅 및 모니터링 옵션이 포함되어 있습니다. 이 페이지에서는 이러한 옵션에 대해 설명하고 사용자 환경에 적합한 솔루션을 선택하는 방법에 대한 기본 안내를 제공합니다.

GKE On-Prem 옵션

GKE On-Prem 클러스터에 대한 여러 로깅 및 모니터링 옵션이 있습니다.

  • Cloud Logging 및 Cloud Monitoring. GKE On-Prem을 사용하여 배포된 클러스터 내 에이전트로 사용 설정합니다.
  • Prometheus 및 Grafana(기본적으로 사용 중지됨)
  • 타사 솔루션을 사용한 검증된 구성

Cloud Logging 및 Cloud Monitoring

Google Cloud 운영 제품군은 Google Cloud에 기본 제공되는 관측 솔루션입니다. 완전 관리형 로깅 솔루션, 측정항목 수집, 모니터링, 대시보드, 알림을 제공합니다. Cloud Monitoring은 클라우드 기반 GKE 클러스터와 유사한 방식으로 GKE On-Prem 클러스터를 모니터링합니다.

클러스터 내 에이전트는 모니터링 및 로깅 범위와 수집된 측정항목 수준으로 구성할 수 있습니다.

  • 로깅 및 모니터링의 범위는 시스템 구성요소로만(기본값) 또는 시스템 구성요소와 애플리케이션에만 설정할 수 있습니다.
  • 수집된 측정항목 수준은 최적화된 측정항목 집합 또는 전체 측정항목에 대해 구성될 수 있습니다.

자세한 내용은 이 페이지의 VMware용 Anthos 클러스터에 대한 Stackdriver 에이전트 구성을 참조하세요.

Logging 및 Monitoring은 구성하기 쉽고 강력한 클라우드 기반의 단일 관측 솔루션을 원하는 고객에게 이상적입니다. GKE On-Prem에서만 워크로드를 실행하거나 GKE 및 GKE On-Prem에서 워크로드를 실행할 때 Logging 및 Monitoring을 사용하는 것이 좋습니다. GKE On-Prem 및 기존 온프레미스 인프라에서 실행되는 구성요소가 있는 애플리케이션의 경우 이러한 애플리케이션을 포괄적으로 볼 수 있는 다른 솔루션을 고려할 수 있습니다.

Prometheus 및 Grafana

Prometheus와 Grafana는 인기 있는 오픈소스 모니터링 제품 중 하나입니다.

  • Prometheus는 애플리케이션 및 시스템 측정항목을 수집합니다.

  • Alertmanager는 여러 알림 메커니즘을 사용하여 알림 전송을 처리합니다.

  • Grafana는 대시보드 도구입니다.

각 관리자 클러스터와 사용자 클러스터에서 Prometheus 및 Grafana를 사용 설정할 수 있습니다. Prometheus와 Grafana는 해당 제품에 대한 사전 경험이 있는 애플리케이션 팀에 권장하거나 클러스터 내에서 애플리케이션 측정항목을 유지하고 네트워크 연결이 끊어진 경우 문제를 해결하는 용도로 권장합니다.

타사 솔루션

Google은 타사 로깅 및 모니터링 솔루션 제공업체와 협력을 통해 해당 업체 제품이 GKE On-Prem에서 잘 작동할 수 있도록 지원합니다. 여기에는 Datadog, Elastic, Splunk가 포함됩니다. 이후에도 다른 검증된 타사 제공업체가 추가될 예정입니다.

다음 솔루션 가이드는 GKE On-Prem에서 타사 솔루션을 사용할 때 사용할 수 있습니다.

GKE On-Prem의 Logging 및 Monitoring 작동 방식

새 관리자 클러스터 또는 사용자 클러스터를 만들 때 각 클러스터에 로깅 및 측정항목 에이전트가 설치되고 활성화됩니다.

Stackdriver 에이전트에는 각 클러스터에 다음과 같은 여러 구성요소가 포함됩니다.

  • Stackdriver 연산자(stackdriver-operator-*). 클러스터에 배포되는 다른 모든 Stackdriver 에이전트의 수명 주기를 관리합니다.

  • Stackdriver 커스텀 리소스. GKE On-Prem 설치 프로세스 중 자동으로 생성되는 리소스입니다. 사용자가 언제든지 커스텀 리소스를 변경하여 프로젝트 ID, 클러스터 이름, 클러스터 위치와 같은 값을 업데이트할 수 있습니다.

  • Stackdriver 로그 애그리게이터(stackdriver-log-aggregator-*). Cloud Logging API에 로그를 전송하는 Fluentd StatefulSet입니다. 로그를 보낼 수 없는 경우 로그 애그리게이터가 로그 항목을 최대 200GB까지 버퍼링하고 최대 24시간 동안 재전송을 시도합니다. 버퍼가 가득 차거나 로그 애그리케이터가 Logging API에 24시간 넘도록 도달하지 못하는 경우 로그가 삭제됩니다.

  • Stackdriver 로그 전달자(stackdriver-log-forwarder-*). 각 머신의 로그를 Stackdriver 로그 애그리게이터로 전달하는 Fluentbit daemonset입니다.

  • Stackdriver 측정항목 수집기(stackdriver-prometheus-k8s-). Prometheus 측정항목을 Cloud Logging API로 전송하는 Prometheus 및 Stackdriver Prometheus 사이드카 StatefulSet입니다.

  • Stackdriver 메타데이터 수집기(stackdriver-metadata-agent-). Pod, 배포, 노드 등의 Kubernetes 리소스에 대한 메타데이터를 Stackdriver Resource Metadata API에 보내는 배포를 나타냅니다. 이 데이터는 배포 이름, 노드 이름 또는 Kubernetes 서비스 이름으로 쿼리할 수 있도록 하여 측정항목 쿼리를 강화하는 데 사용됩니다.

다음 명령어를 실행하여 Stackdriver가 설치한 모든 에이전트를 볼 수 있습니다.

  kubectl -n kube-system get pods | grep stackdriver

이 명령어 결과는 다음과 비슷합니다.

stackdriver-log-aggregator-0                  1/1     Running   0   4h31m
stackdriver-log-aggregator-1                  1/1     Running   0   4h28m
stackdriver-log-forwarder-bpf8g               1/1     Running   0   4h31m
stackdriver-log-forwarder-cht4m               1/1     Running   0   4h31m
stackdriver-log-forwarder-fth5s               1/1     Running   0   4h31m
stackdriver-log-forwarder-kw4j2               1/1     Running   0   4h29m
stackdriver-metadata-agent-cluster-level...   1/1     Running   0   4h31m
stackdriver-operator-76ddb64d57-4tcj9         1/1     Running   0   4h37m
stackdriver-prometheus-k8s-0                  2/2     Running   0   4h31m

GKE On-Prem용 Stackdriver 에이전트 구성

GKE On-Prem과 함께 설치된 Stackdriver 에이전트는 GKE On-Prem 클러스터의 문제를 유지관리하고 문제를 해결하기 위해 설정 및 구성에 따라 시스템 구성요소에 대한 데이터를 수집합니다.

시스템 구성요소만(기본 범위)

설치 시 Stackdriver 에이전트는 기본적으로 Google에서 제공하는 시스템 구성요소의 성능 세부정보(예: CPU 및 메모리 사용률) 및 유사한 메타데이터 등 로그 및 측정항목을 수집합니다. 여기에는 관리자 클러스터의 모든 워크로드가 포함되고, 사용자 클러스터의 메타데이터에는 kube-system, gke-system, gke-connect, istio-system, config-management-system 네임스페이스의 워크로드가 포함됩니다. 다음 섹션의 설명에 따라 Stackdriver 에이전트를 구성하거나 중지할 수 있습니다.

수집되는 로그 및 측정항목 범위를 확장하여 애플리케이션을 포함할 수도 있습니다. 애플리케이션 로깅 및 모니터링을 사용 설정하는 방법은 사용자 애플리케이션에 Logging 및 Monitoring 사용 설정을 참조하세요.

최적화된 측정항목(기본 측정항목)

기본적으로 클러스터에서 실행되는 측정항목 에이전트는 최적화된 컨테이너 및 kubelet 측정항목 집합을 수집하고 Google Cloud 운영 제품군(이전 명칭: Stackdriver)에 보고합니다. 이 최적화 측정항목 집합을 수집하는 데 필요한 리소스가 줄어들어 전반적인 성능과 확장성이 향상됩니다. 이는 모니터링할 객체 수가 많으므로 컨테이너 수준 측정항목에 특히 중요합니다.

최적화된 측정항목을 사용 중지하려면(권장하지 않음) Stackdriver 커스텀 리소스에서 optimizedMetrics 필드를 false로 설정합니다. Stackdriver 커스텀 리소스 변경에 대한 자세한 내용은 Stackdriver 구성요소 리소스 구성을 참조하세요. 기본적으로 제외된 측정항목을 비롯한 모든 측정항목은 Anthos 측정항목에 설명되어 있습니다.

Stackdriver 사용 중지

Stackdriver 커스텀 리소스를 삭제하여 Stackdriver 에이전트를 완전히 사용 중지할 수 있습니다. Stackdriver를 사용 중지하기 전에, 사용 중지가 Google Cloud 지원 SLA에 미치는 영향에 대한 자세한 내용을 지원 페이지에서 확인하세요.

GKE On-Prem에 대해 Stackdriver를 사용 중지하려면 다음 안내를 따르세요.

kubectl -n kube-system delete stackdriver stackdriver

Stackdriver 에이전트는 스토리지 및 보관 구성에 따라 로컬에서 저장한 데이터를 캡처합니다. 프로젝트에 데이터를 쓸 수 있는 서비스 계정을 사용하여 설치 시 지정된 Google Cloud 프로젝트에 데이터를 복제합니다. 앞서 설명한 것처럼 Stackdriver 에이전트는 언제든지 사용 중지할 수 있습니다. Stackdriver 에이전트가 수집하는 데이터는 Cloud Monitoring 문서에 설명된 대로 다른 측정항목 및 로그 데이터처럼 관리 및 삭제할 수 있습니다.

Logging 및 Monitoring을 위한 구성 요구사항

클러스터에서 Logging 및 Monitoring을 사용하려면 로그와 측정항목을 보려는 Google Cloud 프로젝트를 구성해야 합니다. 이 Google Cloud 프로젝트를 로깅 모니터링 프로젝트라고 합니다.

  1. 로깅 모니터링 프로젝트에서 다음 API를 사용 설정합니다.

  2. 로깅 모니터링 프로젝트의 로깅 모니터링 서비스 계정에 다음 IAM 역할을 부여합니다.

    • logging.logWriter
    • monitoring.metricWriter
    • stackdriver.resourceMetadata.writer
    • monitoring.dashboardEditor

가격 책정

Anthos 시스템 로그 및 측정항목에는 요금이 부과되지 않습니다.

GKE On-Prem 클러스터에서 Anthos 시스템 로그 및 측정항목에는 다음이 포함됩니다.

  • 관리자 클러스터에 있는 모든 구성요소의 로그 및 측정항목
  • 사용자 클러스터의 다음 네임스페이스에 있는 구성요소의 로그 및 측정항목: kube-system, gke-system, gke-connect, knative-serving, istio-system, monitoring-system, config-management-system, gatekeeper-system, cnrm-system

자세한 내용은 Google Cloud 운영 제품군 가격 책정을 참조하세요.

Cloud Logging 측정항목의 크레딧에 대한 자세한 내용은 영업팀에 가격 책정을 문의하세요.

GKE On-Prem용 Prometheus와 Grafana의 작동 방식

각 GKE On-Prem 클러스터는 기본적으로 Prometheus 및 Grafana가 사용 중지된 상태로 생성됩니다. 설치 가이드에 따라 이를 사용 설정할 수 있습니다.

Prometheus 서버는 두 개의 복제본이 별도의 두 노드에서 실행되는 고가용성 구성으로 설정됩니다. 최대 5개의 노드를 실행하는 클러스터를 지원하고 각 클러스터에서 커스텀 측정항목을 제공하는 최대 30개의 포드를 처리하도록 리소스 요구사항을 조정합니다. Prometheus에는 보관 기간 4일 동안 데이터에 맞게 사전 할당된 전용 PersistentVolume과 추가된 안전 버퍼가 있습니다.

관리자 제어 영역과 각 사용자 클러스터에는 독립적으로 구성할 수 있는 전용 모니터링 스택이 있습니다. 각 관리자 클러스터와 사용자 클러스터에는 모니터링용 Prometheus 서버, 관측용 Grafana, 알림용 Prometheus Alertmanager가 들어 있는 모니터링 스택이 포함되어 있습니다.

모든 모니터링 엔드포인트, 전송된 측정항목 데이터, 모니터링 API는 mTLS 및 RBAC 규칙을 사용하여 Istio 구성요소로 보호됩니다. 모니터링 데이터에 대한 액세스 권한은 클러스터 관리자로 제한됩니다.

Prometheus에서 수집한 측정항목

Prometheus는 관리자 제어 영역과 사용자 클러스터에서 다음과 같은 측정항목과 메타데이터를 수집합니다.

  • 리소스 사용량(예: 포드 및 노드의 CPU 사용률)
  • Kubernetes 제어 영역 측정항목
  • 노드에서 실행되는 부가기능 및 Kubernetes 시스템 구성요소의 측정항목(예: kubelet)
  • 클러스터 상태(예: 배포의 포드 상태)
  • 애플리케이션 측정항목
  • 머신 측정항목(예: 네트워크, 엔트로피, inode)

멀티 클러스터 모니터링

관리자 클러스터에 설치된 Prometheus 및 Grafana 인스턴스는 관리자 클러스터 및 각 사용자 클러스터를 포함한 전체 GKE On-Prem 인스턴스에 대한 통계를 제공하도록 특별히 구성됩니다. 이를 통해 다음과 같은 작업이 가능합니다.

  • Grafana 대시보드를 사용하여 모든 사용자 클러스터 및 관리자 클러스터의 측정항목에 액세스할 수 있습니다.
  • Grafana 대시보드에서 개별 사용자 클러스터의 측정항목을 볼 수 있습니다. 측정항목은 전 해상도로 직접 쿼리에 사용할 수 있습니다.
  • 집계된 쿼리, 대시보드, 알림에 대한 사용자 클러스터의 노드 수준 및 워크로드 측정항목에 액세스할 수 있습니다(워크로드 측정항목은 kube-system 네임스페이스에서 실행되는 워크로드로 제한됨).
  • 특정 클러스터에 대한 알림을 구성할 수 있습니다.

다음 단계