OpenTelemetry PHP 輸出業者
OpenTelemetry PHP SDK は、ベンダー固有のエクスポーターをサポートしています。 SDKを使用して作成されたスパンは、 Instana エージェントに送信できます。 エクスポーター および OpenTelemetry PHP SDK に関する詳細については、それぞれのドキュメントを参照してください。
エクスポーターのインストール
Composer を使用してエクスポーターをインストールするには、次のコマンドを実行します
composer require open-telemetry/opentelemetry-exporter-instana
エクスポーターの設定
エクスポーターは、以下の3つの方法で作成および設定することができます
- Instana の使用方法
SpanFactory SpanExporterインスタンスを手動で設定する- OpenTelemetry レジストリを使用する
エクスポーターを使用するには、以下の手順に従ってください
- composer パッケージをプロジェクトにインストールします。
InstanaExporterのインスタンスを作成します。
ファクトリとレジストリ用に、アプリケーションに対して以下の2つの Instana 環境変数を設定する必要があります:
INSTANA_AGENT_HOST
INSTANA_AGENT_PORT
INSTANA_AGENT_HOST および INSTANA_AGENT_PORT 環境変数が設定されていない場合、以下のデフォルト値が使用されます
INSTANA_AGENT_HOST=127.0.0.1
INSTANA_AGENT_PORT=42699
$tracerProvider = new TracerProvider(
new SimpleSpanProcessor(
(new \Instana\SpanExporterFactory)->create()
)
);
SpanExporter を手動で設定するには、次のコマンドを実行します
$transport = new InstanaTransport('127.0.0.1:42699');
$exporter = new SpanExporter(
$transport,
new SpanConverter($transport->getUuid(), $transport->getPid())
);
$tracerProvider = new TracerProvider(
new SimpleSpanProcessor($exporter)
);
OpenTelemetry レジストリを使用してエクスポーターを設定するには、スパンエクスポーターを構築する際に "instana" キーを使用します
$tracerProvider = new TracerProvider(
new SimpleSpanProcessor(
Registry::spanExporterFactory("instana")->create()
)
);
輸出者の利用例
トレーサープロバイダーの設定が完了したら、 OpenTelemetry PHP のトレーサーを初期化し、通常通りSDKを使用できます。
$tracer = $tracerProvider->getTracer('io.instana.opentelemetry.php');
$span = $tracer->spanBuilder('root')->startSpan();
$span->setAttribute('remote_ip', '1.2.3.4')
->setAttribute('country', 'CAN');
$span->addEvent('generated_session', [
'id' => md5((string) microtime(true)),
]);
$span->end();
$tracerProvider->shutdown();
自動計装
エクスポーターは自動計測をサポートしており、 OpenTelemetry SDK と併用してエクスポーターを設定することができます。 自動インストルメントを有効にするには、以下の環境変数を使用するか、 php.ini ファイルを構成します
OTEL_PHP_AUTOLOAD_ENABLED=true
OTEL_TRACES_EXPORTER=instana
OTEL_PROPAGATORS=instana,baggage
エクスポーターの設定が完了すると、 Instana エージェントにエクスポートされるトレースがアプリケーションに組み込まれます。 トレースは、使用する計測ライブラリに依存します。 したがって、アプリケーションに必要な適切なインストルメンテーションライブラリを追加する必要があります。
composer require open-telemetry/opentelemetry-auto-curl
composer require open-telemetry/opentelemetry-auto-wordpress
カスタム・サービス名の設定
環境変数 INSTANA_SERVICE_NAME または OTEL_SERVICE_NAME を使用して、アプリケーションのカスタムサービス名を定義することができます。 両方の変数が存在する場合、INSTANA_SERVICE_NAMEの値がOTEL_SERVICE_NAMEよりも優先されます。
カスタム HTTP ヘッダーの取得
PHP ( Instana )エクスポーターでは、環境変数を使用することで、リクエストとレスポンスの両方からカスタム HTTP ヘッダーを取得できます。 以下の環境変数を使用して、 HTTP のカスタムヘッダーを指定できます:
OTEL_PHP_INSTRUMENTATION_HTTP_RESPONSE_HEADERS=content-type,server
OTEL_PHP_INSTRUMENTATION_HTTP_REQUEST_HEADERS=host,accept
コンテキストの伝搬
Instana PHP のエクスポーターは、分散トレーシングにおいて以下の種類のコンテキスト伝播をサポートしています:
- W3C トレースコンテキストの伝播:デフォルトで有効になっています。
- Instana ネイティブトレースコンテキストの伝播:デフォルトでは無効になっています。 Instana のトレースコンテキストの伝播を有効にするには、 Instana OpenTelemetry プロパゲータを使用します。
詳細については、 OpenTelemetry および Instana のプロパゲータを参照してください。