PHP FPM

Supported OS Linux Mac OS Windows

Intégration2.1.0

Présentation de PHP

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 :

  1. 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
    
  2. 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ètreValeur
<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ètreValeur
status_urlunix:///<CHEMIN_FICHIER>.sock/status
ping_urlunix:///<CHEMIN_FICHIER>.sock/ping
ping_replypong
use_fastcgitrue

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.