はじめに
インフラエンジニアとして日々、監視や運用に携わっています
最近、APMを使うことでアプリケーション側の監視ができることを知りました。
実際に導入する機会もあるため検証を行い、その結果をこの記事にまとめました。
APMとは
APM(Application Performance Monitoring)は、アプリケーションのパフォーマンスをリアルタイムで監視・分析するツールです。
以下のような課題を解決するために役立ちます。
- サイトやアプリケーションが遅い原因(ボトルネック)の特定
- ユーザー視点でのサービス品質の可視化
- エラーや障害の早期発見
以下は、実際のNew Relic APMの監視画面です。
今回は、世界中で広く使われているCMS「WordPress」にAPMの1つであるNew Relic APMを導入してみました。
この記事では、AWSでEC2インスタンス(Amazon Linux 2023)上のWordPress環境にNew Relic APMを導入します。
本記事の内容
- New Relic APMのインストール(PHPエージェント)
- 導入後の確認
- PHPエージェント削除
前提条件
以下条件のサーバーに導入しました。
EC2インスタンス(Amazon Linux 2023)
- LAMP(Apache, MySQL, PHP)が設定済み
- WordPressが正常に動作している
- Session ManagerやSSH接続でEC2にアクセス可能
- New Relicアカウントを作成済み
New Relic APMのインストール
New Relicの管理画面で「+ Integrations & Agens」を選択->「PHP」で検索かけて、表示されたアイコンをクリックします。
APMエージェントのインストール方法を選択します。
「On a host(tar archive)」を選択します。
※管理面を考えてパッケージマネージャーでインストールを試みましたが、上手くいかずtarを選択しました。Amazon Linux 2023 はまだ対応していない??(2024/12/07時点)
インストールで使用するlicense keyとuse keyを作成します。
インストール対象のサーバーにログインしてPHPのバージョンを確認します。
公式ドキュメント:PHPエージェントの互換性と要件
$ php --version
PHP 8.3.10 (cli) (built: Jul 30 2024 13:44:37) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.3.10, Copyright (c) Zend Technologies
with Zend OPcache v8.3.10, Copyright (c), by Zend Technologies
今回は 8.3.10 です!
curlコマンドでNew Relic PHPエージェントのリリースディレクトリにあるgzファイルを表示します。
表示されたファイルを入力し、ファイルをダウンロードします。
newrelic-php5-11.3.0.16-linux-musl.tar.gz
newrelic-php5-11.3.0.16-linux.tar.gz
上記2ファイルが取得できました。
今回は「newrelic-php5-11.3.0.16-linux.tar.gz」を使用します。
ダウンロードしたファイルを解凍してエージェントをインストールします。
ミドルウェアを再起動します。(今回はPHP-FPMとApache(RHEL))
APMに追加されたことを確認します。
New Relicの管理画面で「APM & Services」を選択 ->「アプリ名」をクリックします。
メイン画面は以下のような画面になってます。
(データの波形がカクカクで不自然なのは監視対象が実際のWebサイトではなく、検証機を利用して30秒ごとにページ更新をかけているからです)
Summary画面で以下のような指標が確認可能です。
これらの情報によりサービスが正常に稼働しているか、正しく機能しているか、そしてユーザー体験(UX)に問題がないか等を確認できます。
・応答性能
アプリケーション側での処理時間、データベースや外部Webサービスへのアクセス時間
・スループット
一定時間あたりのリクエスト数
・エラー率
Webトランザクションやその他のエラー率
・Apdex score
アプリケーションのパフォーマンスに対するユーザー満足度を示す指標
エージェントの削除(お片付け)
実際に本番運用でエージェントを削除する場合は必ず公式ドキュメントのご確認をお願いします。
導入したエージェントを手動で削除していきます。
newrelic-daemonのプロセスが稼働していることを確認します。
# ps -ef | grep [n]ewrelic-daemon
root 52880 1 0 Dec03 ? 00:00:00 /usr/bin/newrelic-daemon --agent --pidfile /var/run/newrelic-daemon.pid --logfile /var/log/newrelic/newrelic-daemon.log --port @newrelic --wait-for-port 0s --define utilization.detect_aws=true --define utilization.detect_azure=true --define utilization.detect_gcp=true --define utilization.detect_pcf=true --define utilization.detect_docker=true --define utilization.detect_kubernetes=true
root 52885 52880 0 Dec03 ? 00:00:48 /usr/bin/newrelic-daemon --agent --pidfile /var/run/newrelic-daemon.pid --logfile /var/log/newrelic/newrelic-daemon.log --port @newrelic --wait-for-port 0s --define utilization.detect_aws=true --define utilization.detect_azure=true --define utilization.detect_gcp=true --define utilization.detect_pcf=true --define utilization.detect_docker=true --define utilization.detect_kubernetes=true -no-pidfile
対象のプロセスを停止します。
sudo kill 52885 52880
関連ファイルを削除します。
sudo rm -rf /etc/newrelic/
sudo rm -rf /var/log/newrelic/
sudo rm -f /etc/php.d/newrelic.ini
sudo rm -f /etc/rc.d/init.d/newrelic-daemon
Webサーバーを再起動します。
sudo systemctl restart httpd
プロセスが削除されたか確認します。
ps -ef | grep [n]ewrelic
New Relic側でアプリケーションを削除します。
New Relicの管理画面で「APM & Services」を選択 ->「アプリ名」-> 「Application」を選択します。
「Delete application」をクリックして削除します。
さいごに
サイトのパフォーマンス改善にNew Relic APMをぜひ活用してみてください!
読んでいただきありがとうございました!!
参考ドキュメント