Node.js 用の Stackdriver Trace の設定

Stackdriver Trace は、Node.js 用の Stackdriver Trace ライブラリを使用する Node.js アプリケーションで使用できます。

クライアント ライブラリのインストール

  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 での実行

Node.js 用の Stackdriver Trace ライブラリは、Stackdriver Trace API アクセス スコープがインスタンスで有効にされている限り、Google Cloud Platform で実行されているそのインスタンスの認証情報を手動で提供しなくても動作します。

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 を使用するには、クラスタの作成時に trace.append OAuth アクセス スコープを追加します。

gcloud を使ってクラスタを作成するには、次の手順に従います。

  1. (省略可)gcloud を最新バージョンに更新します。
    gcloud components update
  2. デフォルトのプロジェクト ID を設定します。
    gcloud config set project [PROJECT_ID]
  3. ゾーンクラスタを使用する場合は、デフォルトのコンピューティング ゾーンを設定します。
    gcloud config set compute/zone [COMPUTE_ZONE]
  4. リージョン クラスタを使用する場合は、デフォルトのコンピューティング リージョンを設定します。
    gcloud config set compute/region [COMPUTE_REGION]
  5. create コマンドを発行します。
    gcloud container clusters create example-cluster-name --scopes https://www.googleapis.com/auth/trace.append

クラスタの作成の詳細については、クラスタの作成をご覧ください。

Compute Engine

Compute Engine VM インスタンスの場合は、各 VM インスタンスに Stackdriver Trace API アクセス スコープ trace.append を明示的に有効にする必要があります。Google Cloud Platform Console から新しいインスタンスを作成する場合は、[インスタンスの作成] パネルの [ID と API へのアクセス] セクションで次の値を選択します。

  1. [サービス アカウント] には [Compute Engine のデフォルトのサービス アカウント] を選択します
  2. [アクセス スコープ] には [すべての Cloud API に完全アクセス権を許可] を選択します

Compute Engine のデフォルト以外のサービス アカウントを使用するには、インスタンスのサービス アカウントの作成と有効化ローカルやその他の場所での実行をご覧ください。重要なのは、使用するサービス アカウントに Cloud Trace Agent の役割があることです。

ローカルやその他の場所での実行

Stackdriver Trace を GCP 以外で実行するには、GCP プロジェクト ID と該当するサービス アカウントの認証情報を Node.js 用の Stackdriver Trace ライブラリに直接提供する必要があります。サービス アカウントには Cloud Trace エージェントの役割が含まれている必要があります。手順については、サービス アカウントの作成をご覧ください。

プロジェクト ID

ライブラリの start メソッドに渡される options オブジェクトの projectId 値を設定することによってプロジェクト ID を 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)を使用してアプリケーションの認証情報を検出します。Node.js 用の Stackdriver Trace ライブラリに認証情報を提供するには、GOOGLE_APPLICATION_CREDENTIALS 環境変数を設定します。

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 Console Trace Viewer でトレースを表示できます。

Trace Viewer のページに移動