25
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

アイレット株式会社Advent Calendar 2024

Day 10

【New Relic APM】WordPressのパフォーマンスを監視する

Last updated at Posted at 2024-12-09

はじめに

インフラエンジニアとして日々、監視や運用に携わっています:computer::smiley:
最近、APMを使うことでアプリケーション側の監視ができることを知りました。
実際に導入する機会もあるため検証を行い、その結果をこの記事にまとめました。

APMとは

APM(Application Performance Monitoring)は、アプリケーションのパフォーマンスをリアルタイムで監視・分析するツールです。

以下のような課題を解決するために役立ちます。

  • サイトやアプリケーションが遅い原因(ボトルネック)の特定
  • ユーザー視点でのサービス品質の可視化
  • エラーや障害の早期発見

以下は、実際のNew Relic APMの監視画面です。

スクリーンショット 2024-12-03 22.48.55.png

今回は、世界中で広く使われている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」で検索かけて、表示されたアイコンをクリックします。

スクリーンショット 2024-12-03 21.16.56.png

APMエージェントのインストール方法を選択します。
「On a host(tar archive)」を選択します。

※管理面を考えてパッケージマネージャーでインストールを試みましたが、上手くいかずtarを選択しました。Amazon Linux 2023 はまだ対応していない??:thinking:(2024/12/07時点)

スクリーンショット 2024-12-03 22.11.48.png

インストールで使用するlicense keyとuse keyを作成します。

スクリーンショット 2024-12-03 22.12.04.png

インストール対象のサーバーにログインしてPHPのバージョンを確認します。
公式ドキュメント:PHPエージェントの互換性と要件

スクリーンショット 2024-12-03 22.12.15.png

$ 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ファイルを表示します。

スクリーンショット 2024-12-03 22.12.27.png

表示されたファイルを入力し、ファイルをダウンロードします。

スクリーンショット 2024-12-03 22.13.35.png

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」を使用します。

ダウンロードしたファイルを解凍してエージェントをインストールします。
スクリーンショット 2024-12-03 22.14.00.png

アプリ名を入力し、エージェントを設定します。
スクリーンショット 2024-12-03 22.15.12.png

ミドルウェアを再起動します。(今回はPHP-FPMとApache(RHEL))
スクリーンショット 2024-12-03 22.16.23.png
スクリーンショット 2024-12-03 22.16.33.png

今回はログ転送はSkipします。
スクリーンショット 2024-12-03 22.16.48.png

接続テストをしてSuccessになることを確認します。
スクリーンショット 2024-12-03 22.17.01.png

APMに追加されたことを確認します。
New Relicの管理画面で「APM & Services」を選択 ->「アプリ名」をクリックします。
スクリーンショット 2024-12-03 22.18.19.png

少し待っているとデータの取得が確認できました!:raised_hands:
スクリーンショット 2024-12-03 22.23.27.png

メイン画面は以下のような画面になってます。
(データの波形がカクカクで不自然なのは監視対象が実際のWebサイトではなく、検証機を利用して30秒ごとにページ更新をかけているからです:pray:
スクリーンショット 2024-12-07 15.26.19.png

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

データ取得が停止しました。
スクリーンショット 2024-12-09 22.00.02.png

New Relic側でアプリケーションを削除します。
New Relicの管理画面で「APM & Services」を選択 ->「アプリ名」-> 「Application」を選択します。
「Delete application」をクリックして削除します。
スクリーンショット 2024-12-09 22.01.12.png

さいごに

サイトのパフォーマンス改善にNew Relic APMをぜひ活用してみてください!
読んでいただきありがとうございました!!:open_hands:

参考ドキュメント

25
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?