Nouvelles annonces sur les technologies sans serveur et réseau ainsi que sur le RUM (Real-User Monitoring) dévoilées à la conférence Dash ! Nouvelles annonces dévoilées à la conférence Dash !

Tracer des applications PHP

Installation et démarrage

Pour connaître la définition des termes utilisés dans l’APM, consultez la documentation officielle.

Pour découvrir comment effectuer des contributions open source au traceur PHP, consultez le guide relatif aux contributions.

Configurer l’Agent Datadog

Le traceur de l’APM PHP envoie les données de trace en passant par l’Agent Datadog.

Installez et configurez l’Agent Datadog. Consultez la documentation supplémentaire relative au traçage d’applications Docker ou au traçage d’applications Kubernetes.

Assurez-vous que l’APM est activé dans le fichier de configuration de l’Agent.

Installer l’extension

Installez l’extension PHP à l’aide de l’un des paquets pré-compilés pour les distributions prises en charge.

Une fois téléchargé, installez le paquet avec l’une des commandes ci-dessous.

# avec le paquet RPM (RHEL/Centos 6+, Fedora 20+)
$ rpm -ivh datadog-php-tracer.rpm

# avec le paquet DEB (Debian Jessie+ , Ubuntu 14.04+)
$ dpkg -i datadog-php-tracer.deb

# avec le paquet APK (Alpine)
$ apk add datadog-php-tracer.apk --allow-untrusted

Redémarrez PHP (PHP-FPM ou le SAPI Apache), puis consultez un endpoint de votre application pour lequel le tracing est activé. Affichez l’interface de l’APM pour visualiser les traces.

Remarque : quelques minutes peuvent s’écouler avant que les traces soient visibles dans l’interface graphique.

Si vous ne trouvez pas votre distribution, vous pouvez installer manuellement l’extension PHP.

Instrumentation automatique

Le tracing est automatiquement instrumenté par défaut. Une fois l’extension installée, ddtrace trace votre application et envoie les traces à l’Agent.

Même si Datadog ne prend pas officiellement en charge votre framework Web, une instrumentation manuelle n’est pas forcément nécessaire. Datadog enregistre les requêtes Web génériques et crée des traces génériques pour celles-ci. Toutefois, lorsque vous utilisez l’un des frameworks pris en charge, Datadog définit des métadonnées plus pertinentes, ce qui facilite la navigation dans vos services.

L’instrumentation automatique fonctionne en modifiant l’exécution de PHP pour wrapper certaines fonctions et méthodes afin de les tracer. Le traceur PHP prend en charge l’instrumentation automatique pour plusieurs bibliothèques.

L’instrumentation automatique capture :

  • Le temps d’exécution de la méthode
  • Les données de trace pertinentes, telles que l’URL et les codes de réponse de statut pour les requêtes Web ou les requêtes SQL pour l’accès à la base de données
  • Les exceptions non traitées, y compris les traces de pile si disponibles
  • Le nombre total de traces (p. ex. les requêtes Web) transmises via le système

Modifier le hostname de l’Agent

Configurez vos traceurs d’applications de façon à envoyer des traces à un hostname d’Agent personnalisé :

Le traceur PHP recherche automatiquement les variables ENV DD_AGENT_HOST et DD_TRACE_AGENT_PORT puis s’initialise avec celles-ci.

Consultez la configuration du traceur pour découvrir comment définir ces variables.

Compatibilité

L’APM PHP prend en charge les versions PHP suivantes :

VersionType de prise en charge
7.3.xPrise en charge complète
7.2.xPrise en charge complète
7.1.xPrise en charge complète
7.0.xPrise en charge complète
5.6.xPrise en charge complète
5.4.xPrise en charge complète

L’APM PHP prend en charge les SAPI suivantes :

SAPIType de prise en charge
apache2handlerPrise en charge complète
cliPrise en charge complète
fpmPrise en charge complète

Les intégrations

Compatibilité des frameworks Web

Si le framework Web que vous utilisez ne figure pas dans la liste ci-dessous, vous pouvez toujours consulter les traces pour vos requêtes Web depuis l’interface. Toutefois, il est possible que certaines métadonnéees et spans très spécifiques à ce framework Web ne s’affichent pas.

ModuleVersionsType de prise en charge
CakePHP2.xPrise en charge complète
Laravel4.2, 5.xPrise en charge complète
Lumen5.2+Prise en charge complète
Slim3.xPrise en charge complète
Symfony2.x, 3.3, 3.4, 4.xPrise en charge complète
Framework Zend1.12Prise en charge complète
CodeIgniter2, 3Disponible prochainement
DrupalDisponible prochainement
Magento2Disponible prochainement
Phalcon1.3, 3.4Disponible prochainement
WordpressDisponible prochainement
Yii1.1Disponible prochainement

Votre framework préféré n’est pas disponible ? Datadog élargit continuellement la liste des frameworks pris en charge. Contactez l’équipe Datadog pour obtenir de l’aide.

Compatibilité des bibliothèques CLI

