NginxでPHP-FPMステータスを有効にして監視する方法


PHP-FPM FastCGI Process Manager )は、代替の PHP FastCGI 実装です。特にトラフィックが多いサイト。

一般的には LEMP Linux Nginx MySQL/MariaDB PHP )スタックで使用されます。ある[ Nginx はネットワーク上で動的な[ HTTP のコンテンツを提供するための PHP FastCGI を使用しています。これは、インターネット上のWebサーバー上の何百ものWebサイトに対する PHP リクエストの数百万を処理するために使用されています。

php-fpm の便利な機能の1つに、組み込みのステータスページがあり、これを使用してその状態を監視できます。この記事では、Linuxで PHP-FPM ステータスページを有効にする方法を説明します。

LinuxでPHP-FPMステータスページを有効にする方法

まず php-fpm 設定ファイルを開き、図のようにステータスページを有効にします。

$ sudo vim /etc/php-fpm.d/www.conf 
OR
$ sudo vim /etc/php/7.2/fpm/pool.d/www.conf	#for PHP versions 5.6, 7.0, 7.1

このファイル内で、スクリーンショットに示すように、変数 pm.status_path =/status を見つけてコメント解除します。

変更を保存してファイルを終了します。

次に、以下のコマンドを実行して、 PHP-FPM 設定ファイルにエラーがないことを確認します。

$ sudo php-fpm -t
OR
$ sudo php7.2-fpm -t

次に、 PHP-FPM サービスを再起動して最近の変更を適用します。

$ sudo systemctl restart php-fpm
OR
$ sudo systemctl restart php7.2-fpm

次に、デフォルトのサーバーブロック仮想ホスト)設定ファイルを編集し、その下にロケーションブロックを追加します。たとえばテストシステムでは、デフォルトのサーバーブロックの設定ファイルは /etc/nginx/conf.d/default.conf で、サイト test.lab です。

$ sudo vim /etc/nginx/conf.d/default.conf 

これが追加される location block です。この設定では、セキュリティ上の理由から allow 127.0.0.1 を使用してローカルホスト内の PHP-FPM プロセスステータスへのアクセスのみを許可しています。

location ~ ^/(status|ping)$ {
        allow 127.0.0.1;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_index index.php;
        include fastcgi_params;
        #fastcgi_pass 127.0.0.1:9000;
        fastcgi_pass   unix:/var/run/php7.2-fpm.sock;
}

ファイルを保存して閉じます。

次に、 Nginx サーバーを再起動して上記の変更を適用します。

$ sudo systemctl restart nginx

ブラウザを開き、URL http://test.lab/status を入力してPHP-FPMプロセスのステータスを表示します。

あるいは、次のようにcurlプログラムを使用してください。ここで、 -L フラグはページの場所を指定します。

$ curl -L http://test.lab/status

デフォルトでは、ステータスページには概要または短いステータスのみが表示されます。各プールプロセスのステータスを表示するには、クエリ文字列に“ full” を渡します。次に例を示します。

http://www.foo.bar/status?full

図のように出力フォーマット(JSON、HTMLまたはXML)を定義できます。

http://www.foo.bar/status?json&full
http://www.foo.bar/status?html&full
http://www.foo.bar/status?xml&full

各プロセスの php-fpm フルステータスに返される値は次のとおりです。

  • pid – PID of the process.
  • state process status (idle, running, etc.).
  • start time – date and time the process has started.
  • start since – number of seconds since the process has started.
  • requests – number of requests the process has served.
  • request duration – duration in µs of the requests.
  • request method – request method (GET, POST, etc.).
  • request URI – request URI with the query string.
  • content length – content length of the request (only with POST).
  • user – user (PHP_AUTH_USER) (or ‘-‘ if not set).
  • script – main script called (or ‘-‘ if not set).
  • last request cpu – %cpu the last request consumed (note that it’s always 0 if the process is not in Idle state).
  • last request memory – max amount of memory the last request consumed (it’s always 0 if the process is not in Idle state).

今のところそれだ!この記事では、Nginxウェブサーバーで php-fpm ステータスページを有効にする方法を説明しました。下記のフィードバックフォームを使用して、あなたの考えを私たちと共有してください。