Python 用の Stackdriver Trace の設定

Trace の Python サポートは、複数のバックエンドで動作するトレースとアプリケーションの指標のインストゥルメンテーション ライブラリ セットである OpenCensus によって提供されます。Python 用の OpenCensus に関する最新情報と、追加のドキュメントとサンプルについては、GitHub ページをご覧ください。

インストールと構成

トレースを収集するには、Stackdriver エクスポータと OpenCensus トレーサーのパッケージをインポートする必要があります。また、アプリケーションで Stackdriver のエクスポータとトレーサーをインスタンス化する必要もあります。

Stackdriver エクスポータでは、認証にアプリケーションのデフォルト認証情報を使用します。コードが Google Cloud Platform(GCP)で実行されている場合は、プロジェクト ID を省略できます。

from opencensus.trace.exporters import stackdriver_exporter
import opencensus.trace.tracer

def initialize_tracer(project_id):
    exporter = stackdriver_exporter.StackdriverExporter(
        project_id=project_id
    )
    tracer = opencensus.trace.tracer.Tracer(exporter=exporter)

    return tracer

Google Cloud Platform での実行

Google Cloud Platform 上で実行されているインスタンスで Stackdriver Trace API アクセス スコープが有効になっている場合は、そのインスタンス用の認証情報を提供する必要はありません。ただし、インスタンスに対して可能な限り広いアクセス スコープを設定してから、Cloud Identity and Access Management を使用して、アクセスを制限することをおすすめします。

App Engine フレキシブル環境

App Engine フレキシブル環境では Stackdriver Trace API アクセス スコープがデフォルトで有効であり、認証情報やプロジェクト ID を提供しなくても OpenCensus クライアント ライブラリを使用できます。

App Engine スタンダード環境

App Engine スタンダード環境では Stackdriver Trace API アクセス スコープがデフォルトで有効であり、認証情報やプロジェクト ID を提供しなくても OpenCensus クライアント ライブラリを使用できます。

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 と該当するサービス アカウントの認証情報を OpenCensus クライアント ライブラリに直接提供する必要があります。サービス アカウントには Cloud Trace エージェントの役割が含まれている必要があります。手順については、サービス アカウントの作成をご覧ください。

プロジェクト ID

インストールと構成の手順に従って、OpenCensus に対してプロジェクト ID を提供します。環境変数 GOOGLE_CLOUD_PROJECT をプロジェクト ID に設定し、この変数を読み取るようにアプリケーションを変更することをおすすめします。環境変数を設定するには、次の操作を行います。

Linux または macOS

export GOOGLE_CLOUD_PROJECT=your-project-id

Windows

set GOOGLE_CLOUD_PROJECT=your-project-id

PowerShell:

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

認証情報

GCP クライアント ライブラリでは、アプリケーションのデフォルト認証情報(ADC)を使用してアプリケーションの認証情報を検出します。OpenCensus クライアント ライブラリに認証情報を提供するには、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"

Python 用の Trace サンプル アプリケーション

@app.route('/index.html', methods=['GET'])
def index():
    tracer = app.config['TRACER']
    tracer.start_span(name='index')

    # Add up to 1 sec delay, weighted toward zero
    time.sleep(random.random() ** 2)
    result = "Tracing requests"

    tracer.end_span()
    return result

トレースの表示

デプロイ後、GCP Console Trace Viewer でトレースを表示できます。

Trace Viewer のページに移動

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Stackdriver Trace ドキュメント