SDK PHP

Instana PHP Le SDK est obsolète. À compter du 30 mai 2026, Instana mettra officiellement fin à son assistance et déclarera la fin de vie (EOL) de ce service.

Instana recommande vivement à tous les utilisateurs du SDK de migrer leurs applications vers l'exportateur Instana du SDK OTel. Pour obtenir des instructions sur le processus d'utilisation, consultez la documentation de l'exportateur PHP OpenTelemetry (aperçu public).

L'extension de suivi « PHP » est fournie avec un SDK minimal. A l'aide de ce SDK, vous pouvez instrumenter manuellement votre code. Les plages créées via ce SDK sont injectées dans les traces générées automatiquement. Grâce au SDK, vous pouvez également enregistrer manuellement les exceptions afin de compléter l'enregistrement automatique des exceptions non détectées effectué par l' Instana.

Installation du kit SDK

Les fichiers de base du SDK d' PHP s peuvent être installés via Composer à l'aide de la commande suivante :

composer require instana/instana-php-sdk

Les stubs garantissent que, lorsque le processus d' PHP ation n'est pas surveillé par Instana, tous les appels aux API du SDK renvoient des résultats normaux no-op, plutôt que des erreurs.

Des ébauches du SDK d' PHP, destinées à être utilisées avec votre IDE, sont disponibles sur Packagist.

Exemple d'utilisation du kit SDK

$tracer = new \Instana\Tracer();

// sets the globaly service name without having to use the INSTANA_SERVICE_NAME variable
$tracer->setServiceName('my-service');
$span = $tracer->createSpan('foo');
$span->annotate('function', 'doSomething');
try {
    doSomething();
} catch (\Exception $e) {
    $tracer->logException($e);
    $span->markError();
} finally {
    $span->stop();
}

Création de segments ENTRY et EXIT personnalisés

En utilisant l'extension de traçage d' PHP, vous pouvez créer des segments personnalisés de type ENTRY ou EXIT.

// get the tracer
$tracer = new \Instana\Tracer();

$entry_span = $tracer->createSpan('entry', \Instana\SPAN_ENTRY);

$exit_span = $tracer->createSpan('exit', \Instana\SPAN_EXIT);

Setting tags

// get the tracer
$tracer = new \Instana\Tracer();
$entry_span = $tracer->createSpan('entry', \Instana\SPAN_ENTRY);
$entry_span->annotate('service', 'my service')

Définition du span parent

Lorsque vous créez un nouvel intervalle avec le SDK d' PHP, vous pouvez définir l'ID de l'intervalle parent, ce qui peut s'avérer utile dans les traces de continuation générées par d'autres systèmes. L'exemple suivant montre à quoi doit ressembler le fragment de code approprié:

// get the tracer
$tracer = new \Instana\Tracer();

$span = $tracer->createSpan('entry', \Instana\SPAN_INTERMEDIATE, $parentId);

Configuration de la poursuite de la trace

Grâce à l'extension de traçage « PHP », vous pouvez configurer la poursuite du traçage via des systèmes de messagerie. Pour ce faire, vous devez injecter le contexte de trace du diffuseur dans le message et l'extraire côté consommateur.

Publieur

Pour injecter le contexte de trace du diffuseur de publications dans le message, exécutez la commande suivante:

// get the tracer
$tracer = new \Instana\Tracer();

// GENERIC: an artificial message you want to send to your queue
$message = ['task' => 'convert-image'];

// retrieve the current trace context
$context = $tracer->getActiveContext();

// GENERIC: inject the current active context into your message, so you can retrieve it in the worker later
$attributes = $message['X-INSTANA-S'] = $context->getSpanId();
$attributes = $message['X-INSTANA-T'] = $context->getTraceId();

// send your message to the queue
$queue->publish($message);

Utilisateur

Pour extraire le contexte de trace du diffuseur de publications côté consommateur, exécutez la commande suivante:

// get the tracer
$tracer = new \Instana\Tracer();

// GENERIC: pull your message from the queue
$message = $queue->pull();

// GENERIC: extract trace context so we can continue the trace, assumes it's always present
$messageContext = new \Instana\TraceContext($message['X-INSTANA-T'], $message['X-INSTANA-S']);

// continue the trace that published the message
$tracer->continueTrace($messageContext);

// OPTIONAL: Create a span to wrap the unit of work
$span = $tracer->createSpan('work');
$span->annotate('job', 'my-important-job');

// do the actual work

// stop the optional span started above
$span->stop();

Configuration de la poursuite de la trace avec l'option « Google Cloud Pub/Sub »

L'extension de suivi « PHP » crée automatiquement des segments EXIT pour les interactions sortantes avec Google Cloud Pub/Sub.

Pour la continuation de la trace, vous devez encapsuler manuellement le code qui consomme les messages de publication / abonnement.

use Google\Cloud\PubSub\PubSubClient;

$tracer = new \Instana\Tracer();

$pubSub = new PubSubClient([
    'projectId' => $myProjectname
]);

$topic = $pubSub->topic($myTopicName);
$subscription = $pubSub->subscription($mySubscriptionName, $myTopicName);

$messages = $subscription->pull();
foreach ($messages as $message) {
    $attributes = $message->attributes();

    // extract the trace continouation headers from your message, assumes it's always present
    $messageContext = new \Instana\TraceContext($attributes['x-instana-t'], $attributes['x-instana-s']);

    // continue the trace that published the message
    $tracer->continueTrace($messageContext);

    // convert the current span
    $span = $tracer->getEntrySpan();
    $span->asGCPubSubReceive($project, 'php-consumer');

    // OPTIONAL: Create a span to wrap the unit of work
    $span = $tracer->createSpan('work');
    $span->annotate('job', 'my-important-job');

    // do the actual work

    // stop the optional span started above
    $span->stop();

    $subscription->acknowledge($message);
}

Définition du nom du service

Lorsque vous créez un span à l'aide du SDK d' PHP, vous pouvez définir INSTANA_SERVICE_NAME en utilisant manuellement les fonctions du SDK d' PHP. Cette valeur est plus prioritaire que les valeurs INSTANA_SERVICE_NAME définies dans les tableaux $__ENV et $_SERVER . L'exemple suivant montre à quoi ressemble le fragment de code approprié:

//get the tracer
$tracer = new \Instana\Tracer();

Instana\Tracer::setServiceName(“MY_SERVICE_NAME”);

Suppression du kit SDK

Lorsque vous désinstallez l'extension de traçage PHP, vous devez également supprimer tout code SDK ajouté manuellement; sinon, PHP interrompra l'exécution du script en raison de fonctions manquantes.