Cloud Service Mesh 로그 수집

다음 섹션에서는 문제 해결 또는 Google 지원에 연락을 위해 여러 Cloud Service Mesh 로그를 수집하는 방법을 설명합니다.

버그 보고서 도구를 사용하여 로그 수집

Cloud Service Mesh는 관련 진단 로그를 수집하고 로그를 Google 지원 티켓에 연결할 수 있게 해주는 자동화된 버그 신고 도구를 제공합니다.

시작하기 전에 클러스터의 kubeconfig 컨텍스트가 kubeconfig 파일에 제공되는지 확인합니다.

로그 수집 시작

관리형 컨트롤 플레인

  1. 문제 해결 도구를 다운로드합니다.

  2. 버그 신고 도구를 실행하여 로그를 수집합니다.

    gcloud beta container fleet mesh debug bug-report \
       --membership=MEMBERSHIP_NAME \
       --location=MEMBERSHIP_LOCATION \
       --project=PROJECT_NAME
    

    다음을 바꿉니다.

    • MEMBERSHIP_NAME: 멤버십 이름입니다.
    • MEMBERSHIP_LOCATION: 멤버십의 리전입니다.
    • PROJECT_NAME: 프로젝트 이름입니다.

클러스터 내 컨트롤 플레인

  1. 문제 해결 도구를 다운로드합니다.

  2. 버그 신고 도구를 실행하여 로그를 수집합니다.

    istioctl bug-report

디버그 아카이브 업로드

이 도구는 작업 디렉터리에 메시 로그 및 구성의 보관 파일을 만듭니다. 아카이브를 압축 해제하고 문제 해결 가이드를 사용하여 문제 해결 수행을 직접 시도할 수 있습니다. 하지만 서포트 패키지가 있으면 Google Cloud 지원에 연락하여 안전한 로그 아카이브 업로드 단계를 지원 받을 수 있습니다.

수동으로 Cloud Service Mesh 로그 수집

Cloud Service Mesh 버그 신고 도구를 사용하는 대신 이 섹션에서는 모든 관련 로그를 수동으로 수집하는 방법을 설명합니다.

Envoy 액세스 로그

Envoy 프록시 액세스 로그에는 문제 해결에 유용한 세부 정보가 포함되어 있습니다. 하지만 이를 사용 설정하고 올바른 세부정보 수준을 설정해야 합니다.

로그 콘텐츠를 해석하는 방법에 대한 자세한 내용은 Envoy 로그 해석을 참조하세요.

Envoy 로그 사용 또는 사용 중지

Envoy 프록시 액세스 로그를 사용 설정하려면 클러스터 내 Cloud Service Mesh에 대한 오버레이 파일 또는 관리형 Cloud Service Mesh에 대한 ConfigMap을 구성하세요.

로깅 세부정보 증가

로그의 세부정보 수준을 일시적으로 늘리려면 다음 명령어를 사용합니다. 포드가 다시 생성되면 이 설정이 실행취소됩니다.

kubectl -n NAMESPACE debug --image istio/base --target istio-proxy -it POD_NAME -- curl -X POST http://localhost:15000/logging?level=debug

로그의 세부정보 수준을 기본값으로 다시 설정하려면 다음 명령어를 사용합니다.

kubectl -n NAMESPACE debug --image istio/base --target istio-proxy -it POD_NAME -- curl -X POST http://localhost:15000/logging?level=info

폴더에 Envoy 로그 쓰기

Envoy 프록시 액세스 로그를 수집하여 이를 폴더에 저장하려면 다음 명령어를 사용합니다.

kubectl logs -l app=APPLICATION_NAME -c istio-proxy > /FILE_PATH

자세한 내용은 Envoy의 액세스 로그 가져오기를 참조하세요.

Kubernetes 로그

Kubernetes는 istiod, 인그레스 게이트웨이, 프록시와 같은 Istio 구성요소의 동작에 대한 정보가 포함된 여러 로그를 생성합니다. 이러한 로그에서 오류를 검토하여 문제의 원인이 될 수 있는 범위를 좁힐 수 있습니다.

(클러스터 내 컨트롤 플레인만 해당) 다음 명령어를 사용하여 istiod 로그를 캡처합니다.

kubectl -n istio-system logs $(kubectl -n istio-system get pods -lapp=istiod -oname) > ./LOGS_FOLDER/istiod.log

(클러스터 내 컨트롤 플레인만 해당) 다음 명령어를 사용하여 Istio 인그레스 게이트웨이 로그를 캡처합니다.

kubectl -n istio-system logs $(kubectl -n istio-system get pods -lapp=istio-ingressgateway -oname) > /FILE_PATH

다음 명령어를 사용하여 Istio 프록시 로그를 캡처합니다.

kubectl -n WORKLOAD_NAMESPACE logs POD_NAME -c istio-proxy > ./LOGS_FOLDER/proxy.log

Kubernetes 구성 덤프

이 정보를 통해 클러스터에 직접 액세스하지 않고도 사용자가 여러 리소스 상태를 확인하고 가능한 구성 문제를 식별할 수 있습니다. 다음 명령어는 Kubernetes 구성을 YAML 파일에 기록합니다.

for ns in `kubectl get namespaces -o=jsonpath='{.items[*].metadata.name}'` ; do echo "===NAMESPACE===" $ns >> ./LOGS_FOLDER/kubernetes.yaml ;kubectl get -oyaml -n $ns deploy,statefulset,job,ingress,endpoints,configmap,event,secret,service,istio-io >> ./LOGS_FOLDER/kubernetes.yaml; done

Envoy 코어 덤프

Envoy 코어 덤프는 일반적으로 최종 사용자에게 유용하지 않지만, Google 지원이 문제 해결 프로세스를 위해 사용자에게 다음 단계에 따라 수집하도록 요청할 수 있습니다.

Envoy 코어 덤프를 쓰기 가능한 디렉터리에 기록하도록 커널을 구성하려면 다음 안내를 따르세요.

  1. sidecar.istio.io/enableCoreDump=true 라벨을 포드에 추가합니다.

  2. 포드를 다시 시작하여 Envoy 코어 덤프를 사용 설정합니다.

  3. 포드에서 코어 덤프를 복사합니다.

Envoy 프록시 구성

자세한 Envoy 프록시 구성에는 문제 해결 프로세스에 유용할 수 있는 추가 세부정보가 포함됩니다. 다음 명령어를 사용하여 이 정보를 수집할 수 있습니다. 이 예시에서 ENDPOINT는 다음 중 하나입니다(중요도 순으로 표시됨).

  • /certs
  • /clusters
  • /listeners
  • /config_dump
  • /memory
  • /server_info
  • /stats/prometheus
  • /runtime
kubectl debug --image istio/base --target istio-proxy -itq POD_NAME -n NAMESPACE -- curl 127.0.0.1:15000/ENDPOINT > out.log