Stackdriver Logging

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

개요

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

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

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

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

GKE는 자체적으로 로그를 저장하지만 이러한 로그는 영구적으로 저장되지 않습니다. 예를 들어 GKE 컨테이너 로그는 호스트 포드가 제거될 때, 로그가 저장된 디스크 공간이 부족할 때 또는 로그가 새 로그로 교체될 때 제거됩니다. 시스템 로그는 새 로그 공간을 확보하기 위해 주기적으로 제거됩니다. 클러스터 이벤트는 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 플래그를 설정하세요.

콘솔

  1. GCP Console에서 Kubernetes Engine 메뉴로 이동합니다.

    Kubernetes Engine 메뉴로 이동

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

  3. 원하는 대로 클러스터를 구성합니다.

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

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

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

gcloud

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

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

콘솔

  1. GCP Console에서 Kubernetes Engine 메뉴로 이동합니다.

    Kubernetes Engine 메뉴로 이동

  2. 클러스터의 수정 버튼(연필 모양)을 클릭합니다.

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

  4. 저장을 클릭합니다.

로그 보기

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

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

쿼리 예

nginx-deployment 라벨이 지정된 포드에서 로그 쿼리

resource.type="container"
resource.labels.pod_id:"nginx-deployment-"

prod 네임스페이스에 있는 심각도 WARNING 이상의 로그 쿼리

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

특정 포드 my-pod의 특정 컨테이너 my-container에서 텍스트 페이로드가 있는 로그 쿼리

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

제한사항

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

권장사항

  • 구조화된 로깅: 표준 출력이나 표준 오류에 쓰인 한 줄짜리 JSON 문자열은 구조화된 로그 항목으로 Stackdriver에 읽힙니다. 자세한 내용은 구조화된 로깅을 참조하세요. 고급 로그 필터를 사용하여 필드를 기반으로 로그를 필터링할 수 있습니다.
  • 심각도: 기본적으로 표준 출력에 쓰이는 로그는 INFO 수준이고, 표준 오류에 쓰이는 로그는 ERROR 수준입니다. 구조화된 로그에는 로그의 심각도를 정의하는 severity 필드가 포함될 수 있습니다.
  • BigQuery로 내보내기: 추가 분석을 위해 BigQuery 또는 Cloud Pub/Sub 같은 외부 서비스로 로그를 내보낼 수 있습니다. BigQuery로 내보낸 로그는 형식과 구조를 유지합니다. 자세한 내용은 로그 내보내기 개요를 참조하세요.
  • 알림: 로그 기반 측정항목을 사용하여 Logging에서 예상치 못한 동작을 로깅할 때 알림 정책을 설정할 수 있습니다. 예는 카운터 측정항목에 관한 간단한 알림 정책 만들기를 참조하세요. 로그 기반 측정항목에 대한 자세한 내용은 로그 기반 측정항목 개요를 참조하세요.
  • 오류 보고: Stackdriver Error Reporting을 사용하여 클러스터에서 발생한 오류를 수집할 수 있습니다.

Logging 사용 중지

gcloud

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

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

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

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

Console

  1. GCP Console에서 Kubernetes Engine 메뉴로 이동합니다.

    Kubernetes Engine 메뉴로 이동

  2. 변경하려는 클러스터의 수정 버튼(연필 모양)을 클릭합니다.

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

  4. 저장을 클릭합니다.

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Stackdriver Monitoring
도움이 필요하시나요? 지원 페이지를 방문하세요.