Cloud Logging

이 문서에서는 Azure용 GKE가 Cloud Logging과 통합되는 방법과 로그에 액세스하는 방법을 설명합니다.

개요

Azure용 GKE는 워크로드 및 제어 영역과 노드 풀 노드에서 실행되는 시스템 구성요소에 Cloud Logging을 지원합니다.

Azure용 GKE에는 Fluentbit 기반 Logging 에이전트가 포함되어 있습니다. 제어 영역 노드에서 로깅 에이전트는 시스템 구성요소로 실행되고 노드 풀 노드에서는 Daemonset로 실행됩니다. Logging 에이전트가 수집한 데이터는 Cloud Logging 문서의 설명대로 다른 측정항목 및 로그 데이터처럼 관리 및 삭제할 수 있습니다.

수집되는 데이터

Azure용 GKE는 다음 정보를 로깅합니다.

  • 각 제어 영역 복제본의 시스템 구성요소 로그
  • 각 노드 풀 노드에 있는 시스템 서비스의 로그
  • 워크로드 로그(선택사항)

워크로드 로깅 사용 설정

워크로드 로깅을 사용 설정하려면 버전 1.22 이상의 새 Kubernetes 클러스터를 만들어야 합니다.

기본적으로 클러스터를 만들면 Azure용 GKE가 시스템 로깅을 사용 설정합니다. 워크로드 로깅을 사용 설정하려면 --logging 플래그로 클러스터를 만들어야 합니다. 시스템 구성요소나 워크로드 또는 둘 다에 대해 로깅을 사용 설정하도록 선택할 수 있습니다.

예를 들어 새 클러스터에서 시스템 및 워크로드 로깅을 모두 사용 설정하려면 안내를 따라 클러스터를 만들되 gcloud 명령어에 --logging 플래그를 포함합니다.

gcloud container azure clusters create CLUSTER_NAME
...
--logging=SYSTEM,WORKLOAD

또는 기존 클러스터를 업데이트합니다.

gcloud container azure clusters update CLUSTER_NAME
...
--logging=SYSTEM,WORKLOAD

로그 액세스

Cloud Logging에서 Azure용 GKE 로그에 액세스하는 방법에는 여러가지가 있습니다.

  • 로그 탐색기 – 로깅 필터를 사용하여 클러스터, 노드, 네임스페이스, 포드 또는 컨테이너 로그와 같은 Kubernetes 리소스를 선택하면 로그 탐색기에서 직접 로그를 볼 수 있습니다.

  • Google Cloud CLIgcloud logging read 명령어를 사용하여 적절한 클러스터, 노드, 포드, 컨테이너 로그를 선택합니다.

로그 이해

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

리소스 유형

다음은 Azure용 GKE와 관련된 리소스 유형입니다.

리소스 유형 표시 이름
k8s_control_plane_component 제어 영역 구성요소 로그
k8s_node 노드 풀 로그
k8s_container 워크로드 컨테이너 로그

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

제어 영역 로그

제어 영역 로그는 k8s_control_plane_component 리소스 유형을 사용합니다. 여기에는 kube-apiserver와 같이 제어 영역 복제본에서 실행되는 시스템 구성요소의 로그가 포함됩니다.

노드 로그

노드 로그는 k8s_node 리소스 유형에 속합니다. 여기에는 워커 노드에서 실행되는 중요한 시스템 구성요소(예: kubeletcontainerd)의 로그가 포함됩니다.

시스템 앱 로그

시스템 앱 로그는 k8s_container 리소스 유형에 속합니다. 여기에는 Azure용 GKE가 워커 노드에 설치한 포드의 로그가 포함됩니다. 특히 다음 네임스페이스에서 실행되는 컨테이너가 포함됩니다.

  • kube-system
  • gke-connect
  • gke-system
  • gmp-system
  • asm-user-auth
  • cnrm-system
  • config-management-system
  • gatekeeper-system
  • gmp-public
  • istio-system
  • knative-serving

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

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

로그 탐색기

쿼리 빌더를 사용하면 쿼리 매개변수를 수동으로 추가하여 쿼리를 빌드할 수 있습니다. 예를 들어 시스템 워크로드의 로그를 탐색하려면 k8s_container 리소스 유형을 선택하거나 검색하는 것으로 시작한 다음 위치와 클러스터 이름을 선택할 수 있습니다. 그런 다음 컨테이너 또는 포드 이름을 필터링하여 검색을 세분화할 수 있습니다.

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

자세한 내용은 로그 탐색기 사용을 참조하세요.

샘플 쿼리

이 섹션에는 로그 탐색기에서 만들 수 있는 샘플 쿼리가 포함되어 있습니다.

예시 1: Azure 클러스터 CLUSTER_NAME의 제어 영역 노드에서 kube-apiserver 로그를 가져옵니다.

resource.type="k8s_control_plane_component"
resource.labels.cluster_name="azureClusters/CLUSTER_NAME"
resource.labels.component_name="apiserver"

예시 2: Azure 클러스터 CLUSTER_NAME의 워커 노드에서 kubelet 로그를 가져옵니다.

resource.type="k8s_node"
resource.labels.cluster_name="azureClusters/CLUSTER_NAME"
log_name="projects/PROJECT_ID/logs/kubelet"

예시 3: Azure 클러스터 CLUSTER_NAMEcilium-agent 컨테이너 로그를 가져옵니다.

resource.type="k8s_container"
resource.labels.cluster_name="azureClusters/CLUSTER_NAME"
resource.labels.container_name="cilium-agent"

다음 단계