DrupalアプリケーションのモニタリングにNew Relicを活用しよう
Collection :
アプリケーションを監視したりパフォーマンス分析するためのAPM(Application Performance Monitoring)ツールは世の中にたくさんあります。アクイアではAcquia Cloud Platformで稼働するDrupalアプリケーションをモニタリングする方法として New Relic が利用できるようになっています。
本記事では、New RelicでDrupalアプリケーションをモニタリングする際に便利な機能や設定内容をご紹介します。NRUG (New Relic User Group) Vol.2 で発表したLT内容を書き起こしたものです。
Acquia Cloud Platformサブスクリプションをお持ちの方は、New Relic APMを無料で使うことができます。まだ使いはじめていない方は、この機会にぜひ導入してはいかがでしょうか。
New RelicによるDrupal固有の機能
New Relicでは、Drupalに特化したメトリクスを取得して可視化してくれる機能が用意されています。
導入方法は、Drupalアプリケーションが動くサーバーにPHPエージェントを導入した上で、New Relic設定ファイルの newrelic.framework.drupal.modules
値を1に設定してあげることで有効化されます。ですがデフォルトでは有効化された状態らしいので、特に設定をいじらずとも使い始めることができます。
これによって、モジュール単位、フック単位、Views単位という切り口で調査できるようになります。
取得できるメトリクス
- Views - Viewsの
view::execute
メソッド内で費やされた時間を示します。 - Hooks - 各フック内で費やされた時間を示します。
module_invoke
とmodule_invoke_all
関数によって算出されます。 - Modules - 各モジュール内で費やされた時間を示します。(New RelicのPHPエージェントの)バージョン3.5以降、
module_invoke
とmodule_invoke_all
関数によって算出されます。
Drupalモニタリングをもっと便利にするモジュール
有志のDrupalコントリビューターが作成したNew Relicモジュールを使用することで、New Relic活用の幅をさらに広げることができます。
できること① Deploymentの作成
Deploymentは手動で作成、あるいはDrupalモジュールの有効化/非有効化や、configurationのインポートをトリガーにすることができます。Deploymentを作成するには、Drupal管理画面でRest API キーをセットする必要があります。本番環境がデプロイされた際にDeployment機能でマークしておくと、デプロイに起因した問題が発生していないかをグラフから確認できます。
できること② DrushコマンドやCronの取り扱い
DrupalのCLI(Drush)やCronによるトランザクションの取り扱いについて、管理画面で設定することができます。
- Ignore completely - 無視する
- Track as background tasks - バックグラウンドタスクとしてトラックする
- Track normaly - アプリ内の他URLと同じようにトラックする
例えば Track as background tasks に設定すると、New Relicでは Non-web transactions として扱われるようになり、バッチ処理のようなバックグラウンドタスクと、通常のWebリクエストを分けてグラフ化することができます。
できること③ ログメッセージの転送
DrupalのwatchdogログメッセージをエラーとしてNew Relicに転送する設定が行えます。これによってNew Relic画面でログメッセージを閲覧したり、アラート対象とすることができます。設定時にwatchdogのどの重要度のメッセージを転送するかを選べます。例えばEmergencyとAlertのみ転送する、といったことが可能です。New Relicでは、watchdogログで示される重要度に関係なく、転送されたメッセージは全てエラーとして取り扱われます。
注意点
この設定は、DrupalコアのDatabase Loggingモジュールが有効になっている場合のみ機能します。これはデータベースにログを格納するので、トラフィック量の多いサイトではパフォーマンスに影響を及ぼす可能性があります。本番サイトではDatabase Loggingモジュールの代わりにSyslogモジュールを利用するのがベストプラクティスです。
できること④ URLによるフィルタリングや選別
特定のURLを無視したり、逆に特定のURLのみ追跡する設定、特定のURLをバックグラウンドタスクとして認識させる設定が行えます。
まとめ
New RelicでDrupalアプリケーションをモニタリングする際に便利な機能や設定内容をまとめました。Drupalアプリのトラブルシューティングやパフォーマンス改善にお役立ていただけると嬉しいです。
2022年4月にNew Relicジャパンさんとのウェビナーを開催します。New Relicにご興味ある方はこちらもぜひご確認ください。