Activation et configuration du traçage d' PHP

Par défaut, le traçage « PHP » est activé dans le fichier de configuration de l'agent. Lorsque le traçage d' PHP s est activé, le capteur PHP installe automatiquement l'outil PHP Tracer (également appelé extension de traçage Instana PHP ) dans votre environnement d'exécution PHP.

Remarque : les termes « Tracer » ( PHP ) et « extension de traçage » ( PHP ) sont utilisés de manière interchangeable dans ce document.

Configuration requise

Le capteur « PHP » n'active la fonctionnalité de traçage que si l'environnement d'exécution PHP détecté prend en charge l 'extension « JSON ». Si l'une des extensions suivantes est détectée dans un environnement d'exécution d' PHP, l'installation d' PHP Tracer est automatiquement désactivée :

  • SourceGuardian
  • New Relic
  • Dynatrace
  • Datadog

Si l'extension « ionCube Loader » est détectée dans un environnement d'exécution « PHP », le traceur « PHP » est installé avec le traçage de l'espace utilisateur « PHP » désactivé.

PHP processus de traçage

Lorsque le traçage d' PHP s est activé dans le fichier de configuration de l'agent, le capteur PHP gère automatiquement l'installation et la configuration de l'extension PHP Tracing, comme décrit dans les étapes suivantes :

  1. Le capteur « PHP » télécharge l'extension « PHP Tracing » et l'active dans le fichier de configuration INI d'exécution de « PHP » comme suit :

    • Si le moteur d'exécution d' PHP est configuré avec un répertoire distinct pour les fichiers INI supplémentaires, le capteur PHP place dans ce répertoire un zzz-instana.ini fichier contenant les paramètres INI de l'extension de traçage d' PHP.
    • Sinon, le capteur « PHP » configure « PHP Tracer» en ajoutant les paramètres INI au fichier php.ini principal.

    Ne le modifiez zzz-instana.ini pas, car le capteur « PHP » le remplace à chaque installation en fonction des configurations définies dans le fichier de configuration.yaml l'agent « Instana ».

  2. Le capteur PHP tente alors de redémarrer en douceur l'environnement PHP afin de charger l'extension de traçage PHP en mémoire.

  3. Si le moteur d'exécution d' PHP est redémarré avec succès, l'extension de traçage d' PHP commence à collecter des traces dans le moteur d'exécution d' PHP.

  4. Si le redémarrage automatique ne fonctionne pas en raison du type SAPI du moteur d'exécution d' PHP, vous devez redémarrer manuellement PHP afin de charger l'extension de traçage PHP en mémoire. Pour plus d'informations sur l'automatisation du redémarrage de l'environnement d'exécution d' PHP, consultez la section « Redémarrages automatiques ».

  5. Le capteur « PHP » génère des valeurs par défaut appropriées pour les paramètres INI de l'extension « PHP Tracing ». Toutefois, vous pouvez ajuster ces paramètres pour répondre à des besoins très spécifiques. Pour plus d'informations, consultez la section « Personnalisation avancée ».

Si vous rencontrez des problèmes lors de l'installation automatique de l'extension « PHP Tracing », vous pouvez également l'installer manuellement. Pour plus d'informations, consultez la section « Installation manuelle de l'extension de traçage d' PHP ».

Personnalisation avancée

Le capteur « PHP » est fréquemment réécrit zzz-instana.ini; ne modifiez donc pas ce fichier INI. Vous pouvez plutôt ajouter votre propre fichier INI personnalisé qui remplace les paramètres INI par défaut de Instana dans zzz-instana.ini. PHP charge les fichiers INI par ordre alphanumérique, la dernière occurrence d'un paramètre étant la valeur retenue. Pour vous assurer que les paramètres INI de votre fichier INI personnalisé zzzzz-instana-extras.ini remplacent ceux de zzz-instana.ini, nommez votre fichier INI personnalisé (notez le préfixe zzzzz-) afin qu'il soit chargé après zzz-instana.ini. Dans les environnements conteneurisés, votre fichier INI personnalisé peut être monté dynamiquement ou intégré à l'image.

Les paramètres suivants sont disponibles pour toutes les versions d' PHP :

  • instana.batch_threshold_us : seuil de longueur et de distance afférant au traitement par lots des étendues. La valeur par défaut est de 10 000 microsecondes.
  • instana.backtrace_limit: Définit la profondeur de la trace de pile. La plage de valeurs autorisée est 1: -25 (par défaut). La fonctionnalité de configuration des traces de pile offre un contrôle plus poussé sur la collecte des traces de pile que le instana.backtrace_limit paramètre INI, car elle permet de désactiver complètement la collecte des traces de pile ou de l'activer uniquement pour les segments présentant des erreurs. Pour plus d'informations, consultez la section « Configuration des traces de pile ».
  • instana.disabled_instrumentation (obsolète) : Spécifie un masque de bits correspondant aux instrumentations à désactiver. La valeur par défaut est 0 (aucun). Pour plus d'informations, consultez la section « Désactivation de l'instrumentation ». Ce paramètre INI est obsolète et a été remplacé par la fonctionnalité de désactivation des segments, qui offre une meilleure flexibilité pour la désactivation de l'instrumentation.
  • instana.disable_userland_tracing: Désactive tout le traçage pour les extensions non natives d' PHP et le code utilisateur d' PHP, comme les frameworks. La valeur par défaut est 0 (désactivé).
  • instana.enable_cli: active ou désactive la fonction de trace pour l'interface de ligne de commande SAPI. 1 = activé. 0 = désactivé. La valeur par défaut est 0 (désactivé).
  • instana.log_level: niveau de journalisation: 0 = off, 1 = ERROR, 2 = WARN, 3 = INFO et 4 = DEBUG. La valeur par défaut est 0 (désactivé).
  • instana.segfault_error_log: Enregistrer ou empêcher l'envoi d'une trace de pile vers le journal d'erreurs d' PHP en cas de défaut de segmentation. La valeur par défaut est 0 (désactivé).
  • instana.span_chunk_size: Nombre de trames à conserver en mémoire dans l' PHP avant leur envoi à l'agent. Ce nombre affecte directement la création de lots. Par exemple, les blocs d'un seul désactivent efficacement le traitement par lots.

Les paramètres suivants sont propres à la version 5 d' PHP :

  • instana.socket: L'adresse du socket « TCP » du capteur « Instana » de PHP. L'adresse du socket est déterminée lors de l'installation et la valeur par défaut est tcp://127.0.0.1:16816.

Les paramètres suivants sont exclusifs à PHP 7.0 et versions ultérieures:

  • instana.buffer_hard_limit: nombre maximal d'étendues à conserver dans la mémoire tampon si l'agent ne répond plus. Les plages commençant à partir de la plus ancienne sont supprimées jusqu'à ce que la mémoire tampon soit contenue dans cette limite. La valeur par défaut est 1000.
  • instana.buffer_maximum_delay_ms: intervalle maximal entre les consignations suivantes d'une mémoire tampon d'intervalle. La valeur par défaut est 1000 ms.
  • instana.buffer_soft_limit: nombre maximal de plages à mettre en mémoire tampon avant qu'une mémoire tampon de plage ne soit effacée. La valeur par défaut est 500.

Les paramètres suivants sont propres à la version PHP 8.1 et aux versions ultérieures :

  • instana.span_filter_config_file: Indique le chemin d'accès absolu du fichier ` YAML ` contenant la configuration permettant de désactiver les traces ou de filtrer les segments. Le capteur « PHP » met à jour ce paramètre dans le fichier de configuration.yaml l'agent afin de permettre la désactivation et le filtrage des spans. La valeur par défaut est <System_Temp>/instana-php/instana_span_filter_config.yaml. Pour plus d'informations sur ce paramètre, consultez la section « Étapes supplémentaires pour la configuration d' YAML ».

Le tableau suivant présente la liste complète des variables d'environnement permettant de configurer l'extension PHP :

Variable d"environnement Valeur par défaut
INSTANA_AGENT_HOST 127.0.0.1
INSTANA_AGENT_PORT 42699
INSTANA_SERVICE_NAME VIDE
INSTANA_DEBUG OFF
INSTANA_STACK_TRACE_LENGTH 25
INSTANA_EXTRA_HTTP_HEADERS Aucun
INSTANA_SECRETS password, key, secret
INSTANA_LOG_LEVEL Aucun

Ces variables d'environnement ont priorité sur les configurations dans zzz-instana.ini. Pour plus d'informations, consultez la section sur les variables d'environnement.

Si vous avez besoin d'aide pour ces paramètres, contactez le service d'assistance d' IBM.

