Zipkin과 함께 Cloud Trace 사용

이 페이지에서는 Zipkin 서버를 사용하여 Zipkin 클라이언트에서 trace를 수신하고 분석을 위해 이 trace를 Cloud Trace로 전달하는 방법을 설명합니다.

애플리케이션이 Zipkin으로 계측되고 자체 trace 백엔드를 실행하지 않거나 Cloud Trace의 고급 분석 도구에 액세스하려는 경우 Zipkin 서버를 사용할 수 있습니다.

이 페이지에서는 Zipkin 서버를 설정하는 몇 가지 방법을 설명합니다.

컨테이너 이미지를 사용하여 서버 설정

Cloud Trace Zipkin 수집기의 컨테이너 이미지는 GitHub에 있습니다. 이 저장소에는 Docker 빌드 정의가 포함되어 있으며 기본 Zipkin Docker 이미지에 대한 Google Cloud 지원 및 자세한 설정 단계가 제공됩니다.

선택한 컨테이너 호스트(Google Kubernetes Engine 포함)에서 이 이미지를 실행할 수 있습니다.

이미지를 실행하는 방법은 다음과 같습니다.

$ docker run -d -p 9411:9411 \
-e STORAGE_TYPE=stackdriver \
-e GOOGLE_APPLICATION_CREDENTIALS=/root/.gcp/credentials.json \
-e STACKDRIVER_PROJECT_ID=your_project \
-v $HOME/.gcp:/root/.gcp:ro \
openzipkin/zipkin-gcp

Compute Engine 인스턴스 또는 Google Kubernetes Engine 클러스터와 같이 Google Cloud 내에서 이 컨테이너를 실행하면 환경의 기본 사용자 인증 정보가 자동으로 캡처되고 trace가 자동으로 Cloud Trace로 전송됩니다.

전체 설정 프로세스를 보려면 Zipkin Docker 이미지의 GitHub 저장소로 이동하세요.

이 페이지에 설명된 대로 Zipkin 추적기를 구성해야 합니다.

Google Cloud 외부에서 서버 실행

온프레미스에서 실행되는 물리적 서버와 같이 Google Cloud 외부에서 수집기를 빌드하고 실행하려면 다음 단계를 완료하세요.

프로젝트 생성 또는 선택

  1. Google 계정으로 로그인합니다.

    아직 계정이 없으면 새 계정을 등록하세요.

  2. Cloud Console의 프로젝트 선택기 페이지에서 Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기 페이지로 이동

수집기가 Google Cloud에서 실행되고 있지 않으므로 결제 계정이 필요하지 않습니다.

서비스 계정 만들기

서비스가 Cloud Trace API에 인증하도록 허용하려면 다음 안내를 따르세요.

  1. 서비스 계정을 만듭니다.
    1. Trace API에 데이터를 쓸 수 있도록 새 서비스 계정에 프로젝트 편집자 역할이 부여되었는지 확인합니다.
    2. 새 비공개 키 제공을 선택하고 JSON을 선택합니다.
    3. 수집기 서비스를 실행할 머신의 디렉토리에 JSON 사용자 인증 정보 파일을 저장합니다.

방화벽 구성

포트 9411의 TCP 트래픽을 Zipkin 수집기를 실행하는 머신으로 전달할 수 있도록 네트워크 구성을 구성합니다.

애플리케이션이 방화벽 외부에서 호스팅되는 경우 Zipkin 추적기-수집기 간 트래픽은 암호화되거나 인증되지 않습니다. Cloud Trace Zipkin 수집기와 Cloud Trace API 간의 연결은 Cloud Trace 계측 라이브러리에서 가져온 연결과 마찬가지로 암호화 및 인증됩니다.

컨테이너 이미지로 서버 설정

자세한 내용은 컨테이너 이미지 사용을 참조하세요.

Zipkin 추적기 구성

이 페이지의 일반적인 Zipkin 추적기 구성 섹션의 안내를 따릅니다.

기존 Zipkin 서버 수정

Zipkin 프로젝트는 Cloud Trace를 기존 Zipkin 서버의 스토리지 대상으로 사용하는 방법에 대한 안내를 유지합니다. 이러한 안내는 Zipkin Docker 이미지의 GitHub 저장소에서 확인할 수 있습니다.

Zipkin 추적기 구성 방법

Cloud Trace Zipkin 수집기를 어떻게 호스팅하든 Zipkin 추적기가 데이터를 전송하도록 구성해야 합니다.

수집기를 참조하려면 내부 IP 주소, 외부 IP 주소(Google Cloud 외부에서 호스팅되는 애플리케이션에서 trace를 수신하는 경우) 또는 호스트 이름을 사용합니다. 각 Zipkin 추적기마다 다르게 구성됩니다. 예를 들어, IP 주소가 1.2.3.4인 수집기에서 Brave 추적기를 가리키려면 자바 코드베이스에 다음 줄을 추가해야 합니다.

    Reporter reporter = AsyncReporter.builder(OkHttpSender.create("1.2.3.4:9411/api/v1/spans")).build();
    Brave brave = Brave.Builder("example").reporter(reporter).build()

자주 묻는 질문(FAQ)

Q: 어떤 제한 사항이 있나요?

이 출시 버전에는 다음과 같은 두 가지 알려진 제한 사항이 있습니다.

  1. Zipkin 추적기가 올바른 Zipkin 시간 및 기간 시맨틱스를 지원해야 합니다. 자세한 내용을 보려면 라이브러리 계측으로 이동한 다음 타임스탬프 및 기간 섹션까지 스크롤을 내리세요.

  2. Zipkin 추적기와 Cloud Trace 계측 라이브러리는 trace 컨텍스트를 서비스 간에 전달하기 위해 서로 다른 형식을 사용하므로 동일한 trace에 스팬을 추가할 수 없습니다. 그 결과 한 라이브러리에서 캡처된 trace에는 다른 라이브러리에서 계측되는 서비스의 스팬이 포함되지 않습니다.

    이러한 이유로 Cloud Trace를 사용하려는 프로젝트는 Zipkin 수집기와 함께 Zipkin 호환 추적기를 독점적으로 사용하거나 Cloud Trace를 통해 작동하는 계측 라이브러리를 사용하는 것이 좋습니다. Cloud Trace 라이브러리에 대한 자세한 내용은 Node.js, 자바, Go를 참조하세요.

    예:

    스팬 제한의 이미지

    Node.js 웹 애플리케이션에 대한 요청은 Zipkin 라이브러리로 추적되고 Cloud Trace로 전송됩니다. 그러나 이러한 trace에는 ASP.NET API 애플리케이션으로 생성된 스팬이 포함되지 않습니다. Zipkin 라이브러리에서 캡처된 trace에는 APS.NET API 애플리케이션의 MySQL 데이터베이스에 대한 RPC 호출의 스팬도 포함되지 않습니다.

Q: 전체 Zipkin 서버로 작동하나요?

아닙니다. 이 기능은 Cloud Trace에만 데이터를 작성합니다.