GKE 로그 보기


이 페이지에서는 Google Kubernetes Engine(GKE) 로그를 찾고 사용하는 방법을 간략하게 설명합니다.

로그 액세스

다양한 방법으로 GKE 로그에 액세스할 수 있습니다.

  • Google Cloud 콘솔에서 다음 페이지의 로그를 볼 수 있습니다.

    • Kubernetes Engine:

      • 클러스터 페이지에서 클러스터를 선택한 후 로그 탭을 선택합니다. 이 탭에서는 클러스터 로그에 대해 권장되는 쿼리를 제공합니다.
      • 워크로드 페이지에서 워크로드를 선택합니다. 그런 후 개요 탭에서 컨테이너 로그 또는 감사 로그 링크를 클릭하여 로그 탐색기에서 로그를 보거나 로그 탭을 선택하여 상황에 맞게 로그를 볼 수 있습니다.
    • Logging: 로그 탐색기를 선택한 후 로깅 필터를 사용하여 클러스터, 노드, 네임스페이스, 포드, 컨테이너 로그와 같은 Kubernetes 리소스를 선택합니다. 시작하는 데 도움이 되는 예시 쿼리는 Kubernetes 관련 쿼리를 참조하세요.

    • Monitoring: GKE 대시보드에는 클러스터, 노드, 포드와 같은 GKE 리소스의 측정항목과 로그가 표시됩니다. 자세한 내용은 관측 가능성 측정항목 보기를 참조하세요.
  • Google Cloud CLI에서: gcloud logging read 명령어를 사용하여 클러스터, 노드, 포드, 컨테이너에서 로그를 쿼리합니다.

커스텀 로그 집계, 로그 분석 또는 서드 파티 시스템과의 통합을 위해 로깅 싱크 기능을 사용하여 BigQuery, Cloud Storage, Pub/Sub에 로그를 내보낼 수도 있습니다.

로그 이해

Cloud Logging의 로그는 로그 항목의 모음이며 각 로그 항목은 특정 유형의 로깅 리소스에 적용됩니다.

리소스 유형

다음은 GKE 클러스터와 관련된 리소스 유형입니다.

리소스 유형 표시 이름
k8s_cluster Kubernetes 클러스터 로그
k8s_node GKE 노드 풀 로그
k8s_pod GKE pod 로그
k8s_container GKE 컨테이너 로그
k8s_control_plane_component Kubernetes 제어 영역 구성요소

GKE가 클러스터의 로그를 작성할 때 각 로그 항목에 리소스 유형이 포함됩니다. 로그가 어디에 나타나는지 이해하면 필요할 때 로그를 쉽게 찾을 수 있습니다.

시스템 로그

시스템 로그에는 다음 소스의 로그가 포함됩니다.

  • 네임스페이스 kube-system, istio-system, knative-serving, gke-system, config-management-system에서 실행되는 모든 포드

  • docker/containerd 런타임, kubelet, kubelet-monitor, node-problem-detector, kube-container-runtime-monitor 등 컨테이너화되지 않은 키 서비스

  • VM 인스턴스 메타데이터 serial-port-logging-enable이 true로 설정된 경우 노드의 직렬 포트 출력 GKE 1.16-13-gke.400부터 노드의 직렬 포트 출력이 Logging 에이전트에 의해 수집됩니다. 직렬 포트 출력 로깅을 사용 중지하려면 클러스터 생성 시 --metadata serial-port-logging-enable=false를 설정합니다. 직렬 포트 출력은 GKE 노드의 비정상 종료, 부팅 실패, 시작 문제, 종료 문제 해결에 유용합니다. 이러한 로그를 사용 중지하면 문제 해결이 제한될 수 있습니다.

시스템 로그는 다음 리소스 유형에 대해 캡처됩니다.

  • k8s_cluster를 사용하는 클러스터 로그

  • k8s_node를 사용하는 노드 로그

  • k8s_pod를 사용하는 pod

  • k8s_container가 있는 시스템 앱

