インストール問題の解決
PHP拡張モジュールおよびwhatap-phpサービスの手動設定
PHP拡張モジュールとwhatap-phpサービスのインストールおよびオプションのインストール(install.sh)が正しく動作しない場合の手動で設定する方法を説明します。PHPコンパイルのインストールなど、環境情報が確認できない場合に使用してください。
whatap.ini作成
$ cp /usr/whatap/php/template.ini /usr/whatap/php/whatap.ini
$ vi /usr/whatap/php/whatap.ini
# 上部に内容を追加
; Enable whatap extension module
extension=whatap.so
whatap.license= # 発行されたアクセスキー
whatap.server.host= # #発行されたサーバーIP
whatap.app_name= # Webサーバー区分APHP、FPHP (apache : APHP, php-fpm : FPHP)
whatap.app_process_name= # apache, php-fpmのプロセス名(httpd,php-fpm)
設定 | 説明 |
---|---|
whatap.license | プロジェクトメニュー > 管理 > エージェントインストールページで発行されたアクセスキーを確認できます。 |
whatap.server.host | プロジェクトメニュー > 管理 > エージェントインストールページで発行されたサーバーのIPを確認できます。 |
whatap.app_name | Apacheサーバーは、APHP を使用し、php-fpmは、FPHP を使用します。 |
whatap.app_process_name | Apacheまたはphp-fpmで実行可能なプロセス名を設定して正しいプロセス名を入力すると、そのプロセスに使用されるメモリが収集されます。例として、httpd 、apache2 、php-fpm などが挙げられます。 |
PHPコマンド(CLI) パスの確認
$ which php
/usr/bin/php
whatap-phpのサービス環境変数の設定
$WHATAP_PHP_BIN
環境変数にPHP CLIコマンドパスを設定します。
$ sudo vi /etc/init.d/whatap-php
export WHATAP_PHP_BIN= # PHP コマンドの場所(/usr/bin/php)
PHP APIバージョンの確認
$WHATAP_PHP_BIN
環境変数にPHP CLIコマンドパスを設定します。
$ sudo php -i | grep 'PHP API'
PHP API => 20100412
PHP ZTS(Zend Thread Safe) サポート有無の確認
$ sudo apachectl -V | grep MPM
Server MPM: Prefork # ZTSサポート無し
Server MPM: Worker # ZTSサポート
$ sudo php-fpm -i | grep Thread
Thread Safety => disabled # ZTS非対応
Thread Safety => enabled # ZTS対応
PHP拡張モジュールのパスを確認して設定
PHP拡張モジュールパスの確認
$ sudo php -i | grep extension_dir
extension_dir => /usr/lib64/php/modules => /usr/lib64/php/modules
PHP拡張モジュールの設定
PHP APIバージョン、PHP ZTSのサポートを確認して、環境に適したライブラリを選択してください。PHP拡張モジュール(PHP Extension module) パスにwhatap.soファイル名をコピーします。
- PHP ZTSにサポートされている場合 - whatap_zts_[PHP APIバージョン].so
- PHP ZTSにサポートされていない場合 - whatap[PHP APIバージョン].so_
# PHP ZTSをサポートしていない場合の例
$ sudo cp /usr/whatap/php/modules/x64/whatap_20100412.so /usr/lib64/php/modules/whatap.so
whatap-phpのサービス環境変数の設定
$ sudo vi /etc/init.d/whatap-php
export WHATAP_PHP_EXT_HOME= # PHP Extensionパス(/usr/lib64/php/modules)
export WHATAP_PHP_EXT_SRC= # WhaTapライブラリパスおよびファイル名
# (/usr/whatap/php/modules/x64/whatap_20100412.so)]
$WHATAP_PHP_EXT_HOME
環境変数にPHP拡張モジュールパスを設定します。$WHATAP_PHP_EXT_SRC
環境変数にWhaTapライブラリ全体のファイルパスを設定します。
whatap.ini設定
-
PHP追加のini設定パスを確認します。
$ sudo php -i | grep '.ini files'
Scan this dir for additional .ini files => /etc/php.d -
whatap.iniをそのパスにコピーします。
$ sudo cp /usr/whatap/php/whatap.ini /etc/php.d/whtap/ini
PHPの追加ini設定パスの確認不可
PHPコンパイル(Compile) インストールオプション ----with-config-file-scan-dir=PATH
が設定されていない場合に発生します。
$ sudo php -i | grep '.ini files'
Scan this dir for additional .ini files => (none)
whatap.iniファイルの内容をphp.iniの末尾に追加します。
$ php -i | grep 'php.ini'
Loaded Configuration File => /etc/php.ini
$ sudo vi php.ini
# ファイルの最後に追加
[whatap]
;Enable whatap extension module
extension=whatap.so
whatap.ext.error_enabled=true
whatap.ext.exception_enabled=true
whatap.trace_user_enabled=true
whatap.trace_user_using_ip=false
その他のオプションは、_/usr/whatap/php/whatap.ini_を使用してください。
whatap-phpのサービス(Service) 環境変数設定
$WHATAP_CONFIG_HOME
環境変数にwhatap.iniパスを選択します。
PHPの追加iniパスを確認できない場合は、whatap.iniで作成した*/usr/whatap/php*パスを設定してください。
$ sudo vi /etc/init.d/whatap-php
export WHATAP_CONFIG_HOME= # whatap.iniパス(/etc/php.d)
サービスの再起動
- ApacheおよびPHP-FRMサービスを再起動します。
- whatap-phpサービスを再起動します。
Error: Not found PHP API
PHP コマンド(CLI)が見つからない場合に発生します。
PHPコマンド(CLI)の位置を確認した上で、PHP拡張モジュールおよびwhatap-phpサービス選択インストール項目を進めてください。
$ sudo php -i | grep 'PHP API'
PHP API => 20100412
Error: Not found PHP ini directory
PHP環境の中でScan this dir for additional .ini files
項目の値を確認できなかった場合に発生します。PHPコンパイルインストールオプション--with-config-file-scan-dir=PATH
が設定されていない場合、対応できる環境はありません。
次の説明書を参照して、PHPコマンド(CLI)の正しい場所を確認した上で、PHP拡張モジュールおよびwhatap-phpサービス選択インストールに進みます。
$ sudo php -i | grep '.ini files'
Scan this dir for additional .ini files => (none)
応答時間分布表にトランザクションが表示されない場合
CPUとメモリのグラフは表示されるが、次の場合は応答時間分布 (ヒットマップ) が表示されません。
- エージェントは、収集サーバーに正常に接続されましたが、トレーサーは、PHP拡張モジュールに正常に適用されませんでした。
- セットアップ後にApache および PHP-FPM サービスを再起動していない場合
-
PHP 拡張モジュールが適用されていることを確認します。
$ sudo php -m
[PHP Modules]
bz2
calendar
Core
ctype
curl
date
…
whatap # WhaTapモジュールの読み込みを確認
…
[Zend Modules] -
ApacheおよびPHP-FRMサービスを再起動します。
-
PHP拡張モジュールが適用されていない場合は、正常にインストールされません。whatap.soまたはwhatap.iniファイルパスがPHP環境と一致していることを確認してください。
次の説明書を参照して、PHPコマンド(CLI) パス、PHP拡張モジュールパス、PHP追加ini設定パス の項目を確認してください。
Segmentation fault, Sig bus error
PHPモニタリングを適用した後、サービスにエラーが発生した場合、ApacheまたはPHP-FPMのerror logを確認してください。
error log にsegmentation fault
、sig bus
などのエラー文があるか確認してください。kill child process
、exit child
、exit process
などのメッセージが発生します。
当該エラーが発生する場合は、PHP Extensionモジュールであるwhatap.soモジュールで衝突が発生すると考えられます。PHP Extensionモジュールであるwhatap.soを中止した上でApacheまたはPHP-FPMを再起動してください。
サービスに影響しない環境でApacheおよびPHP-FPMにCore dump
設定を追加した後に whatap.soを再読み込みしてください。その後、エラーが発生すると、dumpファイルが作成されます。dumpファイルをgdbで分析して原因を解決してください。
Core Dump設定
-
dumpファイルを作成するディレクトリのアクセス権限を付与します。
chmod 0777 /home/httpd-core
-
システム設定をしてください。
ulimit -c unlimited
sysctl fs.suid_dumpable=2
sysctl kernel.core_uses_pid=0
sysctl kernel.core_pattern='| /home/httpd-core/core-%e.%p'
Apache
-
Apache confにCoreDumpDirectory項目を設定してください。
vi /etc/httpd/conf/httpd.conf
CoreDumpDirectory /home/httpd-core -
Apacheを再起動すると、設定は完了です。
-
エラーが発生するとdumpファイルが作成されます。dumpファイルが生成されると、gdbを使用してエラーの原因を確認します。
bt full
コマンドを使用して、全体スタックの情報を確認してください。# gdb /usr/sbin/httpd /home/httpd-core/core-httpd.31832
...
...
> bt full
PHP-FPM
-
FPM設定ファイルに
rlimit_core
を設定してください。rlimit_core = unlimited
-
PHP-FPMを再起動すると、設定は完了です。
-
エラーが発生するとdumpファイルが作成されます。dumpファイルが生成されると、gdbを通じてエラーの原因を確認します。
bt full
コマンドで全体スタックの情報を確認してください。# gdb /usr/sbin/php-fpm /home/httpd-core/core-php-fpm.31832
...
...
> bt full