Cloud Logging

이 페이지에서는 Cloud Logging을 사용하여 Google Kubernetes Engine(GKE) 클러스터에서 로그를 수집하고 쿼리하는 방법을 설명합니다.

개요

Logging이 클러스터에서 사용 설정되면 로그가 전용 영구 데이터스토어에 저장됩니다. Google Cloud 프로젝트에는 GKE 클러스터와 관련된 몇 가지 로그가 있습니다. 여기에는 관리자 활동 로그, 데이터 액세스 로그, 이벤트 로그가 포함됩니다.

로그는 로그 항목의 모음이고 각 로그 항목은 특정 유형의 리소스에 적용됩니다. 다음은 GKE 클러스터와 가장 관련성이 높은 리소스 유형입니다.

리소스 유형 표시 이름
k8s_cluster Kubernetes 클러스터
gke_cluster GKE 클러스터 작업
gke_container GKE 컨테이너
gke_nodepool GKE 노드 풀 작업

Kubernetes 클러스터 및 GKE 클러스터 작업 리소스 유형에 적용되는 로그 항목에 대한 자세한 내용은 감사 로깅을 참조하세요.

GKE는 자체적으로 로그를 저장하지만 이러한 로그는 영구적으로 저장되지 않습니다. 예를 들어 GKE 컨테이너 로그는 호스트 pod가 제거될 때, 로그가 저장된 디스크 공간이 부족할 때 또는 로그가 새 로그로 교체될 때 제거됩니다. 시스템 로그는 새 로그 공간을 확보하기 위해 주기적으로 제거됩니다. 클러스터 이벤트는 1시간 후에 제거됩니다.

컨테이너 로그와 시스템 로그의 경우, GKE는 컨테이너 로그를 읽고 유용한 메타데이터를 추가한 다음 저장하는 노드별 로깅 에이전트를 배포합니다. 로깅 에이전트는 다음 소스에서 컨테이너 로그를 확인합니다.

  • 컨테이너식 프로세스의 표준 출력 및 표준 오류 로그
  • kubelet 및 컨테이너 런타임 로그
  • VM 시작 스크립트 등 시스템 구성요소의 로그

이벤트의 경우 GKE는 이벤트를 자동으로 수집해 Logging으로 전송하는 kube-system 네임스페이스의 배포를 사용합니다.

Logging은 JSON 형식과 호환됩니다. 로그는 최대 30일 동안 저장됩니다.

시작하기 전에

이 작업을 준비하려면 다음 단계를 완료하세요.

  • Google Kubernetes Engine API가 사용 설정되었는지 확인합니다.
  • Google Kubernetes Engine API 사용 설정
  • Cloud SDK가 설치되었는지 확인합니다.
  • 기본 프로젝트 ID를 설정합니다.
    gcloud config set project [PROJECT_ID]
  • 영역 클러스터를 사용하는 경우 기본 컴퓨팅 영역을 설정합니다.
    gcloud config set compute/zone [COMPUTE_ZONE]
  • 리전 클러스터를 사용하는 경우 기본 컴퓨팅 리전을 설정합니다.
    gcloud config set compute/region [COMPUTE_REGION]
  • gcloud를 최신 버전으로 업데이트합니다.
    gcloud components update

Logging 사용 설정

Logging이 사용 설정된 클러스터를 만들거나 기존 클러스터에서 Logging을 사용 설정할 수 있습니다.

Logging이 포함된 클러스터 만들기

gcloud

클러스터를 만들 때 --enable-cloud-logging 플래그가 자동으로 설정되어 클러스터에서 Logging이 사용 설정됩니다.

이 기본 행동을 중지하려면 --no-enable-cloud-logging 플래그를 설정합니다.

Console

  1. Cloud Console에서 Kubernetes Engine > Kubernetes 클러스터 페이지로 이동합니다.

    Kubernetes 클러스터로 이동

  2. 클러스터 만들기를 클릭합니다.

  3. 필요에 따라 클러스터를 구성합니다.

  4. 고급 옵션을 클릭합니다. 추가 기능 섹션에서 Stackdriver Logging 서비스 사용을 사용 설정합니다.

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

기존 클러스터에 Logging 사용 설정

gcloud

기존 클러스터에 Logging을 사용 설정하려면 다음 명령어를 실행하세요. 여기서 [CLUSTER_NAME]은 클러스터의 이름입니다.

gcloud container clusters update [CLUSTER_NAME] --logging-service logging.googleapis.com

Console

  1. Cloud Console에서 Kubernetes Engine > Kubernetes 클러스터 페이지로 이동합니다.

    Kubernetes 클러스터로 이동

  2. 수정을 클릭합니다.

  3. Stackdriver Logging 드롭다운 값을 사용으로 설정합니다.

  4. 저장을 클릭합니다.

로그 보기

Google Cloud Console의 Stackdriver 로그 뷰어에서 로그를 볼 수 있습니다.

기본 및 고급 쿼리 구성 방법을 비롯하여 로그 보기에 대한 자세한 내용은 Logging 문서에서 로그 보기를 참조하세요.

쿼리 예시

  • nginx-deployment 레이블이 지정된 pod에서 로그를 쿼리합니다.

    resource.type="container"
    resource.labels.pod_id:"nginx-deployment-"
  • 심각도가 WARNING 이상인 prod 네임스페이스에서 로그를 쿼리합니다.

    resource.type="container"
    resource.labels.namespace_id="prod"
    severity>WARNING

    심각도 수준에 대한 자세한 내용은 Log Severity를 참조하세요.

  • 특정 pod my-pod의 특정 컨테이너 my-container에서 텍스트 페이로드가 있는 로그를 쿼리합니다.

    resource.type="container"
    resource.labels.container_name="my_container"
    resource.labels.pod_id="my_pod"
    textPayload:"abracadabra"

제한사항

여러 줄 항목(줄 바꿈이 있는 항목)은 올바르게 처리되지 않을 수 있습니다. 이 문제를 방지하려면 로그를 한 줄짜리 JSON 문자열로 래핑하세요.

로깅 사용 중지

gcloud

기존 클러스터에 기존 Logging 및 Monitoring을 사용하지 않으려면 다음 명령어를 실행합니다. 여기서 [CLUSTER_NAME]은 클러스터의 이름입니다.

gcloud beta container clusters update [CLUSTER_NAME] --logging-service none

클러스터에서 Kubernetes Engine Operations를 실행하는 경우 클러스터에서 gcloud beta로 다음 플래그를 설정하여 모니터링과 로깅을 사용 중지해야 합니다.

gcloud beta container clusters update [CLUSTER_NAME] --logging-service none --monitoring-service none

Console

  1. Cloud Console에서 Kubernetes Engine > Kubernetes 클러스터 페이지로 이동합니다.

    Kubernetes 클러스터로 이동

  2. 변경하려는 클러스터에서 수정을 클릭합니다.

  3. Stackdriver Logging 드롭다운의 값을 사용 안함으로 설정합니다.

  4. 저장을 클릭합니다.

다음 단계