Cloud Logging에 다음 이름을 가진 시스템 감사 로그가 표시됩니다.

  • projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access – 데이터 액세스 로그

  • projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity – 관리자 활동 로그

  • projects/PROJECT_ID/logs/events – 이벤트 로그

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

애플리케이션 로그 수집 제어에 설명된 kube-system의 기록된 로그와 같은 추가 시스템 로그가 있습니다.

애플리케이션 로그

Kubernetes 컨테이너는 STDOUTSTDERR에 작성된 워크로드의 로그를 수집합니다. k8s_container 또는 gke_cluster 리소스 유형을 사용하여 워크로드 애플리케이션 로그를 찾을 수 있습니다. Logging에 다음 이름으로 로그가 표시됩니다.

  • projects/PROJECT_ID/logs/stderr – 표준 오류에 기록된 로그

  • projects/PROJECT_ID/logs/stdout – 표준 출력에 기록된 로그

제어 영역 로그

GKE 클러스터에 제어 영역 로그가 사용 설정된 경우 특정 Kubernetes 제어 영역 구성요소(예: API 서버, 스케줄러, 컨트롤러 관리자)에서 발생한 로그를 Cloud Logging으로 내보냅니다.

이러한 로그는 k8s_control_plane_component 리소스 유형을 사용하며 Cloud Logging에 다음 이름으로 표시됩니다.

  • projects/PROJECT_ID/logs/container.googleapis.com%2Fapiserver

  • projects/PROJECT_ID/logs/container.googleapis.com%2Fscheduler

  • projects/PROJECT_ID/logs/container.googleapis.com%2Fcontroller-manager

Logging 사용자 인터페이스에서 로그 찾기

Logging 사용자 인터페이스의 로그 탐색기를 사용하여 로그를 볼 수 있습니다.

로그 탐색기

쿼리 빌더를 사용하면 드롭다운에서 필드를 선택하거나 쿼리 매개변수를 직접 추가하여 쿼리를 작성할 수 있습니다. 예를 들어 GKE 클러스터의 로그를 검토하는 경우 Kubernetes 클러스터 리소스 선택 또는 검색을 시작한 후 위치 및 클러스터 이름을 선택할 수 있습니다. 그런 다음 로그 이름 선택기에서 활동 로그를 선택하여 상세 검색을 수행할 수 있습니다.

로그 탐색기는 로그 필드 탐색기를 사용하여 검색 쿼리를 작성할 수 있는 추가적인 방법을 제공합니다. 해당 로그 필드의 로그 항목 수를 내림차순으로 정렬하여 보여줍니다. 로그 필드 탐색기는 GKE 로그의 경우 특히 GKE 로그에 유용합니다. 로그 필드 탐색기를 사용하면 리소스의 Kubernetes 값을 선택하여 쿼리를 작성할 수 있기 때문입니다. 예를 들어 로그 필드 탐색기를 사용하여 특정 클러스터, 네임스페이스, 포드 이름, 컨테이너 이름의 로그를 선택할 수 있습니다.

Logging 문서에서 로그 탐색기 사용에 대한 자세한 내용을 확인할 수 있습니다.

샘플 쿼리

특정 로그를 찾는 경우 다음 샘플 쿼리를 통해 GKE 로그를 쉽게 찾을 수 있습니다.

로그 문제 해결

GKE 클러스터에서 대량의 로그를 작성하는 경우 이러한 많은 로그가 Cloud Logging에서 일관되게 표시되지 않는 것을 확인할 수 있습니다. 이것은 로깅 볼륨이 GKE에서 지원되는 로깅 처리량을 초과하기 때문일 수 있습니다.

Logging은 노드당 최대 100KB/s의 로깅 처리량을 지원합니다. GKE 클러스터의 노드에 이보다 많은 로깅 처리량이 필요한 경우 로깅 에이전트 처리량을 늘리는 것이 좋습니다.