リクエストキューのレポートの設定

リクエストキューイングは、リクエストがアプリケーション(エージェントが存在する)に到達する前に行われます。この機能を利用するには、エージェントと本番サーバーに簡単な設定を行う必要がああります。

HTTP ヘッダー

リクエストキューイングをレポートするために、New Relic エージェントは、フロントエンドの Web サーバー(Apache や Nginx のような)やロードバランサ(HAProxy や F5 など)に HTTP ヘッダーを設定する必要があります。あなたの本番のインフラにリクエストが初めて到達した時を表す HTTP ヘッダーに、タイムスタンプを設定するために、上記のフロントエンドサーバーを設定できます。

推奨:リクエストがあなたのインフラに到達した後、できるだけ早くこのヘッダをセットしてください。そうすれば、ヘッダーをセットする前に発生するインフラにおけるパフォーマンス問題を見逃すことを極力減らせるでしょう。

すべての New Relic のエージェントは、X-Queue-StartX-Request-Startヘッダーを解釈し、それを使ってリクエストキューイングを計算します。エージェントはこの2つのヘッダーを等しく扱います。フォーマットの値が含まれt=MICROSECONDS_SINCE_EPOCH MICROSECONDS_SINCE_EPOCHは、 Unix エポック(例えば、1970年1月1日)の初めから経過したマイクロ秒の整数値です。

ほぼすべてのフロントエンド用の HTTP サーバーとロードバランサには、このヘッダーを追加するための設定があります。その他の詳細については、それぞれのエージェントとサーバー設定によって異なります。

Java、Node.js、Python、Ruby 用のエージェント

Java、Node.js、Python、Ruby用の最新バージョンのエージェントでは、X-Request-StartX-Queue-Start ヘッダーを利用しやすくしています。これらのエージェントでは、タイムスタンプを整数や浮動小数点の形式で秒、ミリ秒、マイクロ秒で設定できます。これらのエージェントでは、ヘッダー値の先頭の t= を省略できます。

上記のエージェントは桁数に基づいて自動的に、秒、ミリ秒、マイクロ秒単位に時間を判定します。1ミリ秒がマイクロ秒として解釈されると、40年以上の待ち時間となります。New Relic ではそのようなことが起きないように、正確に判断します。

注:Python用エージェントの場合、Apache/mod_wsgiのバージョン3.4以降を使用していると、mod_wsgi はリクエスト毎の WSGI environ ディクショナリーに X-Queue-Start ヘッダーが自動的に挿入されます。これはApacheが最初の要求を受け入れた、特定の時点をマークします。mod_wsgiで設定した値を Python エージェントがピックアップし、X-Request-Start または X-Queue-Start ヘッダーが手動で Web サーバのフロントエンドまたは Apache 自体に設定されていない場合は、それを使います。

.NET 用エージェント

.NET 用エージェントでは、待ち時間を計算するための HTTP ヘッダーへの設定は必要ありません。IIS のキューの仕組みを直接、計測できます。そして、HttpContext コンストラクタを実行した時と HttpApplication.BeginRequest イベントが発生した時の差として待ち時間をレポートできます。

PHP 用エージェント

PHP 用エージェントは、X-Request-StartHTTP_X_REQUEST_START の両方のヘッダーをサポートしています。これは、整数でマイクロ秒単位のタイムスタンプを識別します。ヘッダーが正しく設定されていることを確認するには、phpinfo()PHP Variables セクションをチェックし、_SERVER["HTTP_X_REQUEST_START"] を検証してください。

Nginx をお使いの場合は、ヘッダー設定の追加情報として、リクエストキューサーバーの設定例をご覧ください。

関連情報

設定について追加情報については、お使いのエージェントのマニュアルを参照してください。関連情報は次のとおりです。