デフォルトでエージェントが収集する情報に加えて、カスタムで追加の属性を登録することでより詳細なユーザー体験の分析やエラーの調査ができます。このブログではその活用方法や設定方法を説明します。

はじめに

New RelicでPHPアプリケーションのモニタリングの概要

 New Relic APMを使用してPHPアプリケーションをモニタリングすることで、アプリケーションのパフォーマンスやリソース利用状況をリアルタイムで把握できます。応答時間、エラー率、スループット、トランザクションの詳細などを追跡し、パフォーマンスのボトルネックや問題を特定します。これにより、アプリケーションの品質向上と最適化が実現されます。

カスタム属性の利点と用途

 New Relicのカスタム属性は、独自のパフォーマンス指標やユーザー情報を収集・分析するための機能です。これにより、ユーザーやテナント単位でエラーの発生状況を分析するといった個別のビジネス要件に対応したモニタリングが可能になります。カスタム属性を利用して、より詳細なセグメンテーションやダッシュボードが作成でき、特定の条件に基づくアラートを設定することができます。これにより、アプリケーションのパフォーマンス改善や問題解決が効果的に行えます。

 本ブログでは、New RelicのPHPモニタリングでカスタム属性の設定と活用方法を紹介し、アプリケーションのパフォーマンス分析をより深く理解できるようになります。カスタム属性を適切に設定し、分析することで、アプリケーションの問題点や改善点を特定し、効果的なパフォーマンス改善が可能となります。

 

New RelicのPHPエージェントのインストールと設定

PHPエージェントのインストール手順

 本ブログではパッケージマネージャを使用してNew RelicのPHPエージェントをインストールする手順を紹介します。

  1. メニューからAdd dataを選択
  2. Application monitoringの中からPHPを選択
  3. Select an accountが表示された場合は対象のアカウントを設定し、Continueを選択
  4. Install New Relicの画面でBegin installationを選択
  5. 以下の画面でPackage managerを選択
    PHPのAPMエージェントをインストールする方法を選択する
  6. Add your PHP application dataの画面のガイドに従って以下5つの設定を実施
    1. パッケージリポジトリの追加
    2. PHPエージェントのインストール
    3. エージェントの設定
    4. PHPエージェントの有効化
    5. Infrastractureエージェントの設定(設定済みの場合は不要)
            
    PHPのAPMエージェントをインストールする手順
            

    これで、New RelicのPHPエージェントがインストールされ、データの収集が開始されます。New RelicのAPMの画面で、アプリケーションのパフォーマンス情報を確認できるようになります。

 

エージェントの設定変更

 インストールされたPHPエージェントの設定は、対象の.iniファイルを編集して変更します。コマンドラインから以下のコマンドを実行することでnewrelic.iniファイルがどのディレクトリにあるか確認できます。

php -i | grep newrelic.ini

設定の詳細については、PHPエージェントの設定に関するドキュメントをご覧ください。

カスタム属性の設定

カスタム属性を追加するために必要なコード

 New RelicのPHPエージェントが有効化されている場合、newrelicの拡張モジュールが読み込まれ、newrelic_add_custom_parameter関数などのNew Relic PHP API関数が利用可能になります。

そのため、次のようなコードでカスタム属性(キーと値のペア)を追加できます。

<?php
// phpエージェントが無効な場合のエラーを回避
if (extension_loaded('newrelic')) {
    newrelic_add_custom_parameter (‘key’, $value);
}
?>

これでNew Relicのトランザクショントレースやイベントデータにカスタム属性が追加されます。

 詳細な仕様については、newrelic_add_custom_parameter (PHP agent API)に関するドキュメントをご覧ください。

カスタム属性の活用方法

 次に、以下のコードを用いてカスタム属性(接続クライアントのIPアドレス)を追加した場合の活用方法を紹介します。

<?php
if (extension_loaded('newrelic')) {
    newrelic_add_custom_parameter ('client-ipaddress', $_SERVER['REMOTE_ADDR']);
}
?>

New Relicでカスタム属性を使用してトレース・エラーを分析

