To find out if this integration is available in your organization, see your Datadog Integrations page or ask your organization administrator.
To initiate an exception request to enable this integration for your organization, email [email protected].

概要
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 のサポートチームまでお問合せください。