로깅

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

개요

Stackdriver Logging을 사용 설정하여 GKE가 전용 영구 데이터 저장소에서 컨테이너 및 시스템 로그를 자동으로 수집, 처리, 저장하도록 할 수 있습니다. 컨테이너 로그는 컨테이너에서 수집됩니다. 시스템 로그dockerkubelet 같은 클러스터 구성요소에서 수집됩니다. 이벤트는 포드 예약과 같은 클러스터 내 활동에 대한 로그입니다.

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

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

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

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

Stackdriver 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

Stackdriver Logging 사용 설정

다음 섹션에서는 Stackdriver Logging을 사용 설정하는 방법을 설명합니다.

로깅이 사용 설정된 클러스터 만들기

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

gcloud

클러스터 생성--enable-cloud-logging 플래그가 자동으로 설정되어 클러스터에서 Stackdriver Logging을 사용 설정합니다.

이 기본 동작을 사용 중지하려면 --no-enable-cloud-logging 플래그를 설정하세요.

콘솔

  1. GCP 콘솔에서 Google Kubernetes Engine 메뉴로 이동합니다.

    Google Kubernetes Engine 메뉴로 이동

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

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

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

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

기존 클러스터에 로깅 사용 설정

gcloud

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

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

콘솔

  1. GCP 콘솔에서 Google Kubernetes Engine 메뉴로 이동합니다.

    Google Kubernetes Engine 메뉴로 이동

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

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

  4. 저장을 클릭합니다.

로그 보기

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

기본 및 고급 쿼리 구성 방법을 포함하여 로그 보기에 대한 자세한 내용은 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 또는 Pub/Sub 같은 외부 서비스로 로그를 내보낼 수 있습니다. BigQuery로 내보낸 로그는 형식과 구조를 유지합니다.
  • 알림: 로그 기반 측정항목을 사용하여 Stackdriver Logging에서 예상치 못한 동작을 로깅할 때 알림 정책을 설정할 수 있습니다.
  • Error Reporting: Stackdriver Error Reporting을 사용하여 클러스터에서 생성된 오류를 수집할 수 있습니다.

로깅 사용 중지

gcloud

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

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

콘솔

  1. GCP 콘솔에서 Google Kubernetes Engine 메뉴로 이동합니다.

    Google Kubernetes Engine 메뉴로 이동

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

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

  4. 저장을 클릭합니다.

다음 단계

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

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

Kubernetes Engine