OpenTelemetry PHP 輸出業者

OpenTelemetry PHP SDK は、ベンダー固有のエクスポーターをサポートしています。 SDKを使用して作成されたスパンは、 Instana エージェントに送信できます。 エクスポーター および OpenTelemetry PHP SDK に関する詳細については、それぞれのドキュメントを参照してください。

注:OpenTelemetry PHP のエクスポート機能は、 Linux オペレーティングシステムでのみサポートされています。

エクスポーターのインストール

Composer を使用してエクスポーターをインストールするには、次のコマンドを実行します

composer require open-telemetry/opentelemetry-exporter-instana

エクスポーターの設定

エクスポーターは、以下の3つの方法で作成および設定することができます

  • Instana の使用方法 SpanFactory
  • SpanExporter インスタンスを手動で設定する
  • OpenTelemetry レジストリを使用する

エクスポーターを使用するには、以下の手順に従ってください

  1. composer パッケージをプロジェクトにインストールします。
  2. 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 のプロパゲータを参照してください。