Interception des en-têtes d' HTTP s personnalisés

PHP Tracer permet de capturer des en-têtes d' HTTP s personnalisés dans les segments d'entrée et de sortie. Pour capturer ces en-têtes, indiquez la liste des en-têtes dans l'une des configurations suivantes :

  • PHP Paramètres INI :

    instana.extra_http_headers=HEADER1,HEADER2

  • Configuration des variables d'environnement :

    INSTANA_EXTRA_HTTP_HEADERS=HEADER1;HEADER2

Vous pouvez également enregistrer les en-têtes d' HTTP s de chaque requête ou réponse suivie en configurant la liste des en-têtes dans le fichier de configuration.yaml l'agent. Pour plus d'informations, consultez la section « Enregistrement d'en-têtes personnalisés d' HTTP ».

Le traceur « PHP » préserve les espaces tant dans les clés que dans les valeurs de l'en-tête.

Cette fonctionnalité est disponible dans PHP Tracer 4.7.0 et les versions ultérieures.

Désactivation des balises span

PHP Tracer permet de désactiver les traces ou les segments pour un type de segment spécifique (frameworks, bibliothèques et instrumentations) ou pour des groupes entiers de bibliothèques (catégorie de segments). Grâce à cette fonctionnalité de désactivation des intervalles, vous pouvez personnaliser le traçage en fonction des besoins de votre application. Il est possible de réduire les coûts liés au réseau en ne transmettant que les traces indispensables à votre application.

Cette fonctionnalité est disponible dans PHP Tracer 5.3.0 et les versions ultérieures.

Méthodes de configuration

Utilisez l'une des méthodes suivantes pour définir la configuration permettant de désactiver le traçage :

Pour plus d'informations sur la priorité de configuration, consultez la section « Priorité de configuration pour la désactivation des segments ».

Option 1 : désactivation de Span via un fichier de configuration personnalisé

Pour désactiver les spans via un fichier de configuration personnalisé, définissez la variable d'environnement INSTANA_CONFIG_PATH sur le chemin absolu du fichier YAML contenant votre configuration.

Remarque :
  • Le fichier de configuration personnalisé ne doit pas être un lien symbolique. Il doit disposer d'un droit de lecture (r) et tous ses répertoires parents doivent disposer d'un droit d'exécution (x) accordé à l'utilisateur ou au groupe sous lequel s'exécutent le moteur d'exécution de PHP ou les processus de travail de PHP.
  • Lorsque vous activez cette fonctionnalité pour la première fois ou que vous commencez avec une configuration vide d' YAML, redémarrez l'environnement d'exécution d' PHP après avoir mis à jour la configuration. Les modifications de configuration ultérieures prennent effet sans nécessiter un nouveau redémarrage.

Pour plus d'informations sur la configuration de la désactivation des segments, consultez la section « Configuration de la désactivation des segments ».

