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.
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 :
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.inifichier 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.iniprincipal.
Ne le modifiez
zzz-instana.inipas, car le capteur « PHP » le remplace à chaque installation en fonction des configurations définies dans le fichier deconfiguration.yamll'agent « Instana ».- 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
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.
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.
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 ».
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 est1: -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 leinstana.backtrace_limitparamè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 deconfiguration.yamll'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,HEADER2Configuration 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.
- 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 :
Créez un fichier « YAML » distinct et copiez-y la configuration suivante :
tracing: disable: - databases: true - mongodb: false - logging: trueDéfinissez la variable d'environnement
INSTANA_CONFIG_PATHsur le chemin absolu du fichier ` YAML ` dans lequel le contenu est placé, comme suit :INSTANA_CONFIG_PATH=<your YAML file>
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 .
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 :
- Bases de données
- infrastructures
- messagerie
- protocoles
- Journalisation
- Création de modèles
- Autres (aucune clé de catégorie n'est disponible pour les autres)
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 :
- Applique les règles de désactivation issues du fichier de configuration personnalisé transmis via la
INSTANA_CONFIG_PATHvariable d'environnement. - La désactivation de Span est configurée dans le fichier
instana.disabled_instrumentationINI. - Règles de désactivation de Span issues du fichier de
configuration.yamll'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.
- 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 :
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: endswithDéfinissez la variable d'environnement
INSTANA_CONFIG_PATHsur le chemin absolu du fichier ` YAML ` dans lequel le contenu est placé, comme suit :INSTANA_CONFIG_PATH=<your YAML file>
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 .
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.
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 »
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 |
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 |
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, |
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 |
gcps , tandis que ceux relatifs à un instantané sont précédés du préfixe gcpsa.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 |
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 |
| 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.comet 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:MyApprequê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
GETméthode ouPOST, ainsi qu'un URL se terminant par/login,/cart/add, ou/payment/checkout. - Inclure les segments de monologue contenant le message
erroroufail.
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 :
- Configuration de la désactivation de Span via un fichier de configuration personnalisé
- Configuration du filtrage par plage via un fichier de configuration personnalisé
- Configuration de la désactivation de Span via le
configuration.yamlfichier de l'agent - Configuration du filtrage par plage via le
configuration.yamlfichier 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.
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.statusattributs ouhttp.header.<response-header-name>span ne permet pas d'appliquer la suppression. - Exclure les règles basées sur les
http.route_idattributs ouhttp.path_tplspan.
- 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
- 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 :
- Fichier de configuration personnalisé
- Variables d'environnement
- Instana fichier d'agent configuration.yaml
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.
- 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 :
- Créez un fichier « YAML » distinct et copiez-y la configuration suivante :
tracing: global: stack-trace: error stack-trace-length: 12 - 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>
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
|
| INSTANA_STACK_TRACE_LENGTH | Profondeur de la trace de pile | 1 – 25 |
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 .
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
|
stack-trace-length |
Profondeur de la trace de pile | 1 – 25 |
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 :
- Configuration de la trace de pile à partir du fichier de configuration personnalisé transmis via la variable d'environnement INSTANA_CONFIG_PATH.
- La configuration de la trace de pile est définie via les variables d'environnement INSTANA_STACK_TRACE et INSTANA_STACK_TRACE_LENGTH.
- La longueur de la trace de pile est définie via
instana.backtrace_limitun paramètre INI. - 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
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 :
- 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., - Définissez la
PrivateTmpdirective surfalsedans la[Service]section :[Service] PrivateTmp=false - Recharger la configuration de systemd
systemctl daemon-reload - 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 :
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.identityTypeSi 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:ApplicationPoolIdentityRedé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.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 :
Dans la
com.instana.plugin.phpsection du fichier deconfiguration.yamll'agent, définissez la valeurtracing.enabledsurfalse. Si le fichierconfiguration.yamld'agent ne contient pas lacom.instana.plugin.phpsection, vous devez l'ajouter comme suit :com.instana.plugin.php: tracing: enabled: falseRemarque : le fait de mettre en commentaire lacom.instana.plugin.phpsection 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é.
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.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
instanafigure 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 duphp-fpmbinaire :$> php-fpm -m [PHP Modules] curl json PDO sqlite3 Zend OPcache zlib [Zend Modules] Zend OPcacheRemarque : pour vérifier si l'extension de traçage « PHP » est désactivée dans « Apache » avec lemod_phpruntime, 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 neinstanafigure 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
Traitement des incidents
Absence de traces d' PHP s dans l'interface utilisateur d' Instana
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 :
Vérifiez les prérequis suivants:
- Le capteur « PHP » est activé. Pour plus d'informations, consultez la section « Désactivation du traçage d' PHP ».
- Le fichier binaire de l'extension « Tracing » d' PHP est disponible. Pour plus d'informations, consultez la section « Désactivation de l'extension de traçage d' PHP ».
- L'extension de traçage « PHP » est activée dans le fichier de configuration de l'agent. Pour plus d'informations, consultez la section « Suppression du fichier d'extension de traçage d' PHP ».
Rechargez l'extension de traçage d' PHP s en exécutant la commande
reloadsuivante sur le service qui exécute les applications PHP :Pour Apache:
systemctl reload apache2Pour l' PHP -FPM :
systemctl reload php<version>-fpmRemplacez < 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 :
- Désactivez temporairement SELinux.
- 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.
- Pour définir le niveau de journalisation sur « debug », définissez
INSTANA_DEBUGsurTRUEouINSTANA_LOG_LEVEL=4
- Pour définir le niveau de journalisation sur « debug », définissez
- Activez la journalisation à l'aide du fichier INI.
Recherchez un fichier nommé
zzz-instana.inidans le répertoire scan de votre installation d' PHP. Par exemple, l'exécution dephp --ini | grep zzz-instana.iniou dephp-fpm<version> -i | grep zzz-instana.inirévèle son emplacement.Ajoutez la ligne
instana.log_level=4àzzz-instana.ini.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 instanaouphp-fpm<version> -i | grep instanapour vérifier.Exemple :
[instana.INFO] Initializing, logging at level 4Rechargez l'extension de traçage « PHP » comme indiqué ici. Si vous ignorez cette étape, aucune journalisation n'aura lieu.
/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 :
Téléchargez l'extension de traçage « Instana » PHP en procédant comme suit :
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.shExé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 ssl1pour télécharger l'extension compatible avec OpenSSL 1.1 ou utilisez-s ssl3pour 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-vl'indicateur pour télécharger l'artefact correspondant à une version spécifique. Par exemple, exécutez le script avec-v 4.7.0pour 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
Installez l'extension comme suit :
Déplacez le fichier
.sotéléchargé dans le répertoire de l'extension CLI d' PHP.Créez un fichier INI,
zzz-instana.inicomme 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 :
Assurez-vous que le suivi d' PHP s est désactivé dans le fichier de
configuration.yamll'agent comme suit :com.instana.plugin.php: tracing: enabled: falseCette configuration empêche le capteur « PHP » de réinstaller l'extension « PHP Tracing ».
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 ».
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)
<?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 :
Ouvrez le fichier
iniapproprié dans un éditeur et préfixez le point-virgule (;) sur la ligneextension=/path/to/instana.socomme suit. L'ajout d'un point-virgule met la ligne en commentaire.;extension=/path/to/instana.soVous 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.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.iniSous 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.iniImportant: ne supprimez pas la totalité de votre fichierphp.ini.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.
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
<?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.