このページでは、次のステップについて説明します。
- OpenTelemetry パッケージをインストールする。
- Cloud Trace にスパンをエクスポートするようにアプリケーションを構成する。
- プラットフォームを構成する。
リリース情報については、以下をご覧ください。
OpenTelemetry リファレンス コンテンツについては、以下をご覧ください。
追加のドキュメントとサンプルを含め、Python の OpenTelemetry に関する最新情報については、OpenTelemetry をご覧ください。
始める前に
- Python 3.6 以降を使用する必要があります。
-
Enable the required API.
OpenTelemetry パッケージをインストールする
必要な OpenTelemetry パッケージをインストールするには、次の操作を行います。
(省略可)
pip
を最新バージョンにアップグレードします。pip install --upgrade pip
pip
を使用して、次の OpenTelemetry パッケージをインストールします。pip install opentelemetry-api \ opentelemetry-sdk \ opentelemetry-exporter-gcp-trace
トレース パッケージをインポートする
アプリケーションを更新して、次のパッケージとクラスをインポートします。
trace
CloudTraceSpanExporter
TracerProvider
BatchSpanProcessor
。バックグラウンド プロセスを使用してスパンを送信するエクスポート スパン プロセッサです。(省略可)スパンをリンクする場合は、
Link
クラスをインポートします。
このインポート ステートメントを次の例に示します。
Cloud Trace へのスパンのエクスポートを構成する
Cloud Trace にスパンを送信するには、CloudTraceSpanExporter
エクスポータを使用するようにアプリケーションを変更します。次の例は、必須の手順を示しています。
スパンに属性を追加する
スパンに属性を追加するには、スパンの set_attribute
メソッドを呼び出します。たとえば、次のコードは、foo_with_attribute
という名前のスパンに複数の属性を追加します。
スパンにイベントを追加する
スパンにイベントを追加するには、スパンの add_event
メソッドを呼び出します。たとえば、次のコードでは、foo_with_event
という名前のスパンにイベントが追加されます。
スパンをリンクする
2 つのスパンをリンクするには、Link
クラスをインポートし、続いて、start_as_current_span
メソッドで links
フィールドを使用します。2 つのスパンをリンクする際は、links
フィールドに属性を含められます。
次のコードでは、スパンを link_target
という名前のスパンにリンクする方法を示します。
Flask のサンプル アプリケーション
OpenTelemetry の Flask インストルメンテーションは、HTTP リクエストに関連するトレース コンテンツを簡単に取得できるよう設計されています。つまり、次のリクエストのルートに特定のインストルメンテーションを追加する必要はありません。
- Flask では、構成されたプロパゲータを使用して、受信 HTTP リクエストからスパン コンテキストを抽出します。
- Flask では、リクエストとレスポンスを記述する属性を持つスパンが自動的に作成されます。
Flask と OpenTelemetry を使用するエンドツーエンドの例については、flask_e2e をご覧ください。Git README には、サンプルをインストール、構成、実行する方法に関する情報が含まれています。
このセクションでは、サンプルの server.py
ファイルに含まれる Flask 固有の構成のステップについて説明します。クライアント ファイル client.py
は、Requests
インストルメンテーションを使用して、requests ライブラリによる HTTP リクエストのトレースを有効にします。
インポートと構成
OpenTelemetry の Flask インストルメンテーションを使用するには、FlaskInstrumentor
をインポートする必要があります。
さまざまな Google Cloud プロダクトによって作成されたスパンが同じトレースに関連付けられるようにするには、Cloud Trace プロパゲータを使用してプロパゲータを構成する必要があります。このプロパゲータでは、X-Cloud-Trace-Context
ヘッダーの使用を指定します。プロパゲータを構成しない場合、OpenTelemetry は、デフォルトのプロパゲータを使用します。この場合、Cloud Run や App Engine などのさまざまな Google Cloud プロダクトによって作成されたスパンは、個別のトレースに格納されます。
次のサンプルでは、必要なインポートと構成のステートメントと、Cloud Trace プロパゲータの構成を示します。
CloudTraceSpanExporter
エクスポータを構成するときに、Flask 固有のステートメントを追加する必要はありません。スパンの Cloud Trace へのエクスポートを構成するに示した構成で十分です。
Flask を初期化する
FlaskInstrumentor
を構成してアプリケーションをインストルメント化します。次のサンプルでは、この処置の実施方法を示します。
プラットフォームの構成
Cloud Trace は Google Cloud と他のプラットフォームで使用できます。
Google Cloud での実行
アプリケーションが Google Cloud で実行されている場合、認証情報をサービス アカウントの形式でクライアント ライブラリに提供する必要はありません。ただし、Google Cloud Platform で Cloud Trace API のアクセス スコープが有効になっている必要があります。
サポートされている Google Cloud 環境の一覧については、環境サポートをご覧ください。
次の構成では、デフォルトのアクセス スコープ設定により Cloud Trace API が有効化されます。
- App Engine フレキシブル環境
App Engine スタンダード環境
Google Kubernetes Engine(GKE)
Compute Engine
Cloud Run
カスタム アクセス スコープを使用する場合は、Cloud Trace API のアクセス スコープを有効にする必要があります。
Google Cloud Console を使用して環境のアクセス スコープを構成する方法については、Google Cloud プロジェクトの構成をご覧ください。
gcloud
ユーザーの場合は、--scopes
フラグを使用してアクセス スコープを指定し、trace.append
Cloud Trace API アクセス スコープを含めます。たとえば、Cloud Trace API のみを有効にして GKE クラスタを作成するには、次のようにします。gcloud container clusters create example-cluster-name --scopes=https://www.googleapis.com/auth/trace.append
ローカルやその他の場所での実行
アプリケーションが Google Cloud の外部で実行されている場合は、認証情報をサービス アカウントの形式でクライアント ライブラリに提供する必要があります。サービス アカウントには Cloud Trace エージェント ロールが含まれている必要があります。手順については、サービス アカウントの作成をご覧ください。
Google Cloud クライアント ライブラリは、アプリケーションのデフォルト認証情報(ADC)を使用してアプリケーションの認証情報を検索します。
これらの認証情報を指定するには、次の 3 つの方法があります。
実行
gcloud auth application-default login
オペレーティング システムのデフォルトパスにサービス アカウントを配置します。以下に、Windows と Linux のデフォルトのパスを一覧表示します。
Windows:
%APPDATA%/gcloud/application_default_credentials.json
Linux:
$HOME/.config/gcloud/application_default_credentials.json
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"
トレースを表示
Google Cloud コンソールで、[Trace エクスプローラ] ページに移動します。
このページは、検索バーを使用しても確認できます。
トラブルシューティング
Cloud Trace に関する問題のトラブルシューティングについては、トラブルシューティング ページをご覧ください。
リソース
- https://opentelemetry.io/
OpenTelemetry/opentelemetry-python
GitHub リポジトリGoogle Cloud opentelemetry-operations-python
GitHub リポジトリ。