Node.js용 Stackdriver Trace 설정

Node.js용 Stackdriver Trace 라이브러리를 사용하여 Node.js 애플리케이션에 대해 Stackdriver Trace를 사용 설정할 수 있습니다.

클라이언트 라이브러리 설치

  1. Node.js용 Stackdriver Trace 라이브러리를 설치하기 전에 Node.js 개발을 위한 환경이 준비되었는지 확인합니다.

  2. Node.js용 Stackdriver Trace 라이브러리를 설치하는 가장 쉬운 방법은 npm을 사용하는 것입니다.

    npm install --save @google-cloud/trace-agent
  3. 애플리케이션의 기본 스크립트 맨 위에서 또는 다른 모든 코드 앞에 있는 진입점에서 Node.js용 Stackdriver Trace 라이브러리를 가져옵니다.

    require('@google-cloud/trace-agent').start();

Node.js용 Stackdriver Trace 라이브러리에 대한 자세한 내용을 알아보거나 문제를 보고하려면 에이전트의 소스 코드 저장소를 참조하세요.

클라이언트 라이브러리 구성

Node.js용 Stackdriver Trace 라이브러리 동작을 맞춤설정할 수 있습니다. 가능한 구성 옵션 목록에 대해서는 GitHub의 라이브러리 구성을 참조하세요. 이러한 옵션은 라이브러리의 start 메소드에 전달되는 options 객체에서 전달될 수 있습니다.

Google Cloud Platform에서 실행

Stackdriver Trace API 액세스 범위가 해당 인스턴스에서 사용 설정된 경우, Google Cloud Platform에서 실행되는 인스턴스의 사용자 인증 정보를 수동으로 제공하지 않아도 Node.js용 Stackdriver Trace 라이브러리가 작동합니다.

App Engine 가변형

App Engine 가변형 환경에서는 Stackdriver Trace API 액세스 범위가 기본적으로 사용 설정되며 사용자 인증 정보나 프로젝트 ID를 제공하지 않고도 Node.js용 Stackdriver Trace 라이브러리를 사용할 수 있습니다.

App Engine 표준

App Engine 표준 환경에서는 Stackdriver Trace API 액세스 범위가 기본적으로 사용 설정되며 사용자 인증 정보나 프로젝트 ID를 제공하지 않고도 Node.js용 Stackdriver Trace 라이브러리를 사용할 수 있습니다.

Google Kubernetes Engine

GKE에서는 클러스터 생성 시 trace.append OAuth 액세스 범위를 추가해야 합니다.

gcloud container clusters create example-cluster-name --scopes https://www.googleapis.com/auth/trace.append

생성 후에는 클러스터의 액세스 범위를 변경할 수 없습니다.

Compute Engine

Compute Engine VM 인스턴스의 경우, 각 VM 인스턴스에 대해 trace.append Stackdriver Trace API 액세스 범위를 명시적으로 사용 설정해야 합니다. Google Cloud Platform Console을 통해 새로운 인스턴스를 만드는 경우, 인스턴스 만들기 패널의 ID 및 API 액세스 섹션에서 다음 값을 선택할 수 있습니다.

  1. 서비스 계정에 대해 Compute Engine 기본 서비스 계정 선택
  2. 액세스 범위에 대해 모든 Cloud API에 대한 전체 액세스 허용 선택

Compute Engine 기본 서비스 계정 외의 계정을 사용하려면 인스턴스에 대한 서비스 계정 만들기 및 사용 설정로컬 및 기타 위치에서 실행 섹션을 참조하세요. 중요한 점은 사용하는 서비스 계정에 Cloud Trace 에이전트 역할이 있다는 점입니다.

로컬 및 기타 위치에서 실행

Stackdriver Trace를 GCP 외부에서 실행하려면 Node.js용 Stackdriver Trace 라이브러리에 GCP 프로젝트 ID와 적절한 서비스 계정 사용자 인증 정보를 직접 제공해야 합니다. 자세한 내용은 애플리케이션에 사용자 인증 정보 제공을 참조하세요.

프로젝트 ID

라이브러리의 start 메소드에 전달되는 options 객체에서 projectId 값을 설정하여 프로젝트 ID를 Node.js용 Stackdriver Trace 라이브러리에 제공하거나 GCLOUD_PROJECT 환경 변수를 설정합니다.

Linux 또는 macOS

export GCLOUD_PROJECT=your-project-id

Windows

set GCLOUD_PROJECT=your-project-id

Powershell:

$env:GCLOUD_PROJECT="your-project-id"

사용자 인증 정보

GCP 클라이언트 라이브러리는 애플리케이션 기본 사용자 인증 정보(ADC)를 이용해 애플리케이션의 사용자 인증 정보를 찾습니다. GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정하여 Node.js용 Stackdriver Trace 라이브러리에 사용자 인증 정보를 제공합니다.

Linux/macOS

    export GOOGLE_APPLICATION_CREDENTIALS=path-to-your-service-accounts-private-key

Windows

    set GOOGLE_APPLICATION_CREDENTIALS=path-to-your-service-accounts-private-key

PowerShell:

    $env:GOOGLE_APPLICATION_CREDENTIALS="path-to-your-service-accounts-private-key"

require('@google-cloud/trace-agent').start({
  projectId: 'your-project-id',
  keyFilename: '/path/to/key.json'
});

샘플 애플리케이션

if (process.env.NODE_ENV === 'production') {
  require('@google-cloud/trace-agent').start();
}

const express = require('express');
const got = require('got');

const app = express();
const DISCOVERY_URL = 'https://www.googleapis.com/discovery/v1/apis';

// This incoming HTTP request should be captured by Trace
app.get('/', async (req, res) => {
  // This outgoing HTTP request should be captured by Trace
  try {
    const { body } = await got(DISCOVERY_URL, { json: true });
    const names = body.items.map((item) => item.name);
    res
      .status(200)
      .send(names.join('\n'))
      .end();
  }
  catch (err) {
    console.error(err);
    res
      .status(500)
      .end();
  }
});

// Start the server
const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
  console.log(`App listening on port ${PORT}`);
  console.log('Press Ctrl+C to quit.');
});

추적 보기

배포 후 GCP 콘솔 추적 뷰어에서 추적을 확인할 수 있습니다.

추적 뷰어 페이지로 이동

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

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

Stackdriver Trace
도움이 필요하시나요? 지원 페이지를 방문하세요.