Exemple : pour désactiver le traçage de tous les appels aux bases de données (à l'exception de MongoDB ) et de tous les frameworks de journalisation, procédez comme suit :

  1. Créez un fichier « YAML » distinct et copiez-y la configuration suivante :

    tracing:
      disable:
        - databases: true
        - mongodb: false
        - logging: true
  2. Définissez la variable d'environnement INSTANA_CONFIG_PATH sur le chemin absolu du fichier ` YAML ` dans lequel le contenu est placé, comme suit :

    INSTANA_CONFIG_PATH=<your YAML file>
Remarque : le contenu du fichier de configuration est surveillé afin d'appliquer les modifications en temps réel. Placez le fichier dans un répertoire dédié afin de limiter les opérations superflues des API de surveillance des fichiers, qui pourraient entraîner une forte consommation de ressources CPU par les processus d' PHP.

Option 2 : désactivation des spans via la configuration de l'agent « Instana »

Pour configurer la désactivation des spans via la configuration de l'agent Instana, créez ou modifiez la com.instana.tracing.disable section contenant la configuration de désactivation des spans dans le fichier de l'agent configuration.yaml .

Remarque : lorsque vous activez cette fonctionnalité pour la première fois ou que vous commencez avec une configuration vide d' YAML, redémarrez l'environnement d'exécution d' PHP après avoir mis à jour la configuration. Les modifications de configuration ultérieures prennent effet sans nécessiter un nouveau redémarrage.

Dans certains environnements d'exécution d' PHP, des étapes supplémentaires sont nécessaires lors de la configuration du filtrage des spans via cette méthode. Pour plus d'informations, consultez la section « Étapes supplémentaires pour la configuration d' YAML ».

Pour plus d'informations sur la configuration de la désactivation des segments, consultez la section « Configuration de la désactivation des segments ».

Exemple : pour désactiver le traçage de tous les appels à la base de données (à l'exception de ` Redis `) et de tous les frameworks de journalisation, mettez à jour l'agent configuration.yaml à l'aide de l'extrait de code suivant :

com.instana.tracing:
  disable:
    - databases: true
    - redis: false
    - logging: true

Configuration de la désactivation des spans

Pour plus d'informations sur la syntaxe de configuration permettant de désactiver le span, consultez la section « Désactivation du traçage ».

La désactivation du traçage pour une catégorie désactive la génération de balises span pour toutes les bibliothèques appartenant à cette catégorie. Consultez la liste suivante des catégories prises en charge par PHP Tracer :

Vous pouvez utiliser tous les identifiants d'instrumentation répertoriés dans le tableau des bibliothèques et frameworks à instrumentation automatique pour configurer des règles de désactivation des spans pour des types de spans spécifiques.

Priorité de configuration pour la désactivation des segments

Les règles de désactivation des spans sont appliquées selon l'ordre de priorité suivant, classées de la plus élevée à la plus faible :

  1. Applique les règles de désactivation issues du fichier de configuration personnalisé transmis via la INSTANA_CONFIG_PATH variable d'environnement.
  2. La désactivation de Span est configurée dans le fichier instana.disabled_instrumentation INI.
  3. Règles de désactivation de Span issues du fichier de configuration.yaml l'agent.

Si un moteur d'exécution d' PHP s détecte plusieurs configurations, il n'applique que les règles de désactivation des segments issues de la configuration ayant la priorité la plus élevée.

Par exemple, si un moteur d'exécution PHP dispose des règles de désactivation des spans suivantes, définies via INSTANA_CONFIG_PATH une variable d'environnement :

com.instana.tracing:
  disable:
    - logging: true
    - databases: true
    - redis: false
 

Et ce même exécutable comporte le paramètre INI suivant :

instana.disabled_instrumentation=24 ; disables redis (16) and curl (8) instrumentations
 

Avec cette configuration type, l'outil Tracer d' PHP fonctionne comme suit :

  • La traçabilité est désactivée pour toutes les bibliothèques de journalisation.
  • La fonction de traçage est désactivée pour toutes les bases de données, à l'exception d' Redis.

Le instana.disabled_instrumentation paramètre INI est ignoré, car la variable INSTANA_CONFIG_PATH d'environnement a la priorité. Par conséquent, tous les instruments qui ne sont pas désactivés via le fichier de configuration spécifié par la variable INSTANA_CONFIG_PATH d'environnement sont activés.

Si des règles de désactivation de span sont définies à la fois via la variable INSTANA_CONFIG_PATH d'environnement et dans le fichier de configuration.yaml l'agent, les règles du configuration.yaml fichier sont alors ignorées.

Portées de filtrage

Vous pouvez réduire la quantité de données de trace collectées et traitées par Instana en utilisant la fonctionnalité de filtrage des segments. Vous pouvez personnaliser les règles de filtrage afin d'exclure les segments ou les traces non pertinents et d'inclure ceux qui sont importants, en fonction des attributs des segments. Ces règles de filtrage vous permettent de contrôler plus précisément la surveillance sélective des segments.

Cette fonctionnalité est disponible dans Tracer PHP 5.8.0 et versions ultérieures, tandis que le filtrage par intervalle HTTP est pris en charge à partir de Tracer PHP 5.7.1.

Méthodes de configuration

Utilisez l'une des méthodes suivantes pour configurer les règles de filtrage des segments :

Pour plus d'informations sur l'ordre de priorité entre la désactivation et le filtrage des segments, consultez la section « Ordre de priorité de configuration pour le filtrage des segments ».

Option 1 : filtrage des intervalles via un fichier de configuration personnalisé

Pour configurer le filtrage des spans via un fichier de configuration personnalisé, définissez la variable d'environnement INSTANA_CONFIG_PATH sur le chemin absolu du fichier ` YAML ` contenant votre configuration.

Remarque :
  • Le fichier de configuration personnalisé ne doit pas être un lien symbolique. Il doit disposer d'un droit de lecture (r) et tous ses répertoires parents doivent disposer d'un droit d'exécution (x) accordé à l'utilisateur ou au groupe sous lequel s'exécutent le moteur d'exécution de PHP ou les processus de travail de PHP.
  • Lorsque vous activez cette fonctionnalité pour la première fois ou que vous commencez avec une configuration vide d' YAML, redémarrez l'environnement d'exécution d' PHP après avoir mis à jour la configuration. Les modifications de configuration ultérieures prennent effet sans nécessiter un nouveau redémarrage.

Pour plus d'informations sur la configuration du filtrage, consultez la section « Configuration du filtrage des segments ».

Pour obtenir la liste des attributs de segment pouvant être utilisés dans la configuration du filtrage des segments, consultez la section « Configuration du filtrage des segments ».

Exemple : pour exclure les segments dont les points d'extrémité d' HTTP se terminent par /health ou /ping, procédez comme suit :

  1. Créez un fichier « YAML » distinct et copiez-y la configuration suivante :

    tracing:
      filter:
        exclude:
          - name: ignore status checks
            attributes:
              - key: http.url
                values: [/health, /ping]
                match_type: endswith
  2. Définissez la variable d'environnement INSTANA_CONFIG_PATH sur le chemin absolu du fichier ` YAML ` dans lequel le contenu est placé, comme suit :

    INSTANA_CONFIG_PATH=<your YAML file>
Remarque : le contenu du fichier de configuration est surveillé afin d'appliquer les modifications en temps réel. Placez le fichier dans un répertoire dédié afin de limiter les opérations superflues des API de surveillance des fichiers, qui pourraient entraîner une forte consommation de ressources CPU par les processus d' PHP.

Option 2 : Filtrage des intervalles via la configuration de l'agent « Instana »

Pour configurer le filtrage des spans via la configuration de l'agent Instana, créez ou mettez à jour la com.instana.tracing.filter section contenant les règles de filtrage des spans dans le fichier de l'agent configuration.yaml .

Remarque : lorsque vous activez cette fonctionnalité pour la première fois ou que vous commencez avec une configuration vide d' YAML, redémarrez l'environnement d'exécution d' PHP après avoir mis à jour la configuration. Les modifications de configuration ultérieures prennent effet sans nécessiter un nouveau redémarrage.

Dans certains environnements d'exécution d' PHP, des étapes supplémentaires sont nécessaires lors de la configuration du filtrage des spans via cette méthode. Pour plus d'informations, consultez la section « Étapes supplémentaires pour la configuration d' YAML ».

Pour plus d'informations sur la configuration du filtrage des segments, consultez la section « Configuration du filtrage des segments ».

Pour obtenir la liste des attributs de segment pouvant être utilisés dans la configuration du filtrage des segments, consultez la section Attributs de segment pour le filtrage.

Pour plus d'informations sur la priorité de configuration entre les règles de désactivation des segments et les règles de filtrage des segments, consultez la section Priorité de configuration.

Exemple : pour exclure toutes les sections PDO sur le tempdb, mettez à jour l'agent configuration.yaml à l'aide de l'extrait de code suivant :

com.instana.tracing:
  filter:
    exclude:
      - name: exclude PDO spans for tempdb
        attributes:
          - key: pdo.dsn
            values: [dbname=tempdb]
            match_type: contains

Configuration du filtrage par intervalle

Les règles de filtrage par plage utilisent la syntaxe suivante d' YAML :

  filter:
    deactivate: <boolean>
    <policy>: exclude | include
      - name: <string>
        suppression: <boolean> # only applicable to exclude rules
        attributes:
          - key: <string> # category | kind | type | span attribute (like http.url, pdo.stmt, etc.)
            values: List <string>
            match_type: <string> # strict | startswith | endswith | contains
Zone Obligatoire Description
filter Obligatoire Nœud racine pour toutes les règles de filtrage.
deactivate Facultatif Commutateur de fonctionnalité permettant de désactiver la configuration du filtre lorsqu'il est activé, true sans supprimer les règles de filtrage configurées. La valeur par défaut est false (le filtrage est activé).
policy Obligatoire exclude Cette politique contient les règles d'exclusion qui excluent certains segments d'une trace. include Cette politique contient les règles d'inclusion qui permettent d'intégrer des segments dans une trace. include ces règles prévalent sur exclude les autres.
name Obligatoire Nom lisible décrivant la règle de filtrage.
suppression Facultatif Indique s'il faut supprimer les segments enfants et le traçage en aval lorsqu'un segment correspond à une règle d'exclusion. La valeur par défaut est true. Lorsque cette option est activée false, l'élément parent est exclu de la trace, mais le traçage en aval n'est pas supprimé.
attributes Obligatoire Liste des attributs de balise `span` qui doivent tous correspondre pour qu'une règle s'applique.
key Obligatoire Clé de l'attribut span.
values Obligatoire Liste des valeurs pouvant être attribuées à l'attribut « span key ». Un attribut est considéré comme correspondant si l'un de ses éléments values correspond. Les caractères génériques et les expressions régulières ne sont pas pris en charge.
match_type Facultatif Définit la manière dont values les attributs « span » sont mis en correspondance. Valeurs valides : strict (par défaut), startswith, endswith, et contains.

Types de plages pour le filtrage

Vous pouvez utiliser le exit type « span » pour faire correspondre différents intervalles de sortie.

Catégories de portée pour le filtrage

Vous pouvez utiliser les catégories de span suivantes pour filtrer : databases, frameworks, messaging, http, logging, templating. Consultez la section sur les bibliothèques et les frameworks auto-instrumentés pour déterminer à quelle catégorie appartient une technologie ou un type de span.

Types de plages pour le filtrage

Vous pouvez utiliser tous les identifiants d'instrumentation répertoriés dans les bibliothèques et les frameworks à instrumentation automatique comme types de span pour le filtrage.

Attributs de plage pour le filtrage

Les sous-sections suivantes répertorient les attributs de portée pour chaque type de portée pouvant être utilisés pour le filtrage.

Attributs de span pour le type php span
Attribut « span » Description Exemple de valeur
php.script Chemin d'accès relatif du script « PHP » à partir de la racine du répertoire de documents. La valeur commence toujours par un point /. /index.php
php.version Version PHP 8.5.1

Attributs de la balise `span` pour la catégorie http « span »

Remarque : Les balises curl, pecl_http soap, et streams sont de type http et appartiennent à la http catégorie.

Les attributs de type http « span » suivants peuvent être utilisés pour le filtrage des points de terminaison d' HTTP :

Attribut « span » Description Exemple de valeur
http.url URL http://www.example.com/items
http.method Méthode HTTP GET
http.status HTTP code de statut de la réponse 200
http.host Nom d'hôte www.example.com
http.header.<header-name> En-tête HTTP header-value
http.params Chaîne de requête HTTP action=edit&id=5
http.route_id ID de tournée. Disponible pour la portée « root PHP » lorsqu'un appel Laravel, Symfony ou Laminas implique une route nommée. home
http.path_tpl URI de la route. Disponible pour la portée « root PHP » lorsqu'un appel Laravel implique un routage. /products/{category}/item/{item}
soap.action SOAP action à exécuter sur le terminal http://www.example.com/item/#delete
Attributs de la balise `span` pour la catégorie frameworks « span »
Infrastructure Type de segment Attributs de portée
Laminas laminas laminas.controller, laminas.action, laminas.route_name. laminas.module, laminasview.template, laminasview.subtemplate_count, laminasview.renderer
Laravel laravel laravel.action, laravel.controller, laravel.route
Symfony symfony symfony.action, symfony.controller, symfony.route, symfony.api_collection_operation, symfony.api_item_operation, symfony.api_subresource_operation_name, symfony.api_resource_class, symfony.route_params, symfony.event_count
WordPress wordpress wp.action, wp.view, wp.post_title
Zend Framework zf zf.controller, zf.action, zf.route_name. zf.module, zfview.template, zfview.subtemplate_count, zfview.renderer
Attributs de la balise `span` pour la catégorie databases « span »
Bases de données Type de segment Attributs de portée
Cassandra cassandra cassandra.cluster, cassandra.keyspace, cassandra.query, cassandra.error
Couchbase couchbase couchbase.hostname, couchbase.bucket, couchbase.type, couchbase.stmt, couchbase.error, couchbase.error_code
Elasticsearch elasticsearch elasticsearch.id, elasticsearch.index, elasticsearch.type, elasticsearch.action, elasticsearch.address, elasticsearch.endpoint, elasticsearch.error, elasticsearch.hits, elasticsearch.port, elasticsearch.query
IBM Db2 db2 db2.dsn, db2.stmt, db2.error
LDAP ldap ldap.url, ldap.query, ldap.error
Memcache memcache memcache.command, memcache.connection
Memcached memcache memcached.connection, memcached.operation, memcached.resultCode, memcached.resultMessage
MongoDB mongo mongo.command, mongo.service, mongo.filter, mongo.namespace, mongo.error, mongo.error_code
MS SQL mssql mssql.host, mssql.port, mssql.user, mssql.db, mssql.stmt, mssql.error
MySQL mysql mysqli.dsn, mysqli.stmt, mysqli.error
OCI8 oci8 oci8.conn, oci8.stmt, oci8.error, oci8.error_code
PDO pdo pdo.driver, pdo.dsn, pdo.stmt, pdo.error, pdo.error_code
Redis redis redis.command, redis.connection, redis.driver, redis.key,
Attributs de la balise `span` pour la catégorie messaging « span »
Messagerie Type de segment Attributs de portée
AMQP amqp amqp.connection, amqp.command, amqp.routingkey
Google Cloud Pub/Sub gcpsa gcps.op, gcps.projid, gcps.sub, gcps.top, gcpsa.op, gcpsa.projid, gcpsa.snap, gcpsa.sub, gcpsa.top
Remarque : dans l'instrumentation « Google Cloud Pub/Sub », les attributs de segment relatifs à un abonnement ou à un sujet sont précédés du préfixe gcps , tandis que ceux relatifs à un instantané sont précédés du préfixe gcpsa.
Attributs de la balise `span` pour la catégorie logging « span »
Journalisation Type de segment Attributs de portée
Consignateur Drupal log.drupal log.message
Monolog log.monolog log.message
Consignateur Yii log.yii log.message
Enregistreur de journaux Zend log.zendlog log.message
Attributs de la balise `span` pour la catégorie templating « span »
Création de modèles Type de segment Attributs de portée
Lame blade blade.view, blade.path, blade.subtemplate_count
Twig twig twig.name, twig.path, twig.subtemplate_count
Attributs de portée pour les types de portée non classés
Instrumentation Type de segment Attributs de portée
Shell shell shell.cmd, shell.exitCode
Exceptions exceptions error.file, error.msg, error.type
Sessions sessions session.save_handler

Exemple de configuration du filtrage par intervalle

L'exemple suivant illustre une configuration de filtrage de plage :

# Use 'tracing' section if using custom configuration file
# Use 'com.instana.tracing' section if using agent configuration.yaml file
com.instana.tracing:
  filter:
    exclude:
      - name: exclude HTTP spans based on URL attribute
        attributes:
          - key: http.url
            values: [http://service.app.com]
            match_type: startswith
      - name: exclude HTTP spans based on HTTP header attribute
        suppression: false
        attributes:
          - key: http.header.X-APPNAME
            values: [MyApp]
            match_type: strict
      - name: exclude logging spans
        attributes:
          - key: category
            values: [logging]
    include:
      - name: include HTTP spans based on HTTP method and HTTP URL attributes
        attributes:
          - key: http.method
            values: [GET, POST]
          - key: http.url
            values: [/login, /cart/add, /payment/checkout]
            match_type: endswith
      - name: include monolog spans related to errors
        attributes:
          - key: type
            values: [monolog]
          - key: log.message
            values: [error, fail]
            match_type: contains

Dans l'exemple précédent, la configuration de filtrage applique les règles suivantes :

  • Exclure les segments de l' HTTP dont l'adresse URL commence par http://service.app.com et supprimer les segments enfants ainsi que le traçage en aval.
  • Exclure les segments de traçage « HTTP » qui contiennent un en-tête de X-APPNAME:MyApp requête et ne pas supprimer les segments enfants ni le traçage en aval.
  • Exclure les segments de journalisation.
  • Incluez des balises « HTTP » à l'aide de la GET méthode ou POST , ainsi qu'un URL se terminant par /login, /cart/add, ou /payment/checkout.
  • Inclure les segments de monologue contenant le message error ou fail.

Ordre de priorité des paramètres de configuration pour le filtrage des segments

Les règles de configuration relatives à la désactivation et au filtrage des segments sont appliquées selon l'ordre de priorité suivant :

  1. Configuration de la désactivation de Span via un fichier de configuration personnalisé
  2. Configuration du filtrage par plage via un fichier de configuration personnalisé
  3. Configuration de la désactivation de Span via le configuration.yaml fichier de l'agent
  4. Configuration du filtrage par plage via le configuration.yaml fichier de l'agent

Lorsqu'un fichier de configuration personnalisé est utilisé, les règles contenues dans le fichier de configuration.yaml l'agent sont ignorées. Si la désactivation et le filtrage sont tous deux configurés dans le même fichier, ils s'appliquent tous les deux, mais une règle de désactivation qui concerne le même segment qu'une règle de filtrage prévaut.

Remarque : les balises `span` désactivées par des règles de désactivation des balises `span` ou par le instana.disabled_instrumentation paramètre INI ne peuvent pas être incluses dans une règle include de filtrage.

Limites du filtrage par intervalle

  • La suppression des segments enfants et du traçage en aval n'est pas prise en charge dans les cas suivants :
    • Excluez les règles basées sur des attributs de durée qui ne sont connus qu'une fois la requête HTTP terminée. Par exemple, une règle d'exclusion comportant les http.status attributs ou http.header.<response-header-name> span ne permet pas d'appliquer la suppression.
    • Exclure les règles basées sur les http.route_id attributs ou http.path_tpl span.
  • La suppression du traçage en aval n'est pas prise en charge pour les règles d'exclusion appliquées aux segments autres que ceux de type « root » et « HTTP ».

Configuration des traces de pile

Configurez la collecte des traces de pile afin de contrôler le volume de données de trace collectées et traitées par Instana.

Par défaut, le Tracer d' PHP capture la trace de pile de tous les spans (à l'exception des spans d'entrée) avec une profondeur de trace de pile de 25 trames. Vous pouvez contrôler la quantité de données de trace collectées et ingérées par Instana en utilisant la configuration des traces de pile pour personnaliser le traceur PHP afin qu’il ne collecte les traces de pile que pour les spans erronés, ou pour désactiver complètement la collecte des traces de pile tout en conservant le contrôle sur la profondeur de ces traces.

Le Tracer d’ PHP collecte systématiquement les traces de pile pour les segments d’exception, même si la collecte des traces de pile est désactivée, car celles-ci fournissent des informations utiles pour le débogage des exceptions d’exécution dans votre application PHP.

Cette fonctionnalité est disponible dans PHP Tracer 5.9.0 et les versions ultérieures.

Méthodes de configuration

Configurez les traces de pile à l'aide de fichiers de configuration personnalisés, de variables d'environnement ou de la configuration de l'agent d' Instana.

Utilisez l'une des méthodes suivantes pour configurer les traces de pile :

Pour plus d'informations sur l'ordre de priorité entre les différentes méthodes de configuration, consultez la section « Ordre de priorité de la configuration pour les traces de pile ».

Option 1 : Configuration des traces de pile via un fichier de configuration personnalisé

Pour configurer les traces de pile, définissez la variable d'environnement INSTANA_CONFIG_PATH de manière à ce qu'elle pointe vers un fichier de configuration au format « YAML ».

Pour configurer les traces de pile via un fichier de configuration personnalisé, définissez la variable INSTANA_CONFIG_PATH d'environnement sur le chemin absolu du fichier ` YAML ` contenant votre configuration.

Remarque :
  • Le fichier de configuration personnalisé ne doit pas être un lien symbolique. Il doit disposer d'un droit de lecture (r) et tous ses répertoires parents doivent disposer d'un droit d'exécution (x) accordé à l'utilisateur ou au groupe exécutant le runtime PHP ou les processus de travail PHP.
  • Lorsque vous activez cette fonctionnalité pour la première fois ou que vous commencez avec une configuration vide d' YAML, redémarrez l'environnement d'exécution d' PHP après avoir mis à jour la configuration. Les modifications de configuration ultérieures prennent effet sans nécessiter un nouveau redémarrage.

Pour plus d'informations sur la configuration de la trace de pile, consultez la section « Configuration de la trace de pile ».

Exemple : pour collecter la trace de pile uniquement pour les segments erronés avec une profondeur de trace de 12, procédez comme suit :

  1. Créez un fichier « YAML » distinct et copiez-y la configuration suivante :
    tracing:
      global:
        stack-trace: error
        stack-trace-length: 12
  2. Définissez la variable d'environnement INSTANA_CONFIG_PATH en indiquant le chemin d'accès absolu du fichier « YAML » dans lequel le contenu est placé, comme suit :
    INSTANA_CONFIG_PATH=<your YAML file>
Remarque : le contenu du fichier de configuration est surveillé afin d'appliquer les modifications en temps réel. Placez le fichier dans un répertoire dédié afin de limiter les opérations superflues des API de surveillance des fichiers, qui pourraient entraîner une forte consommation de ressources CPU par les processus d' PHP.

Option 2 : Configuration des traces de pile via des variables d'environnement

Configurez le niveau et la profondeur de la trace de pile à l'aide des variables d'environnement INSTANA_STACK_TRACE et INSTANA_STACK_TRACE_LENGTH.

Vous pouvez également configurer le niveau et la longueur de la trace de pile à l'aide des variables INSTANA_STACK_TRACE d'environnement et INSTANA_STACK_TRACE_LENGTH.

Variable d"environnement Description Valeurs prises en charge
INSTANA_STACK_TRACE Niveau de trace de pile all (par défaut) : Collecter les traces de pile pour tous les segments

error: Ne collecter les traces de pile que pour les segments d'erreur

none: Désactiver la collecte des traces de pile

INSTANA_STACK_TRACE_LENGTH Profondeur de la trace de pile 125

Option 3 : Configuration des traces de pile via la configuration de l'agent « Instana »

Pour configurer les traces de pile, modifiez la section « com.instana.tracing.global » du fichier « configuration.yaml » de l'agent.

Pour configurer les traces de pile via la configuration de l'agent Instana, créez ou modifiez la com.instana.tracing.global section contenant la configuration des traces de pile dans le fichier de l'agent configuration.yaml .

Remarque : lorsque vous activez cette fonctionnalité pour la première fois ou que vous commencez avec une configuration vide d' YAML, redémarrez l'environnement d'exécution d' PHP après avoir mis à jour la configuration. Les modifications de configuration ultérieures prennent effet sans nécessiter un nouveau redémarrage.

Dans certains environnements d'exécution d' PHP, des étapes supplémentaires sont nécessaires lors de la configuration de la fonctionnalité de traces de pile via cette méthode. Pour plus d'informations, consultez la section « Étapes supplémentaires pour la configuration d' YAML ».

Pour plus d'informations sur la configuration de la trace de pile, consultez la section « Configuration de la trace de pile ».

Exemple : pour collecter la trace de pile de tous les spans dont la profondeur de trace est de 4, mettez à jour l'agent configuration.yaml à l'aide de l'extrait de code suivant :

com.instana.tracing:
  global:
    stack-trace: all
    stack-trace-length: 4

Configuration de la trace de pile

Utilisez la syntaxe « YAML » pour configurer les paramètres de niveau et de profondeur de la trace de pile.

Utilisez la syntaxe suivante d' YAML s pour définir la configuration de la trace de pile :

# Use 'tracing' section if using custom configuration file
# Use 'com.instana.tracing' section if using agent configuration.yaml file
tracing:
  global:
    stack-trace: <string>
    stack-trace-length: <int>
Zone Description Valeurs prises en charge
stack-trace Niveau de trace de pile all (par défaut) : Collecter les traces de pile pour tous les segments

error: Ne collecter les traces de pile que pour les segments d'erreur

none: Désactiver la collecte des traces de pile

stack-trace-length Profondeur de la trace de pile 125

Ordre de priorité des configurations pour les traces de pile

La configuration de la trace de pile est appliquée selon un ordre de priorité allant des fichiers de configuration personnalisés à la configuration de l'agent.

La configuration de la trace de pile est appliquée selon l'ordre de priorité suivant, classé du plus élevé au plus faible :

  1. Configuration de la trace de pile à partir du fichier de configuration personnalisé transmis via la variable d'environnement INSTANA_CONFIG_PATH.
  2. La configuration de la trace de pile est définie via les variables d'environnement INSTANA_STACK_TRACE et INSTANA_STACK_TRACE_LENGTH.
  3. La longueur de la trace de pile est définie via instana.backtrace_limit un paramètre INI.
  4. Configuration de la trace d'appel provenant du fichier de l'agent configuration.yaml .

La priorité est évaluée et appliquée séparément pour le mode de trace de pile et les paramètres de longueur de trace de pile, selon les différentes méthodes de configuration énumérées dans la section précédente.

Étapes supplémentaires pour la configuration d' YAML

Remarque : ces étapes ne s'appliquent que si vous utilisez la méthode de configuration par agent configuration.yaml pour configurer la désactivation des spans, le filtrage des spans et les traces de pile.

Le capteur « PHP » détecte les modifications apportées au fichier « agent configuration.yaml » et copie les sections « disable, », « global, » et filter « » de ce fichier com.instana.tracing dans un fichier distinct situé à l'emplacement « <System Temp>/instana-php/instana_span_filter_config.yaml». Le chemin d'accès absolu du fichier généré est attribué au paramètre instana.span_filter_config_file INI afin que PHP Tracer puisse détecter et appliquer toute modification ultérieure apportée à ce configuration.yaml fichier sans qu'il soit nécessaire de redémarrer l'environnement d'exécution PHP. Le moteur d'exécution d' PHP doit disposer d'un accès en lecture au dossier temporaire du système pour pouvoir lire la configuration.

Les sous-sections suivantes décrivent les étapes supplémentaires qui sont nécessaires dans certains environnements pour que le moteur d'exécution d' PHP dispose d'un accès suffisant au dossier temporaire du système.

Linux PHP Les environnements d'exécution fonctionnant en tant que service systemd avec la directive « PrivateTmp »

Configurez les services systemd à l'aide de la directive « PrivateTmp » afin de permettre à PHP Tracer d'accéder à la configuration de YAML.

Si votre exécutable PHP est un service systemd configuré avec la PrivateTmp directive, les processus PHP disposent alors de leur propre répertoire temporaire, isolé du répertoire temporaire du système hôte. Le capteur « PHP » ne peut pas écrire dans le répertoire temporaire du processus; par conséquent, le traceur « PHP » ne peut pas lire la configuration « YAML » dans ces environnements d'exécution « PHP ».

Si la désactivation de PrivateTmp ce paramètre dans le service systemd « PHP » ne répond pas à vos besoins, vous pouvez utiliser à la place un fichier de configuration personnalisé pour définir les règles de désactivation et de filtrage des spans ainsi que les traces de pile, sans avoir à désactiver ce paramètre PrivateTmp dans le service systemd « PHP ».

Sinon, si votre environnement d'exécution d' PHP n'a pas besoin de l'isolation du système de fichiers temporaires offerte par le PrivateTmp paramètre, vous pouvez désactiver PrivateTmp ce dernier pour le service systemd « PHP » en suivant les étapes ci-dessous et continuer à utiliser le fichier de l'agent configuration.yaml pour configurer les règles de désactivation des spans, les règles de filtrage des spans et les traces de pile :

  1. Modifiez le fichier de service systemd « PHP » en exécutant la commande suivante :
    sudo systemctl edit <systemd-service-unit-name>
    # systemd service names are usually named like apache2.service, php8.3-fpm.service, etc.,
  2. Définissez la PrivateTmp directive sur false dans la [Service] section :
    [Service]
    PrivateTmp=false
  3. Recharger la configuration de systemd
    systemctl daemon-reload
  4. Redémarrez le service systemd pour que les modifications prennent effet.

Windows Serveur IIS

Les processus de travail IIS n'ont parfois pas accès au dossier temporaire d' Windows. Cet accès insuffisant au dossier temporaire est dû au fait que l'identité du pool d'applications utilisée pour exécuter les processus de travail ne dispose pas des autorisations de lecture ou d'écriture suffisantes pour accéder à ce dossier. Pour résoudre ce problème d'accès, procédez comme suit :

  1. Vérifiez l'identité de votre pool d'applications en exécutant la commande suivante dans le terminal d' PowerShell :

    & $env:windir\system32\inetsrv\appcmd.exe list apppool <your AppPool> /text:processModel.identityType
     
  2. Si l'identité n'est pas correcte ApplicationPoolIdentity, exécutez la commande suivante pour la mettre à jour :

    & $env:windir\system32\inetsrv\appcmd.exe set AppPool <your AppPool> -processModel.identityType:ApplicationPoolIdentity
     
  3. Redémarrez votre pool d'applications pour que les modifications prennent effet :

    & $env:windir\system32\inetsrv\appcmd.exe recycle apppool <your AppPool>
     

    Le serveur IIS détecte le pool d'applications s'exécutant sous cette identité ApplicationPoolIdentityet crée un utilisateur virtuel portant le nom de votre pool d'applications.

  4. Pour accorder au moteur d'exécution d' PHP, c'est-à-dire aux processus de travail IIS, un accès en lecture au <SYSTEM_TEMP> répertoire, utilisez la commande suivante :

    
    icacls "<SYSTEM_TEMP>" /grant "IIS APPPOOL\<your AppPool>:(OI)(CI)R" /T /C
     

Désactivation de l'instrumentation

Pour désactiver l'instrumentation d'une bibliothèque spécifique ou d'un ensemble de bibliothèques à partir des paramètres INI d' PHP, utilisez le instana.disabled_instrumentation paramètre. Il prend la valeur du masque de bits correspondant aux bibliothèques pour lesquelles vous souhaitez désactiver le traçage. Pour connaître les valeurs des masques de bits des bibliothèques, consultez la Instrumentation flag colonne située dans la section « Bibliothèques et frameworks instrumentés ».

Pour désactiver l'instrumentation pour plusieurs bibliothèques, ajoutez les valeurs Instrumentation flag correspondantes. Par exemple, pour désactiver le traçage des appels à l'interface de programmation d'applications (API) de l' MongoDB (avec l'indicateur d'instrumentation : 32) et des appels au magasin de données de l' Redis (avec l'indicateur d'instrumentation : 16), ajoutez la ligne suivante dans votre fichier de paramètres INI :

instana.disabled_instrumentation=48 ; 32 + 16 = 48
 

Utilisez la fonctionnalité « Désactiver les segments » plutôt que le instana.disabled_instrumentation paramètre pour mieux contrôler la génération des segments dans votre Tracer d' PHP.

Redémarrages automatiques

Étant donné que l'extension « PHP Tracer » est une extension de l' PHP chargée dans le moteur d'exécution de l' PHP, l'activation ou la désactivation du traçage de l' PHP, ou la modification de la version de l'extension « PHP Tracer » installée, nécessite un redémarrage du moteur d'exécution de l' PHP pour que les modifications prennent effet.

Le capteur « PHP » est capable de redémarrer automatiquement et en douceur les environnements d'exécution Apache et PHP -FPM. Un redémarrage manuel est toutefois nécessaire dans les cas suivants lors de l'exécution d' PHP :

  • PHP Exécution avec CGI SAPI : vous devez redémarrer manuellement le moteur d'exécution d' PHP.
  • PHP Exécutions avec des processus de travail pré-forkés : vous devez redémarrer manuellement le processus maître PHP.

Vous pouvez automatiser les redémarrages manuels requis dans les cas précédents et modifier la manière dont le capteur d' PHP tente de redémarrer votre instance d'exécution d' PHP, en spécifiant un script de notification pour tracing.notificationScript dans la com.instana.plugin.php section du fichier de configuration.yaml l'agent.

Ce paramètre spécifie le chemin absolu vers un script shell exécutable ( Linux ) ou un script PowerShell ( Windows ). Lorsqu'un redémarrage du moteur d'exécution d' PHP est nécessaire, le capteur « PHP » exécute le script défini dans tracing.notificationScript au lieu d'utiliser ses commandes de redémarrage par défaut.

Éléments à prendre en compte lors de la conception du script de notification

Le script de notification s'exécute une fois par instance d' PHP, ce qui signifie qu'il se peut qu'il ne soit pas déclenché pour tous les processus exécutant le même fichier exécutable d' PHP. Pour charger l'extension de traçage « PHP » en mémoire, vous devez vous assurer que votre script redémarre tous les processus exécutés à partir du fichier exécutable « PHP ».

Lorsque ce script est configuré et exécuté avec succès, il remplace le mécanisme par défaut pour les redémarrages automatiques. Contrairement au mécanisme par défaut, le script s'exécute pour n'importe quel SAPI; il peut donc être utilisé pour automatiser les redémarrages dans les environnements CGI d' PHP. Si vous souhaitez désactiver complètement les redémarrages automatiques, configurez un script vide.

Le capteur « PHP » définit les variables d'environnement suivantes pour l'exécution du script :

INSTANA_EXT_VERSION_OLD = the version of the tracing extension currently in memory
INSTANA_EXT_VERSION_NEW = the version of the tracing extension after a restart
INSTANA_PID_HOST = the PID of the process on the host, e.g. your Apache, PHP-FPM or PHP-CGI
INSTANA_PID_CONTAINER = the PID the host process has in a container (if applicable)
INSTANA_CONTAINER = the ID/name of the container the process is running in (if applicable)
 

L'exemple suivant illustre un script qui consigne les modifications d'extension dans un fichier et redémarre Apache:

#!/bin/bash
echo "Found new tracing extension." >> php_update.log;
echo "INSTANA_EXT_VERSION_OLD=$INSTANA_EXT_VERSION_OLD" >> php_update.log;
echo "INSTANA_EXT_VERSION_NEW=$INSTANA_EXT_VERSION_NEW" >> php_update.log;
echo "INSTANA_PID_HOST=$INSTANA_PID_HOST" >> php_update.log;
echo "INSTANA_PID_CONTAINER=$INSTANA_PID_CONTAINER" >> php_update.log;
echo "INSTANA_CONTAINER=$INSTANA_CONTAINER" >> php_update.log;
echo "restarting apache" >> php_update.log;
apachectl -k graceful >> php_update.log;
 

Si votre Apache s'exécute dans un conteneur, remplacez la dernière ligne de l'exemple de script par la ligne suivante:

docker exec $INSTANA_CONTAINER apachectl -k graceful;
 

Pour l' PHP -FPM, vous pouvez envoyer une requête SIGUSR2 afin de le redémarrer en douceur, comme indiqué dans l'exemple suivant :

docker exec $INSTANA_CONTAINER kill -USR2 $INSTANA_PID_CONTAINER;
 

Un redémarrage en douceur charge l'extension PHP en mémoire sans redémarrer le processus principal. Par conséquent, ce chargement fonctionne même lorsque le processus s'exécute en tant que PID 1 dans le conteneur. Si vous ne pouvez pas ou ne souhaitez pas utiliser l'approche de redémarrage, vous pouvez également créer un instantané de l'instance de conteneur en cours d'exécution, l'arrêter et ouvrir facilement une nouvelle instance:

#!/bin/bash
IMAGE_HASH=$(docker inspect --format='{{.Config.Image}}' $INSTANA_CONTAINER)
IMAGE_NAME=$(docker images | grep $IMAGE_HASH | awk '{print $1}')
IMAGE_TAG="instana-php-$INSTANA_EXT_VERSION_NEW"
docker commit $INSTANA_CONTAINER $IMAGE_NAME:$IMAGE_TAG &&
docker stop $INSTANA_CONTAINER &&
docker run -d --rm $IMAGE_NAME:$IMAGE_TAG
 

Cette action utilise l'ID conteneur transmis au script pour rechercher le nom de l'image de conteneur. Il valide ensuite le conteneur en cours d'exécution dans une nouvelle image, à laquelle est attribuée une balise indiquant le numéro de version de l'extension PHP. Il arrête ensuite le conteneur d'origine et démarre un conteneur à partir de l'image nouvellement balisée. Bien que cette action relance la procédure d'installation du capteur « PHP », elle ne déclenche pas à nouveau le script de notification, car l'extension est déjà installée.

Ces exemples partent du principe que vous utilisez Docker comme moteur de conteneurs. Mais comme le script de shell déclenché est entièrement sous votre contrôle, vous pouvez mettre toute logique dont vous avez besoin pour que les redémarrages automatiques fonctionnent pour votre configuration.

Désactivation du suivi d' PHP

Pour désactiver le suivi d' PHP, procédez comme suit :

  1. Dans la com.instana.plugin.php section du fichier de configuration.yaml l'agent, définissez la valeur tracing.enabled sur false. Si le fichier configuration.yaml d'agent ne contient pas la com.instana.plugin.php section, vous devez l'ajouter comme suit :

    com.instana.plugin.php:
      tracing:
        enabled: false
     
    Remarque : le fait de mettre en commentaire la com.instana.plugin.php section ne désactive pas le traçage de l' PHP, car celui-ci est activé par défaut.

    Le capteur « PHP » supprime automatiquement les paramètres INI de l'extension « PHP Tracing » du fichier de configuration INI « PHP ». Ensuite, il tente de redémarrer en douceur le moteur d'exécution d' PHP afin de supprimer l'extension de traçage PHP de la mémoire. Une fois que le moteur d'exécution d' PHP s a été redémarré avec succès, le traçage d' PHP s est complètement désactivé.

  2. Si le capteur PHP ne parvient pas à redémarrer automatiquement le moteur d'exécution PHP, redémarrez manuellement le moteur d'exécution PHP afin de désactiver complètement le traçage PHP. La capacité du capteur « PHP » à redémarrer automatiquement le moteur d'exécution « PHP » dépend du type de SAPI. Vous pouvez contrôler ce comportement et automatiser le redémarrage du moteur d' PHP, nécessaire pour supprimer le traceur PHP de la mémoire. Pour plus d'informations, voir Redémarrages automatiques.

    Remarque : vous devez lire la section « Redémarrages automatiques » et déterminer avec soin si votre instance d' PHP doit être redémarrée manuellement pour supprimer l'extension de traçage PHP de la mémoire.
  3. Vérifiez que l'extension de traçage « PHP » n'est plus activée dans votre environnement d'exécution PHP, en vous assurant qu'elle ne instana figure pas dans la liste des extensions activées dans votre fichier de configuration INI PHP. Vous pouvez obtenir la liste des extensions d' PHP s activées en exécutant le binaire « PHP » utilisé par votre environnement d'exécution PHP avec l'option -m. L'exemple suivant montre comment répertorier les extensions d' PHP s activées à l'aide du php-fpm binaire :

    $> php-fpm -m
    [PHP Modules]
    curl
    json
    PDO
    sqlite3
    Zend OPcache
    zlib
    
    [Zend Modules]
    Zend OPcache
     
    Remarque : pour vérifier si l'extension de traçage « PHP » est désactivée dans « Apache » avec le mod_php runtime, créez un script « PHP » contenant le contenu <?php phpinfo(); indiqué dans le répertoire racine du serveur web afin que Apache puisse servir ce script. Vous pouvez ensuite ouvrir l'URL URL dans votre navigateur et vérifier que ne instana figure pas dans la liste des extensions PHP activées.

    Si vous rencontrez des erreurs au cours de cette procédure, vous pouvez désactiver manuellement le suivi d' PHP s et désinstaller l'extension « PHP Tracing ». Pour plus d'informations, consultez la section « Désactivation manuelle du suivi d' PHP ».

La désinstallation de l'agent Instana ne supprime pas automatiquement l'extension de traçage PHP des environnements d'exécution PHP qui ont déjà été instrumentés. Avant de désinstaller l'agent Instana, désactivez le traçage PHP afin de désinstaller l'extension de traçage PHP de tous les environnements d'exécution PHP présents sur l'hôte. Pour plus d'informations, consultez la section « Désinstallation de l'agent Instana ».

Désactivation de l'installation de l'extension de suivi d' PHP

Pour désactiver l'installation automatique de l'extension de traçage d' PHP dans les environnements d'exécution d' PHP nouvellement détectés, définissez tracing.installExtension sur false dans la com.instana.plugin.php section du fichier de configuration.yaml l'agent :

com.instana.plugin.php:
  tracing:
    enabled: true
    installExtension: false
 
Remarque : cette configuration ne désactive pas l'extension de traçage Instana PHP dans les environnements d'exécution PHP où elle est déjà installée.

Traitement des incidents

Absence de traces d' PHP s dans l'interface utilisateur d' Instana

Important : assurez-vous d'utiliser une version prise en charge d' PHP. Pour plus d'informations, consultez la section « Versions d' PHP prises en charge ».

Si vous utilisez Plesk, vous devez exécuter plesk bin php_handler --reread.

Si aucune trace n'apparaît dans l'interface utilisateur d' Instana pour les applications PHP, procédez comme suit :

  1. Vérifiez les prérequis suivants:

  2. Rechargez l'extension de traçage d' PHP s en exécutant la commande reload suivante sur le service qui exécute les applications PHP :

    • Pour Apache:

      systemctl reload apache2
       
    • Pour l' PHP -FPM :

      systemctl reload php<version>-fpm
       

      Remplacez < version> dans la commande de rechargement par la version réelle installée sur le système.

Si vous ne voyez toujours aucune trace dans l'interface utilisateur d' Instana et que votre système d'exploitation intègre SELinux par défaut ou l'ajoute à l'environnement à des fins de sécurité, SELinux pourrait être à l'origine du problème.

L'extension Tracer d' PHP communique avec le démon PHP via le socket Unix TCP<socket path> et avec l'agent Instana via le port 42699 de TCP/IP. Lorsque SELinux est configuré en mode « enforcing », il empêche l'extension et le démon « PHP » de communiquer entre eux, à moins que SELinux ne soit configuré pour l'autoriser.

Pour vérifier si SELinux est à l'origine du problème, vérifiez /var/log/audit/audit.log s'il y a des refus silencieux enregistrés pour le démon ` PHP `. Vous pouvez également effectuer un test de fonctionnement en suivant les étapes suivantes :

  1. Désactivez temporairement SELinux.
  2. Redémarrez le démon « PHP ».

Si SELinux est identifié comme étant à l'origine du problème, vous pouvez le résoudre en utilisant l'une des options suivantes :

  • Configurer SELinux pour autoriser la communication d' PHP Tracer : avec SELinux, vous pouvez suivre vos propres règles de sécurité pour configurer une stratégie personnalisée permettant cette communication. Pour plus d'informations sur la création et la modification des politiques SELinux, consultez les liens suivants :

  • Configurez SELinux en mode permissif : dans ce mode, vos services peuvent fonctionner sans restrictions. Vous pouvez rétablir les paramètres par défaut en redémarrant le serveur. Pour configurer SELinux en mode permissif, consultez la section « Mode permissif de SELinux ».

  • Désactiver SELinux : Instana ne vous recommande pas expressément de désactiver ce logiciel de sécurité. Une approche appropriée et sûre consiste à créer une stratégie SELinux. Toutefois, si vous décidez de désactiver SELinux, consultez la section « Désactiver SELinux ».

Activer la journalisation

Par défaut, la consignation est désactivée. Pour l'activer, reportez-vous aux étapes suivantes.

  • Activez la journalisation à l'aide de variables d'environnement.
    1. Pour définir le niveau de journalisation sur « debug », définissez INSTANA_DEBUG sur TRUE ou INSTANA_LOG_LEVEL=4
  • Activez la journalisation à l'aide du fichier INI.
    1. Recherchez un fichier nommé zzz-instana.ini dans le répertoire scan de votre installation d' PHP. Par exemple, l'exécution de php --ini | grep zzz-instana.ini ou de php-fpm<version> -i | grep zzz-instana.ini révèle son emplacement.

    2. Ajoutez la ligne instana.log_level=4 à zzz-instana.ini.

    3. Lorsque vous exécutez le runtime PHP de votre choix, assurez-vous que la sortie contient des informations de journalisation et que l'extension est activée. Par exemple, vous pouvez exécuter php --ri instana ou php-fpm<version> -i | grep instana pour vérifier.

      Exemple :

      [instana.INFO] Initializing, logging at level 4
       
    4. Rechargez l'extension de traçage « PHP » comme indiqué ici. Si vous ignorez cette étape, aucune journalisation n'aura lieu.

Remarque : les journaux sont acheminés vers l'environnement d'exécution d' PHP, dans lequel l'extension de traçage PHP est installée; leur emplacement exact dépend donc fortement de la configuration de cet environnement. Les emplacements habituels sont notamment /var/log/apache2/error.log pour Apache2 et /var/log/php<version>-fpm.log pour PHP -FPM.

Installation manuelle de l'extension « PHP Tracing »

Pour installer manuellement l'extension « PHP Tracing », procédez comme suit :

  1. Téléchargez l'extension de traçage « Instana » PHP en procédant comme suit :

    1. Téléchargez le script shell à partir du dépôt suivant :

      https://artifact-public.instana.io/artifactory/shared/com/instana/php/instana-ext-download-script/php-instana-ext-download-script.sh
       
    2. Exécutez le script shell pour télécharger l'extension adaptée à votre environnement. La commande suivante affiche les options disponibles :

      ./php-instana-ext-download-script.sh -a <aarch64/x86_64> -l <musl/glibc> -p <PHP version> -t <NTS/ZTS> -d <serverless/native> -s <OpenSSL version> -v <Instana extension version>
       
      • Pour la version « PHP », indiquez les numéros de version majeure et mineure. Par exemple, pour télécharger l'extension « Instana » pour PHP 8.4.12, exécutez le script shell avec l'option -p 8.4.

      • Pour la version d' OpenSSL, utilisez l'option -s ssl1 pour télécharger l'extension compatible avec OpenSSL 1.1 ou utilisez -s ssl3 pour télécharger l'extension compatible avec OpenSSL 3.x.

      • Pour la version de l'extension « Instana », la valeur par défaut est release, ce qui permet de télécharger la dernière version disponible. Utilisez -v l'indicateur pour télécharger l'artefact correspondant à une version spécifique. Par exemple, exécutez le script avec -v 4.7.0 pour télécharger l'extension dans sa version finale 4.7.0.

      • Pour afficher toutes les options disponibles pour le script, exécutez la commande suivante :

        ./php-instana-ext-download-script.sh
         
  2. Installez l'extension comme suit :

    1. Déplacez le fichier .so téléchargé dans le répertoire de l'extension CLI d' PHP.

    2. Créez un fichier INI, zzz-instana.ini comme indiqué dans l'exemple suivant, puis enregistrez-le dans le répertoire INI supplémentaire de l'interface CLI d' PHP. Remplacez <hostIP> par l'adresse IP de l'hôte de l'agent Instana afin que l'agent soit accessible depuis l'environnement PHP.

      ; this file was automatically generated by Instana
      ;
      ; any changes made to this file are expected to be overwritten when
      ; a new version of the Instana PHP Tracer extension is installed
      [instana]
      extension=<php cli extension dir path where extension.so file is placed>
      instana.socket=<hostIP>:16816
      instana.agent_endpoint=http://<hostIP>:42699
      instana.use_agent_endpoint=1
      instana.auto_profile_socket=tcp://<hostIP>:42699
      instana.enable_auto_profile=0
      instana.secrets_matcher=contains-ignore-case
      instana.secrets_list="key,pass,secret"
      instana.extra_http_headers=
      instana.pid_in_root_namespace=<pid of PHP process in hostnamespace>
      instana.enable_cli=1
       

Désactivation manuelle du suivi d' PHP

En suivant les étapes décrites dans la section « Désactivation du traçage d' PHP », vous désactivez complètement le traçage d' PHP, ce qui implique notamment la suppression de l'extension « PHP Tracing » de votre environnement d'exécution PHP.

Si vous rencontrez des erreurs au cours de cette procédure et que vous souhaitez désactiver manuellement le traçage d' PHP s et désinstaller l'extension « PHP Tracing », procédez comme suit :

  1. Assurez-vous que le suivi d' PHP s est désactivé dans le fichier de configuration.yaml l'agent comme suit :

    com.instana.plugin.php:
      tracing:
        enabled: false
     

    Cette configuration empêche le capteur « PHP » de réinstaller l'extension « PHP Tracing ».

  2. Désactivez l'extension de traçage « PHP » dans le fichier de configuration INI de votre serveur PHP. Voir la section « Désactivation de l'extension de traçage d' PHP ».

  3. Supprimez le fichier de l'extension « PHP Tracing » de votre système. Voir la section « Suppression du fichier d'extension de traçage d' PHP ».

Désactivation de l'extension PHP Tracing

Lorsque le capteur PHP a installé l'extension, il l'a également activée pour votre installation PHP. L'activation de l'extension signifie que le capteur d' PHP s a soit placé le zzz-instana.ini fichier dans votre Additional Ini files dossier, soit l'a activé directement dans votre php.ini.

Pour savoir où l'extension a été activée, exécutez le fichier binaire php pour lequel vous avez activé le traçage. L'exemple suivant montre comment identifier la configuration d'un binaire FPM d' PHP :

$> php-fpm7.0 -i | egrep "^(Scan|Loaded)"
Loaded Configuration File => /etc/php/7.0/fpm/php.ini
Scan this dir for additional .ini files => /etc/php/7.0/fpm/conf.d
 

Dans cet exemple, le fichier zzz-instana.ini se trouve dans /etc/php/7.0/fpm/conf.d. Si aucun Additional Ini files dossier n'est disponible ou si le zzz-instana.ini fichier n'existe pas à cet emplacement, vérifiez plutôt php.ini votre Dans cet exemple, le fichier se trouve dans /etc/php/7.0/fpm/php.ini.

Sur Windows, exécutez la commande suivante dans l' PowerShell e pour obtenir l'emplacement du php.ini fichier ou du Additional Ini files dossier pour PHP -CGI :

PS C:\> php-cgi -i | Select-String -Pattern '(Scan|Loaded Configuration)' | ForEach-Object { ($_ -replace '<br\s*/?>', "`n") -replace '<[^>]+>', ''}
Loaded Configuration File C:\Php\php.ini
Scan this dir for additional .ini files (none)
 
Remarque : pour les serveurs Apache utilisant mod_php, placez un fichier PHP contenant le contenu <?php phpinfo(); dans un répertoire accessible via le Web sur Apache et ouvrez-le dans un navigateur pour obtenir les mêmes informations.

Pour désactiver l'extension de suivi « PHP », procédez comme suit :

  1. Ouvrez le fichier ini approprié dans un éditeur et préfixez le point-virgule (;) sur la ligne extension=/path/to/instana.so comme suit. L'ajout d'un point-virgule met la ligne en commentaire.

    ;extension=/path/to/instana.so

    Vous pouvez également supprimer complètement la ligne extension=/path/to/instana.so . Ne le supprimez pas si vous prévoyez d'activer l'extension ultérieurement.

  2. Si vous disposez du fichier zzz-instana.ini , vous pouvez également le supprimer complètement comme suit:

    $> sudo rm /etc/php/7.0/fpm/conf.d/zzz-instana.ini
     

    Sous Windows Windows, vous pouvez supprimer le fichier en exécutant la commande suivante dans l' PowerShell e (en tant qu'administrateur) :

    PS C:\> Remove-Item -Path C:\Php\conf\zzz-instana.ini
     
    Important: ne supprimez pas la totalité de votre fichier php.ini .
  3. Redémarrez votre instance d' PHP pour supprimer l'extension de traçage PHP de la mémoire. Si votre instance d'exécution d' PHP utilise des workers pré-forkés, vous devez redémarrer dès maintenant le processus maître d' PHP.

Remarque : la désactivation de l'extension n'entraîne pas la suppression du fichier de l'extension de votre système.

Suppression du fichier d'extension de traçage « PHP »

PHP Le système enregistre les erreurs de démarrage lorsqu'il ne parvient pas à trouver une extension; par conséquent, avant de supprimer l'extension, vous devez également la désactiver. Pour plus d'informations, consultez la section « Désactivation de l'extension de traçage d' PHP ».

Le capteur « PHP » place l'extension de suivi Instana PHP dans le répertoire indiqué dans le extension_dir paramètre de votre fichier php.ini. Pour rechercher ce paramètre, exécutez le fichier binaire php pour lequel vous avez activé le traçage. L'exemple suivant montre comment identifier la configuration d'un binaire FPM d' PHP :

$> php-fpm7.0 -i | egrep ^extension_dir
extension_dir => /usr/lib/php/20151012 => /usr/lib/php/ext
 
Remarque : pour les serveurs Apache utilisant mod_php, placez un fichier PHP contenant le contenu <?php phpinfo(); dans un répertoire accessible via le Web sur Apache et ouvrez-le dans un navigateur pour obtenir les mêmes informations.

Le capteur « PHP » n'utilise que la première valeur; dans l'exemple, vous pouvez donc trouver l'extension à l'adresse /usr/lib/php/20151012. L'emplacement de l'extension est également indiqué dans votre php.ini fichier ou dans le zzz-instana.ini fichier.

Sous Windows Windows, vous pouvez exécuter la commande suivante dans l' PowerShell pour le savoir extension_dir:

PS C:\> php-cgi -i | Select-String -Pattern 'extension_dir' | ForEach-Object { ($_ -replace '<br\s*/?>', "`n") -replace '<[^>]+>', ' '}
  extension_dir  C:\php\ext  C:\php\ext
 

Pour supprimer l'extension, exécutez la commande suivante:

$> sudo rm /usr/lib/php/20151012/instana.so
 

Sous Windows Windows, vous pouvez supprimer le fichier en exécutant la commande suivante dans l' PowerShell e (en tant qu'administrateur) :

PS C:\> Remove-Item -Path C:\Php\ext\instana.dll
 

Si vous utilisez des workers pré-forkés et que vous n'avez pas encore redémarré le processus maître d' PHP s lorsque vous avez désactivé l'extension, vous devez le redémarrer pour que les modifications prennent effet.