Le tracing depuis le CLI SAPI est désactivé par défaut. Pour activer le tracing des scripts CLI PHP, définissez DD_TRACE_CLI_ENABLED=true.

ModuleVersionsType de prise en charge
Laravel Artisan5.xPrise en charge complète
Console SymfonyDisponible prochainement

Votre bibliothèque CLI préférée n’est pas disponible ? Datadog élargit continuellement la liste des bibliothèques prises en charge. Contactez l’équipe Datadog pour obtenir de l’aide.

Compatibilité des datastores

ModuleVersionsType de prise en charge
Amazon RDS (avec PDO ou MySQLi)(Toute version de PHP prise en charge)Prise en charge complète
Console CakePHP2.xPrise en charge complète
Elasticsearch1.xPrise en charge complète
EloquentVersions prises en charge par LaravelPrise en charge complète
Memcached(Toute version de PHP prise en charge)Prise en charge complète
MongoDB1.4.xPrise en charge complète
MySQLi(Toute version de PHP prise en charge)Prise en charge complète
PDO (MySQL, PostgreSQL, MariaDB)(Toute version de PHP prise en charge)Prise en charge complète
Predis1.1Prise en charge complète
AWS CouchbaseAWS PHP SDK 3Disponible prochainement
AWS DynamoDBAWS PHP SDK 3Disponible prochainement
AWS ElastiCacheAWS PHP SDK 3Disponible prochainement
Doctrine ORM2Disponible prochainement
ODBC(Toute version de PHP prise en charge)Disponible prochainement
PHPredis4Disponible prochainement
Solarium4.2Disponible prochainement

Votre datastore préféré n’est pas disponible ? Datadog élargit continuellement la liste des datastores pris en charge. Contactez l’équipe Datadog pour obtenir de l’aide.

Compatibilité des bibliothèques

ModuleVersionsType de prise en charge
Curl(Toute version de PHP prise en charge)Prise en charge complète
Guzzle5.xPrise en charge complète
Guzzle6.xPrise en charge complète
BeanstalkdDisponible prochainement
ReactPHPDisponible prochainement

Vos bibliothèques préférées ne sont pas disponibles ? Datadog élargit continuellement la liste des bibliothèques prises en charge. Contactez l’équipe Datadog pour obtenir de l’aide.

Configuration

Le traceur PHP peut être configuré à l’aide de variables d’environnement.

Remarque : si vous utilisez l’instrumentation automatique du code (la méthode conseillée), rappelez-vous que le code instrumenté s’exécute avant le code utilisateur. Par conséquent, les variables d’environnement ci-dessous doivent être définies au niveau du serveur et mises à disposition de l’environnement d’exécution PHP avant l’exécution de tout code utilisateur. Par exemple, putenv() et les fichiers .env ne fonctionneraient pas.

Apache

Défini avec SetEnv depuis la configuration du serveur, le host virtuel, le répertoire ou le fichier .htaccess.

SetEnv DD_TRACE_DEBUG true

NGINX

Défini avec fastcgi_param depuis les contextes http, server, ou location.

fastcgi_param DD_TRACE_DEBUG true;

Serveur CLI PHP

Défini depuis la ligne de commande pour démarrer le serveur.

DD_TRACE_DEBUG=true php -S localhost:8888

Configuration des variables d’environnement

Variable d’environnementValeur par défautRemarque
DD_AGENT_HOSTlocalhostLe hostname de l’Agent
DD_AUTOFINISH_SPANSfalseDéfinit si les spans doivent être automatiquement finalisées ou non lorsque le traceur est vidé
DD_TRACE_CLI_ENABLEDfalseActive le tracing de scripts PHP depuis le CLI
DD_DISTRIBUTED_TRACINGtrueDéfinit si le tracing distribué doit être activé ou non
DD_INTEGRATIONS_DISABLEDnullListe au format CSV des extensions désactivées ; p. ex. curl,mysqli
DD_SAMPLING_RATE1.0Le taux d’échantillonnage des traces. Entre 0.0 et 1.0 (par défaut)
DD_SERVICE_NAME``Le nom par défaut de l’application
DD_TRACE_AGENT_PORT8126Le port de l’Agent
DD_TRACE_AGENT_TIMEOUT500Le temps maximum que l’Agent est autorisé à prendre (en millisecondes)
DD_TRACE_AGENT_CONNECT_TIMEOUT100Le temps maximum autorisé pour la configuration de la connexion de l’Agent (en millisecondes)
DD_TRACE_ANALYTICS_ENABLEDfalseFlag pour activer les analyses de traces pour les spans pertinentes dans les intégrations Web
DD_TRACE_DEBUGfalseActiver le mode debugging pour le traceur
DD_TRACE_ENABLEDtrueActiver le traceur partout
DD_TRACE_GLOBAL_TAGS``Tags à appliquer à toutes les spans : p. ex. key1:value1,key2:value2
DD_<INTEGRATION>_ANALYTICS_ENABLEDfalseFlag pour activer les analyses de traces pour les spans pertinentes dans une intégration spécifique

Pour aller plus loin