Intégration d' OpenTelemetry. avec Instana. pour les applications PHP
Vous pouvez utiliser OpenTelemetry avec les applications PHP, ainsi qu'avec IBM et Instana Observability.
Systèmes d'exploitation pris en charge
OpenTelemetry L'intégration est prise en charge et testée uniquement sur les systèmes d'exploitation d' Linux.
Prérequis
Pour intégrer OpenTelemetry à Instana, vous avez besoin des composants suivants :
- OpenTelemetry PHP extension
- Composer pour la gestion des dépendances
- OpenTelemetry SDK et bibliothèques d'instrumentation
- Un compte Observability actif sur IBM Instana
- Instana agent installé et configuré dans votre environnement
Configuration de l'intégration d' OpenTelemetry
Vous pouvez utiliser l'une des options suivantes pour intégrer OpenTelemetry à Instana :
- Instana Déploiement du collecteur OpenTelemetry ( IDOT ) : utilisation du collecteur OpenTelemetry géré par Instana pour recevoir et traiter les données OpenTelemetry.
- Instana OTLP Points de terminaison : Configuration de l'exportateur OpenTelemetry OTLP pour envoyer les données OTel directement vers l'agent Instana ou le backend Instana OTLP.
- Instana OpenTelemetry PHP Exportateur : utilisation de l'exportateur dédié Instana OpenTelemetry PHP qui convertit les segments OTel en segments natifs Instana et utilise la couche de transport native Instana.
Option 1 : Utilisation d'une distribution « Instana » du collecteur « OpenTelemetry »
La distribution « Instana » du collecteur OpenTelemetry ( IDOT ) est une version entièrement gérée et préconfigurée du collecteur OpenTelemetry qui s'intègre de manière transparente à la plateforme d'observabilité de Instana.
Pour collecter des données de télémétrie à partir de vos applications PHP, suivez les étapes suivantes pour installer et configurer IDOT :
Installez le collecteur : déployez la distribution « Instana » du collecteur « OpenTelemetry » en tant que sidecar, démon ou passerelle, selon les besoins de votre infrastructure. Pour obtenir des instructions détaillées sur la configuration du collecteur IDOT, consultez la documentation relative au collecteur OpenTelemetry disponible à l'adresse Instana.
Configurez votre application PHP : Configurez votre application PHP pour qu'elle envoie les données d' OpenTelemetry s au collecteur Instana :
OTEL_PHP_AUTOLOAD_ENABLED=true OTEL_SERVICE_NAME=your_service_name OTEL_TRACES_EXPORTER=otlp OTEL_EXPORTER_OTLP_PROTOCOL=grpc OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:24317 OTEL_PROPAGATORS=instana,tracecontext
Option 2 : Utilisation des points de terminaison Instana et OTLP
Vous pouvez intégrer OpenTelemetry à PHP en configurant l'exportateur par défaut OpenTelemetry Protocol ( OTLP ) pour qu'il envoie les traces OpenTelemetry directement à l'agent Instana ou au backend Instana.
Activation de l'instrumentation automatique (sans code)
Vous pouvez activer l'instrumentation automatique en définissant des variables d'environnement, ce qui permet à OpenTelemetry de tracer automatiquement les bibliothèques PHP prises en charge.
À titre de référence, consultez cette application de démonstration disponible à l'adresse WordPress PHP, qui présente l'instrumentation sans code de OpenTelemetry PHP et l'intégration de OpenTelemetry avec Instana.
Vous pouvez activer l'instrumentation automatique en définissant les variables d'environnement minimales suivantes :
| Variables | Description |
|---|---|
OTEL_PHP_AUTOLOAD_ENABLED |
Définissez sur true pour activer l'instrumentation sans code d' OpenTelemetry |
OTEL_SERVICE_NAME |
Nom de service logique pour la corrélation de l'infrastructure |
OTEL_TRACES_EXPORTER |
Doit être réglé sur otlp |
OTEL_EXPORTER_OTLP_PROTOCOL |
Choisissez grpc, http/protobuf, ou http/json |
OTEL_EXPORTER_OTLP_ENDPOINT |
URL du point de terminaison OTLP, soit l'agent Instana, soit le backend |
Exemple
OTEL_PHP_AUTOLOAD_ENABLED=true
OTEL_SERVICE_NAME=wordpress_otel_instrumentation
OTEL_TRACES_EXPORTER=otlp
OTEL_EXPORTER_OTLP_PROTOCOL=grpc
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
OTEL_PROPAGATORS=instana,tracecontext
Une fois ces configurations mises en place, vous pouvez lancer une application PHP; les traces OpenTelemetry générées par celle-ci seront alors visibles dans l'interface utilisateur de Instana.
Vous pouvez également configurer les applications PHP pour qu'elles envoient les traces d' OpenTelemetry s directement à l'agent Instana ou au backend en utilisant les points de terminaison OTLP.
Envoi de données vers le point de terminaison de l'agent OTLP
L'agent « Instana » fournit des points de terminaison « OTLP » capables de recevoir des données « OpenTelemetry » directement depuis vos applications « PHP ».
Pour envoyer des données au point de terminaison OTLP de l'agent d' Instana, configurez votre application PHP comme suit :
OTEL_PHP_AUTOLOAD_ENABLED=true
OTEL_SERVICE_NAME=your_service_name
OTEL_TRACES_EXPORTER=otlp
OTEL_EXPORTER_OTLP_PROTOCOL=grpc
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
OTEL_PROPAGATORS=instana,tracecontext
Envoi de données vers le point de terminaison backend OTLP
Dans les environnements où une communication directe avec l'agent d' Instana s n'est pas possible, vous pouvez configurer votre application PHP pour qu'elle envoie les données d' OpenTelemetry directement au backend Instana.
Pour plus d'informations, consultez la section « Envoi de données d' OpenTelemetry vers Instana ».
Pour envoyer des données au point de terminaison OTLP du backend d' Instana, configurez votre application PHP comme suit :
OTEL_PHP_AUTOLOAD_ENABLED=true
OTEL_SERVICE_NAME=your_service_name
OTEL_TRACES_EXPORTER=otlp
OTEL_EXPORTER_OTLP_PROTOCOL=grpc
OTEL_EXPORTER_OTLP_ENDPOINT="https://{instana-backend-otlp-acceptor-endpoint}":4317"
OTEL_EXPORTER_OTLP_HEADERS="x-instana-key:=apiToken {your-api-token}"
OTEL_PROPAGATORS=instana,tracecontext
Remplacez {region} par votre région Instana et {your-api-token} par votre jeton Instana API.
Configuration de l'instrumentation manuelle
Vous devez intégrer manuellement le SDK d' OpenTelemetry s à vos applications dans les cas suivants :
- Vous n'utilisez pas l'instrumentation de la bibliothèque PHP prise en charge par OTel ou Instana.
- Vous souhaitez étendre les fonctionnalités de la bibliothèque Tracer d' PHP.
- Vous avez besoin d'un contrôle plus précis sur l'instrumentation de vos applications.
Pour configurer l'instrumentation manuelle, procédez comme suit :
- Installez l' OpenTelemetry, API et les paquets SDK.
composer require open-telemetry/sdk composer require open-telemetry/api Ajoutez l'instrumentation manuelle OpenTelemetry de votre choix à votre code PHP en suivant les instructions fournies dans la documentation sur l'instrumentation manuelle disponible à l'adresse OpenTelemetryPHP.
Choisissez le propagateur de contexte de traçage d' OpenTelemetry s pour les applications distribuées. Instana prend en charge les en-têtes de trace W3C et les en-têtes natifs Instana pour la propagation des traces.
Utilisation d'un propagateur « Instana »
OTEL_PROPAGATORS=instanaUtilisation
tracecontextdu propagateurOTEL_PROPAGATORS=tracecontext
L'utilisation de propagateurs permet à Instana de regrouper les segments OpenTelemetry et les segments Instana en une seule trace de votre application.
Pour plus d'informations sur les exemples d'instrumentation pour le traçage distribué, consultez la section « Activation de la propagation du contexte pour le traçage distribué ».
L'exemple simple suivant illustre l'instrumentation manuelle à l'aide d'un span parent et d'un span enfant :
use OpenTelemetry\SDK\Registry;
use OpenTelemetry\SDK\Trace\SpanProcessor\SimpleSpanProcessor;
use OpenTelemetry\SDK\Trace\TracerProvider;
use OpenTelemetry\API\Trace\SpanKind;
$tracerProvider = new TracerProvider(
new SimpleSpanProcessor(
Registry::spanExporterFactory("otlp")->create()
)
);
$tracer = $tracerProvider->getTracer('test');
$rootSpan = $tracer->spanBuilder('rootSpan')->startSpan();
$scope = $rootSpan->activate();
// Do some work
sleep(1);
// Create a child span (automatically becomes a child of the active span)
$childSpan = $tracer->spanBuilder('child-operation')
->startSpan();
$childScope = $childSpan->activate();
$childSpan->end();
$childScope->detach();
// Do more work
sleep(1);
// Add string attribute
$rootSpan->setAttribute('string.attribute', 'value');
$scope->detach();
$rootSpan->end();
$tracerProvider->shutdown();
OpenTelemetry Instana Propagateur
Le propagateur « OpenTelemetry » pour « Instana » permet la propagation des en-têtes et des données de bagages d' HTTP, à utiliser avec l'application « PHP ». Ce propagateur convertit les en-têtes de corrélation de trace Instana(X-INSTANA-T/X-INSTANA-S/X-INSTANA-L) en en-têtes OpenTelemetrySpanContext et OpenTelemetrySpanContext en en-têtes Instana.
Vous trouverez ici un exemple simple d'application d' PHP s distribuées illustrant l'instrumentation manuelle à l'aide du propagateur de contexte Instana.
TraceState «header» qui ne possède pas d'élément «span» parent.Installation du propagateur
Pour installer l'extension « propagator » d' Instana via Composer, utilisez la commande suivante :
composer require open-telemetry/opentelemetry-propagation-instana
Utilisation du propagateur
Le propagateur « Instana » utilise à la fois les méthodes « extract » et « inject » pour extraire et insérer le contexte de trace dans l'en-tête. Le propagateur peut être instancié de la manière suivante :
- Instanciation de la classe de propagation « Instana ».
$propagator = InstanaPropagator::getInstance();
- Utilisation d'une variable d'environnement
OTEL_PROPAGATORS=instana,baggage
Pour la propagation des bagages, utilisez ` OpenTelemetryMultiTextMapPropagator`, puis transmettez la liste des propagateurs, tels que ` Instana ` et le propagateur de bagages, comme suit :
$propagator = new MultiTextMapPropagator([InstanaPropagator::getInstance(), BaggagePropagator::getInstance()]);
Option 3 : Utilisation d' Instana, OpenTelemetry et PHP Exporter
L'exportateur Instana OpenTelemetry PHP est un exportateur dédié qui convertit les segments OpenTelemetry en segments natifs Instana et utilise la couche de transport native Instana pour transférer les traces vers le backend Instana.
Pour plus d'informations sur l'installation, la configuration et l'utilisation de l'exportateur Instana OpenTelemetry PHP, consultez la documentation relative à l'exportateur OpenTelemetry PHP.