
概要
PHP-FPM チェックは、FPM プールの状態を監視し、リクエストパフォーマンスを追跡します。
セットアップ
インストール
PHP-FPM チェックは Datadog Agent パッケージに含まれています。サーバーに追加でインストールする必要はありません。
構成
ホストで実行中の Agent でこのチェックを構成する場合は、以下の手順に従ってください。コンテナ環境の場合は、コンテナ化セクションを参照してください。
ホスト
ホストで実行中の Agent に対してこのチェックを構成するには
Agent のコンフィギュレーションディレクトリのルートにある conf.d/ フォルダーの php_fpm.d/conf.yaml ファイルを編集します。使用可能なすべてのコンフィギュレーションオプションの詳細については、php_fpm.d/conf.yaml のサンプルを参照してください。
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
Agent を再起動します。
コンテナ化
コンテナ環境の場合は、オートディスカバリーのインテグレーションテンプレートのガイドを参照して、次のパラメーターを適用してください。
| パラメーター | 値 | 
|---|
<INTEGRATION_NAME> | php_fpm | 
<INIT_CONFIG> | 空白または {} | 
<INSTANCE_CONFIG> | {"status_url":"http://%%host%%/status", "ping_url":"http://%%host%%/ping", "use_fastcgi": false, "ping_reply": "pong"} | 
追加情報
複数のプール
Kubernetes で実行されている場合は、同じプロキシサーバー、共通のシナリオを使用して複数の PHP-FPM プールを監視することができます。それには、別の PHP-FPM インスタンスを指すようにサーバーのルートを変更します。以下に NGINX コンフィギュレーションの例を示します。
server {
    ...
    location ~ ^/(status1|ping1)$ {
        access_log off;
        fastcgi_pass instance1_ip:instance1_port;
        include fastcgi_params;
        fastcgi_param スクリプトのファイル名 $document_root$fastcgi_script_name;
    }
    location ~ ^/(status2|ping2)$ {
        access_log off;
        fastcgi_pass instance2_ip:instance2_port;
        include fastcgi_params;
        fastcgi_param スクリプトのファイル名 $document_root$fastcgi_script_name;
    }
}
規模が大きいためにこの方法で手間がかかりすぎる場合は、use_fastcgi を true に設定して、チェックがプロキシサーバーをバイパスし、FastCGI を使用して直接 PHP-FPM と通信するようにします。status_url または ping_url からポート番号が省略された場合、デフォルトのポートは 9000 です。
Unix ソケット
PHP-FPM インストールが Unix ソケットを使用する場合、status_url と ping_url に対して以下の構文を使用して、use_fastcgi を有効にする必要があります。
| パラメーター | 値 | 
|---|
status_url | unix:///<ファイル_パス>.sock/status | 
ping_url | unix:///<ファイル_パス>.sock/ping | 
ping_reply | pong | 
use_fastcgi | true | 
注: オートディスカバリーを使用する場合、個別のコンテナ/タスク/ポッドで稼働する Agent は、FPM プールの Unix ソケットファイルにアクセスできません。アクセスするためには、Agent をサイドカーとして実行する必要があります。
検証
Agent の status サブコマンドを実行し、Checks セクションで php_fpm を探します。
収集データ
メトリクス
 |  | 
|---|
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 | 
イベント
PHP-FPM チェックには、イベントは含まれません。
サービスチェック
php_fpm.can_ping
Returns CRITICAL if the Agent is unable to get a pong from the PHP-FPM ping URL.
Statuses: ok, critical
トラブルシューティング
ご不明な点は、Datadog のサポートチームまでお問合せください。