Trace detailsのAttributesにサンプルで設定した’client-ipaddress’という属性が追加されます。

  1. 分散トレーシングでカスタム属性を活用する方法

     New Relicの分散トレーシングでは、カスタム属性を活用してサービス間のトレースデータをより詳細に分析できます。カスタム属性を追加することで、トランザクションやサービス呼び出しの詳細な情報を取得し、パフォーマンス問題の原因を特定しやすくなります。

    分散トレーシングをカスタム属性でフィルタリングする
            

    追加したカスタム属性をフィルタ条件に設定することが可能で、カスタム属性に基づいたボトルネックの分析やエラーの調査ができます。

    分散トレーシングの詳細からカスタム属性の内容を確認する

    Trace detailsAttributesにサンプルで設定した’client-ipaddress’という属性が追加されます。

  2. Errors Inboxでカスタム属性を活用する方法

     Errors Inboxでは、カスタム属性を利用してエラー情報をより具体的にフィルタリングし、関連するエラーに素早くアクセスできます。カスタム属性を追加することで、エラーの発生原因や発生時の状況に関する情報が得られ、効率的なトラブルシューティングが可能となります。

    Errors Inboxでカスタム属性を確認する

    Attributes / Profilesにカスタム属性が追加されています。調査対象のエラーがどの条件で発生しているのか、ユーザー属性による発生頻度の偏りがないのかという全体を俯瞰した情報を得られるようになります。

     Errors Inboxでは、カスタム属性(enduser.id 等)を利用してエラーの影響を受けたユーザーを追跡するための指標を自動で収集する機能があります。この機能によりエラー発生時の影響度調査を短縮する効果が期待できます。

    Errors InboxでUser Impactedを用いてエラーの影響度を確認

    Users Impactedの詳細な仕様については、Errors Inboxで影響を受けたユーザーを追跡に関するドキュメントをご覧ください。

    Users Impactedの活用方法については、エラーのより迅速な優先順位付けと解決のブログをご覧ください。

  3. ダッシュボードでカスタム属性を活用する方法

     ダッシュボードでは、カスタム属性を使用して、アプリケーションのパフォーマンスやエラー情報に関するカスタマイズされたビューを作成できます。カスタム属性に基づいてダッシュボードのチャートを作成し、独自の環境を構築することができます。これにより、チームのニーズに合わせた情報を迅速に共有し、パフォーマンス問題やエラーの特定・解決が容易になります。

    ダッシュボードでエラーの発生件数をカスタム属性でグルーピングする

    上記のサンプルではカスタム属性でグルーピングして処理時間の平均値をチャートで表示しています。カスタム属性のキーを条件に設定することで属性ごとのパフォーマンスやエラー発生頻度の分析が可能になります。

     

まとめ

 本ブログでは、New RelicのPHPモニタリングでカスタム属性を設定し、活用する方法を紹介しました。カスタム属性を適切に設定することで、分散トレーシングやErrors Inbox、ダッシュボードにおいて、アプリケーションのパフォーマンス分析や問題解決がより効果的になります。また、ダッシュボードを利用して、ニーズに合ったモニタリング環境を構築できます。

次のステップ

 カスタム属性の活用は、アプリケーションの監視や分析の可能性を広げます。今後は、以下のようなアプローチを試すことで、さらなる活用が期待できます。

  1. パフォーマンス改善の取り組み  

    カスタム属性を用いて、アプリケーションのパフォーマンス改善の取り組みを継続的に行い、効果をモニタリングしてください。これにより、効果的な改善策を見つけやすくなります。 

  2. アラートのカスタマイズ

    カスタム属性を利用して、アラートをカスタマイズし、チームにとって重要なエラーに対して迅速かつ効果的に対応できるようになります。

  3. チーム間のコラボレーション

    カスタム属性を活用して、異なるチームや役割に合わせたダッシュボードを作成し、チーム間のコラボレーションを促進していきます。これにより、アプリケーション全体のパフォーマンス向上に貢献できます。

 カスタム属性の活用を進めることで、アプリケーションのオブザーバビリティが向上し、ユーザー体験の最適化につながります。この知識を活かして、システムのオブザーバビリティ向上と継続的な改善を行いましょう。