Mackerel

【Mackerel】PHP-APCやPHP-OPcacheのメトリックを監視する!

はじめに

こんにちは!

わたくしMackerelネタが続いてますが、お弁当のおかずもサバ(Mackerel)が続いてます。

焼きサバ大好きエンジニア森屋でございます!

今回は、スッと動くと思ったらそうではなかった「mackerel-plugin-php-apc」および「mackerel-plugin-php-opcache」の監視手順をご紹介します。

ちなみに、Mackerel4連作のバックナンバーはこちら
【Mackerel】サポート対象外となってしまったCentOS5を監視する!
【Mackerel】監視対象ホストからMackerelにデータが届かない時!
【Mackerel】mackerel-plugin-muninを使ってMuninのプラグインが動かない時!

プラグインの紹介

本プラグインを有効にすることで、以下のグラフを取得することができます。

mackerel-agent-pluginsのパッケージに入っている、いわゆる公式プラグインです。

mackerel-plugin-php-apc

---------------------------------------
PHP APC Cache Purge Count
PHP APC Cache Size
PHP APC File Cache Statistics
PHP APC User Cache Statistics
---------------------------------------
---------------------------------------
GLOBAL OPTIONS:
   --http_host value, -o value    Set httpd listeing ip. (default: "127.0.0.1") [$ENVVAR_HTTP_HOST]
   --http_port value, -p value    Set httpd listeing port. (default: 80) [$ENVVAR_HTTP_PORT]
   --status_page value, -s value  Set httpd mod_status page address. (default: "/mackerel/php-apc.php") [$ENVVAR_STATUS_PAGE]
   --tempfile value, -t value     Set temporary file path. [$ENVVAR_TEMPFILE]
   --help, -h                     show help
   --version, -v                  print the version
---------------------------------------

mackerel-plugin-php-opcache

---------------------------------------
PHP OPCache Cache Size
PHP OPCache Cache Statistics
PHP OPCache Memory Size
PHP OPCache Memory Statistics
---------------------------------------
---------------------------------------
GLOBAL OPTIONS:
   --http_host value, -o value    Set httpd listeing ip. (default: "127.0.0.1") [$ENVVAR_HTTP_HOST]
   --http_port value, -p value    Set httpd listeing port. (default: 80) [$ENVVAR_HTTP_PORT]
   --status_page value, -s value  Set httpd mod_status page address. (default: "/mackerel/php-opcache.php") [$ENVVAR_STATUS_PAGE]
   --tempfile value, -t value     Set temporary file path. [$ENVVAR_TEMPFILE]
   --help, -h                     show help
   --version, -v                  print the version
---------------------------------------

導入方法

GitHubに上がってるREADME.mdを参考にして入れる必要があります。

https://github.com/mackerelio/mackerel-agent-plugins/tree/master/mackerel-plugin-php-apc
https://github.com/mackerelio/mackerel-agent-plugins/tree/master/mackerel-plugin-php-opcache

ただmackerel-agent.confでプラグイン行を書くだけでは、メトリックを監視することができません。

①監視専用の安全なWEB領域を設定する
②監視用phpプログラムを設置する
③mackerel-agent.confに設定を追記する

と対応する必要があります。

環境について

今回は以下の環境で導入しましたが、異なる環境でも大きく変わらないと思います。

CentOS7
Apache2.4
PHP5.4
PHP-APCu 4.0
PHP-OPcache 7.0

①監視専用の安全なWEB領域を設定する

README.mdではプラグインのビルドとかしてますが、プラグイン自体はyumで入ってるはずなので、対応不要です。

WEBサーバの設定から始めましょう。

今回の環境はApacheだったので、以下の様な設定を追加しました。

Alias /mackerel /var/www/mackerel
<Directory /var/www/mackerel>
    Require ip 127.0.0.1
</Directory>

もちろん、Nginxなどでも同様の設定が必要です。

設置するディレクトリですが、これはプラグインのデフォルトに寄せたもので、特に決まりはありません。

オプションで設置ディレクトリを指定できるため、どこでもOKです。

ただ公開領域でも問題なく動くとは思いますが、できるだけ専用領域を切った方が良いでしょう。

リロードなりで設定適用することをお忘れずに。

②監視用phpプログラムを設置する

先ほど設定した/var/www/mackerel配下に、以下のphpファイルを設置します。

https://github.com/mackerelio/mackerel-agent-plugins/blob/master/mackerel-plugin-php-apc/lib/php-apc.php
https://github.com/mackerelio/mackerel-agent-plugins/blob/master/mackerel-plugin-php-opcache/lib/php-opcache.php

実行権限を付けることもお忘れずに。

chmod +x /var/www/mackerel/php-apc.php
chmod +x /var/www/mackerel/php-opcache.php

プラグインが正常に動作するか、手動で試してみましょう。

mackerel-plugin-php-apc -s /mackerel/php-apc.php
mackerel-plugin-php-opcache -s /mackerel/php-opcache.php

ずらーっと値が表示されたらOKです。

Mackerelのカスタムメトリックプラグインの結果は、{メトリクス名}/{値}/{時間(unixtime)}がタブ区切りで出力されます。

初回は「does not exist at last fetch」という出力の項目があると思いますが、これは前回値と取得値を比較するタイプの項目で初回に出力されてしまうだけです。もう一度実行すれば、値が出力されると思います。

動きましたか?では進めましょう。

③mackerel-agent.confに設定を追記する

以下の行をmackerel-agent.confに追記します。

# Plugin for PHP APC
[plugin.metrics.php-apc]
command = ["mackerel-plugin-php-apc", "-s", "/mackerel/php-apc.php"]

# Plugin for PHP OPCache
[plugin.metrics.php-opcache]
command = ["mackerel-plugin-php-opcache", "-s", "/mackerel/php-opcache.php"]

-sオプションで監視用phpプログラムの場所を指定できます。

ヘルプ(-h)の通りデフォルトが「/mackerel/php-apc.php(およびphp-opcache.php)」なので、今回のApache設定だと指定は不要なんですけどね。

あとはMackerelエージェントをリスタートして設定を適用し、グラフが来るのを心待ちにしましょう!

まとめ

公式パッケージに監視用phpプログラムが入ってなかったり、-hで詳しく出てこなかったりして惑わされますが、「そういうときはGitHubを見るべし」という教訓が得られましたね。

お読みくださり、ありがとうございました。

ではまた!

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA