Présentation
Le check PHP-FPM permet de surveiller l’état de votre pool FPM ainsi que les performances de vos requêtes.
Configuration
Installation
Le check PHP-FPM est inclus avec le package de l’Agent Datadog. Vous n’avez donc rien à installer sur votre serveur.
Configuration
Suivez les instructions ci-dessous pour configurer ce check lorsque l’Agent est exécuté sur un host. Consultez la section Environnement conteneurisé pour la configuration dans un environnement conteneurisé.
Host
Pour configurer ce check lorsque l’Agent est exécuté sur un host :
Modifiez le fichier php_fpm.d/conf.yaml
dans le dossier conf.d/
à la racine du répertoire de configuration de votre Agent. Consultez le fichier d’exemple php_fpm.d/conf.yaml pour découvrir toutes les options de configuration disponibles :
init_config:
instances:
## @param status_url - string - required
## Get metrics from your FPM pool with this URL
## The status URLs should follow the options from your FPM pool
## See http://php.net/manual/en/install.fpm.configuration.php
## * pm.status_path
## You should configure your fastcgi passthru (nginx/apache) to catch these URLs and
## redirect them through the FPM pool target you want to monitor (FPM `listen`
## directive in the config, usually a UNIX socket or TCP socket.
#
- status_url: http://localhost/status
## @param ping_url - string - required
## Get a reliable service check of your FPM pool with `ping_url` parameter
## The ping URLs should follow the options from your FPM pool
## See http://php.net/manual/en/install.fpm.configuration.php
## * ping.path
## You should configure your fastcgi passthru (nginx/apache) to
## catch these URLs and redirect them through the FPM pool target
## you want to monitor (FPM `listen` directive in the config, usually
## a UNIX socket or TCP socket.
#
ping_url: http://localhost/ping
## @param use_fastcgi - boolean - required - default: false
## Communicate directly with PHP-FPM using FastCGI
#
use_fastcgi: false
## @param ping_reply - string - required
## Set the expected reply to the ping.
#
ping_reply: pong
Redémarrez l’Agent.
Environnement conteneurisé
Consultez la documentation relative aux modèles d’intégration Autodiscovery pour découvrir comment appliquer les paramètres ci-dessous à un environnement conteneurisé.
Paramètre | Valeur |
---|
<NOM_INTÉGRATION> | php_fpm |
<CONFIG_INIT> | vide ou {} |
<CONFIG_INSTANCE> | {"status_url":"http://%%host%%/status", "ping_url":"http://%%host%%/ping", "use_fastcgi": false, "ping_reply": "pong"} |
Options supplémentaires
Pools multiples
Il est possible de surveiller plusieurs pools PHP-FPM avec le même serveur proxy, ce qui est particulièrement utile si vous utilisez Kubernetes. Pour ce faire, modifiez les itinéraires de votre serveur de façon à les rediriger vers chacune de vos instances PHP-FPM. Voici un exemple de configuration NGINX :
server {
...
location ~ ^/(status1|ping1)$ {
access_log off;
fastcgi_pass instance1_ip:instance1_port;
include fastcgi_params;
fastcgi_param NOMFICHIER_SCRIPT $document_root$fastcgi_script_name;
}
location ~ ^/(status2|ping2)$ {
access_log off;
fastcgi_pass instance2_ip:instance2_port;
include fastcgi_params;
fastcgi_param NOMFICHIER_SCRIPT $document_root$fastcgi_script_name;
}
}
Si cette méthode est trop fastidieuse à grande échelle, définissez use_fastcgi
sur true
pour obliger le check à ignorer les serveurs proxy et à communiquer directement avec PHP-FPM en utilisant FastCGI. Lorsqu’aucun port n’est précisé dans les paramètres status_url
et ping_url
, il est défini par défaut sur 9000
.
Sockets Unix
Si votre installation PHP-FPM utilise des sockets Unix, vous devez activer use_fastcgi
et appliquer la syntaxe ci-dessous pour status_url
et ping_url
:
Paramètre | Valeur |
---|
status_url | unix:///<CHEMIN_FICHIER>.sock/status |
ping_url | unix:///<CHEMIN_FICHIER>.sock/ping |
ping_reply | pong |
use_fastcgi | true |
Remarque : avec Autodiscovery, si l’Agent s’exécute dans un conteneur, une tâche ou un pod distinct, il ne peut pas accéder au fichier de sockets Unix de votre pool FPM. Pour y remédier, exécutez l’Agent en tant que sidecar.
Validation
Lancez la sous-commande status
de l’Agent et cherchez php_fpm
dans la section Checks.
Données collectées
Métriques
php_fpm.listen_queue.size (gauge) | Size of the socket queue of pending connections |
php_fpm.processes.active (gauge) | Total number of active processes Shown as process |
php_fpm.processes.idle (gauge) | Total number of idle processes Shown as process |
php_fpm.processes.max_active (count) | The maximum number of processes that can run at once Shown as process |
php_fpm.processes.max_reached (count) | The number of times the process limit has been reached (when pm tries to start more children) Shown as process |
php_fpm.processes.total (gauge) | Total number of processes Shown as process |
php_fpm.requests.accepted (count) | Total number of accepted requests Shown as request |
php_fpm.requests.slow (count) | Total number of slow requests Shown as request |
Événements
Le check PHP-FPM n’inclut aucun événement.
Checks de service
php_fpm.can_ping
Renvoie CRITICAL
si l’agent ne peut pas obtenir un pong de l’URL de ping PHP-FPM.
Statuses: ok, critical
Dépannage
Besoin d’aide ? Contactez l’assistance Datadog.