OpenTelemetry PHP exportateur

Le SDK OpenTelemetry PHP prend en charge les exportateurs spécifiques aux fournisseurs. Les spans créés à l'aide du SDK peuvent être envoyés à un agent Instana. Pour plus d'informations sur les exportateurs et le SDK OpenTelemetry PHP, consultez leur documentation.

Remarque : l'outil d'exportation OpenTelemetry PHP n'est pris en charge que sur les systèmes d'exploitation Linux.

Installation de l'exportateur

Pour installer l'exportateur via Composer, exécutez la commande suivante :

composer require open-telemetry/opentelemetry-exporter-instana

Configuration de l'exportateur

Vous pouvez créer et configurer l'exportateur de trois manières :

  • Utilisation de l' Instana SpanFactory
  • Configuration manuelle de l'instance d' SpanExporter
  • Utilisation du registre OpenTelemetry

Pour utiliser l'exportateur, procédez comme suit :

  1. Installez le package du compositeur dans votre projet.
  2. Créer une instance de l' InstanaExporter.

Vous devez fournir les deux variables d'environnement suivantes Instana à l'application pour la fabrique et le registre :

INSTANA_AGENT_HOST
INSTANA_AGENT_PORT 

Si les variables d'environnement INSTANA_AGENT_HOST et INSTANA_AGENT_PORT ne sont pas définies, les valeurs par défaut suivantes sont utilisées :

INSTANA_AGENT_HOST=127.0.0.1
INSTANA_AGENT_PORT=42699
$tracerProvider = new TracerProvider(
    new SimpleSpanProcessor(
        (new \Instana\SpanExporterFactory)->create()
    )
);

Pour configurer manuellement SpanExporter, exécutez la commande suivante :

$transport = new InstanaTransport('127.0.0.1:42699');
$exporter =  new SpanExporter(
        $transport, 
        new SpanConverter($transport->getUuid(), $transport->getPid())
);
$tracerProvider = new TracerProvider(
    new SimpleSpanProcessor($exporter)
);

Pour configurer l'exportateur à l'aide du registre d' OpenTelemetry, utilisez la clé "instana" lorsque vous construisez un exportateur span :

$tracerProvider = new TracerProvider(
    new SimpleSpanProcessor(
        Registry::spanExporterFactory("instana")->create()
    )
);

Exemple d'utilisation de l'exportateur

Une fois le fournisseur de traçage configuré, vous pouvez initialiser un traçage OpenTelemetry PHP et utiliser le SDK comme d'habitude.

$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();

Instrumentation automobile

L'exportateur prend en charge l'auto-instrumentation et vous pouvez le configurer conjointement avec le SDK d' OpenTelemetry. Pour activer l'auto-instrumentation, utilisez les variables d'environnement suivantes ou configurez le fichier php.ini :

OTEL_PHP_AUTOLOAD_ENABLED=true
OTEL_TRACES_EXPORTER=instana
OTEL_PROPAGATORS=instana,baggage

Une fois l'exportateur configuré, les traces exportées vers l'agent d' Instana ation sont intégrées à votre application. Les tracés dépendent des bibliothèques d'instrumentation. Par conséquent, vous devez ajouter les bibliothèques d'instrumentation appropriées requises par votre application.

composer require open-telemetry/opentelemetry-auto-curl
composer require open-telemetry/opentelemetry-auto-wordpress

Définition d'un nom de service personnalisé

Vous pouvez définir un nom de service personnalisé pour votre application en utilisant les variables d'environnement INSTANA_SERVICE_NAME ou OTEL_SERVICE_NAME. Si les deux variables sont présentes, la valeur de INSTANA_SERVICE_NAME a priorité sur OTEL_SERVICE_NAME.

Capture d'en-têtes d' HTTP s personnalisées

Dans l'exportateur PHP Instana, vous pouvez récupérer les en-têtes personnalisés HTTP à la fois dans les requêtes et dans les réponses en utilisant les variables d'environnement. Vous pouvez utiliser les variables d'environnement suivantes pour définir les en-têtes personnalisés de HTTP :

OTEL_PHP_INSTRUMENTATION_HTTP_RESPONSE_HEADERS=content-type,server
OTEL_PHP_INSTRUMENTATION_HTTP_REQUEST_HEADERS=host,accept

Propagation de contexte

L'exportateur Instana PHP prend en charge les types suivants de propagation de contexte pour le traçage distribué :

  • W3C Propagation du contexte de trace : activée par défaut.
  • Instana Propagation du contexte de trace natif : non activée par défaut. Pour activer la propagation du contexte de trace d' Instana, utilisez le propagateur OpenTelemetry de l' Instana.

Pour plus d'informations, consultez le propagateur OpenTelemetry Instana.