SLAレポートAPIの例

New Relic は 該当アカウントの SLA データを永久にデータを格納します。よって、REST API を使って、任意の期間のサービス品質保証レポートを生成することができます。たとえば、12日、12週、12ヶ月以上遡った SLA レポートを作成することができます。

この機能の利用可否は、契約しているサブスクリプションレベルに依存します。

SLA 用 Browser メトリクス

エンドユーザー ティア用の Browser メトリクは、ページ読み込みタイミングを有効にしている場合のみ利用できます。

Browser (エンドユーザーティア) SLA メトリック名:値 (と式)
Page Views thousands EndUser : call_count
Load time sec EndUser : average_response_time
Apdex EndUser/Apdex : score
% Satisfied EndUser/Apdex : EndUser で割った s : call_count
% Tolerating EndUser/Apdex : EndUser で割った t : call_count
% Frustrated EndUser/Apdex : EndUser で割った f : call_count

SLA 用 アプリサーバー メトリクス

以下は、アプリケーションサーバー用の SLA メトリクスです。

アプリサーバー SLA メトリック名:値 (と式)
Requests millions HttpDispatcher : call_count (値に応じてスケーリングする)
Resp. time ms HttpDispatcher : average_response_time (1000倍)
Apdex Apdex : score
% Satisfied Apdex : Apdex で割った s : count
% Tolerating Apdex : Apex で割った t : count
% Frustrated Apdex : Apdex で割った f : count

メトリクスを収集するためのヒント

以下はメトリクスを収集するための計画のヒントです。

SLA メトリクス 解説
要件 cURL コマンドのサンプルを使う際は、プレースホルダのテキストを New Relic の API キーアカウントID、アプリケーション ID に置き換えること。
期間 標準的な日/週/月の範囲に限定されません。たとえば、「祭日と重なる週末」12/23 から 12/26 や、「サイトで問題が起きた後の20分間」など任意の期間を選択できます。詳細については、メトリックデータの抽出をご覧ください。
UTC XML タイムフォーマット UTC XML フォーマットで時刻を指定します。UTC と比較したタイムゾーンに調整してください。 たとえば、New Relic 本社のタイムゾーンは UTC-8 です。よって、選択したデータの前日の 16時00分00秒 が始まりです。
要約レポート 要約レポート で使用するメトリクスを要求する場合には、例に示すようにsummarize=true(V2)またはsummary=1(V1)クエリ文字列パラメータを含めます。
スケールする統計 レポートには、New Relic の UI 上の SLA レポート においてスケールする統計があります。小さな番号を表示する場合に、レポートのページビューのスケールを変更します。トラフィックに応じて、一般的に何千、何百万、数十億も表示されることがあります。推奨:ゼロの文字列が大量に並ぶのを避けるために、状況に応じて適切にこの数字を割ってください。
エンドユーザーの統計

エンドユーザーの統計は、ページ読み込みタイミング(リアルユーザー監視、RUMとも呼ばれる)を収集した呼び出し数のみを反映します。例えば、エンドユーザーの統計は、次のような状況では表示されない場合があります。

  • ブラウザの種類
  • クライアント(ページ読み込みタイミングの Javascript を無効にされている場合や、ブラウザのページ読み込みタイミングを伝える際に発生するトラフィックをブロックしている場合もあります)
  • ページのロードが何らかの理由で完了しなかった場合に、どのカテゴリにも属性していないトランザクション

アプリサーバーのデータセクションにあるページビューよりエンドユーザーのデータセクションのページビューのほうが少ない(時にはずっと少ない)のは、これが理由です。

次のセクションでは、デフォルト GMT/UTC タイムゾーンを使った日毎(24時間)の SLA 統計用の値のデータを取得するコード例を含んでいます。必要に応じて、タイムゾーンfrom=to=を調整してください。

注:New Relic REST API v1 と v2 では構文に違いがあります。以下の例では、それぞれの使用方法を示しています。

REST API v2 のコマンド

v2用:ブラウザ (EndUser/RUM)ロード時間とページビュー数を取得するには、コマンドラインに以下を入力します。

curl -X GET "https://api.newrelic.com/v2/applications/REPLACE_WITH_YOUR_APPLICATION_ID/metrics/data.xml"\
    -H "X-Api-Key:REPLACE_WITH_YOUR_API_KEY" -i  \
    -d 'names[]=EndUser&values[]=call_count&values[]=average_response_time&from=2014-06-09T00:00:00+00:00&to=2014-06-09T23:00:00+00:00&summarize=true' 

Rubyの場合:

require 'rubygems'
require 'curb'

response = Curl::Easy.http_get("https://api.newrelic.com/v2/applications/REPLACE_WITH_YOUR_APPLICATION_ID/metrics/data.xml?names[]=EndUser&values[]=call_count&values[]=average_response_time&from=2012-01-01T00:00:00+00:00&to=2012-01-08T00:00:00+00:00&summarize=true") do |curl|
  curl.headers["x-api-key"] = "REPLACE_WITH_YOUR_API_KEY"
  curl.header_in_body=true
end
puts response.body_str

v2用:アプリケーションの応答時間とリクエストカウントを取得するには、コマンドラインに以下を入力します。

curl -X GET "https://api.newrelic.com/v2/applications/REPLACE_WITH_YOUR_APPLICATION_ID/metrics/data.xml" \
     -H "X-Api-Key:REPLACE_WITH_YOUR_API_KEY" -i \
     -d 'names[]=HttpDispatcher&values[]=average_response_time&values[]=call_count&from=2014-06-09T00:00:00+00:00&to=2014-06-09T23:00:00+00:00&summarize=true'

Rubyの場合:

require 'rubygems'
require 'curb'

response = Curl::Easy.http_get("https://api.newrelic.com/v2/applications/REPLACE_WITH_YOUR_APPLICATION_ID/metrics/data.xml?names[]=HttpDispatcher&values[]=average_response_time&values[]=call_count&from=2012-01-01T00:00:00+00:00&to=2012-01-08T00:00:00+00:00&summarize=true") do |curl|
  curl.headers["x-api-key"] = "REPLACE_WITH_YOUR_API_KEY"
  curl.header_in_body=true
end
puts response.body_str

v2用::Apdex関連データを取得するには、コマンドラインに以下のを入力します。

curl -X GET "https://api.newrelic.com/v2/applications/REPLACE_WITH_YOUR_APPLICATION_ID/metrics/data.xml" \
     -H "X-Api-Key:REPLACE_WITH_YOUR_API_KEY" -i \
     -d 'names[]=Apdex&names[]=EndUser/Apdex&from=2014-06-09T00:00:00+00:00&to=2014-06-09T23:00:00+00:00&summarize=true' 

Rubyの場合:

require 'rubygems'
require 'curb'

response = Curl::Easy.http_get("https://api.newrelic.com/v2/applications/REPLACE_WITH_YOUR_APPLICATION_ID/metrics/data.xml?names[]=EndUser/Apdex&from=2012-01-01T00:00:00+00:00&to=2012-01-08T00:00:00+00:00&summarize=true") do |curl|
  curl.headers["x-api-key"] = "REPLACE_WITH_YOUR_API_KEY"
  curl.header_in_body=true
end
puts response.body_str

REST API v1のコマンド

v1用:ブラウザ(EndUser / RUM)ロード時間とページビュー数を取得するには、次のようにコマンドラインに入力します。

curl -gH "x-api-key:REPLACE_WITH_YOUR_API_KEY" "https://api.newrelic.com/api/v1/accounts/REPLACE_WITH_YOUR_ACCOUNT_ID/applications/REPLACE_WITH_YOUR_APPLICATION_ID/data.xml?metrics[]=EndUser&field=call_count&field=average_response_time&summary=1&begin=2012-01-01T00:00:00Z&end=2012-01-08T00:00:00Z"

Rubyの場合:

require 'rubygems'
require 'curb'

response = Curl::Easy.perform("https://api.newrelic.com/api/v1/accounts/REPLACE_WITH_YOUR_ACCOUNT_ID/applications/REPLACE_WITH_YOUR_APPLICATION_ID/data.xml?metrics[]=EndUser&field=call_count&field=average_response_time&summary=1&begin=2012-01-01T00:00:00Z&end=2012-01-08T00:00:00Z") do |curl|
  curl.headers["x-api-key"] = "REPLACE_WITH_YOUR_API_KEY"
end
puts response.body_str

v1用:アプリケーションの応答時間と要求カウントを取得するには、以下のようにコマンドラインに入力します。

curl -gH "x-api-key:REPLACE_WITH_YOUR_API_KEY" "https://api.newrelic.com/api/v1/accounts/REPLACE_WITH_YOUR_ACCOUNT_ID/applications/REPLACE_WITH_YOUR_APPLICATION_ID/data.xml?metrics[]=HttpDispatcher&field=average_response_time&field=call_count&summary=1&begin=2012-01-01T00:00:00Z&end=2012-01-08T00:00:00Z"

Rubyの場合:

require 'rubygems'
require 'curb'

response = Curl::Easy.perform("https://api.newrelic.com/api/v1/accounts/REPLACE_WITH_YOUR_ACCOUNT_ID/applications/REPLACE_WITH_YOUR_APPLICATION_ID/data.xml?metrics[]=HttpDispatcher&field=average_response_time&field=call_count&summary=1&begin=2012-01-01T00:00:00Z&end=2012-01-08T00:00:00Z") do |curl|
  curl.headers["x-api-key"] = "REPLACE_WITH_YOUR_API_KEY"
end
puts response.body_str

v1用:Apdex関連データを取得するには、次のようにコマンドラインに入力します。

curl -gH "x-api-key:REPLACE_WITH_YOUR_API_KEY" "https://api.newrelic.com/api/v1/accounts/REPLACE_WITH_YOUR_ACCOUNT_ID/applications/REPLACE_WITH_YOUR_APPLICATION_ID/data.xml?metrics[]=Apdex&metrics[]=EndUser/Apdex&summary=1&begin=2012-01-01T00:00:00Z&end=2012-01-08T00:00:00Z"

Rubyの場合:

require 'rubygems'
require 'curb'

response = Curl::Easy.perform("https://api.newrelic.com/api/v1/accounts/REPLACE_WITH_YOUR_ACCOUNT_ID/applications/REPLACE_WITH_YOUR_APPLICATION_ID/data.xml?metrics[]=Apdex&metrics[]=EndUser/Apdex&summary=1&begin=2012-01-01T00:00:00Z&end=2012-01-08T00:00:00Z") do |curl|
  curl.headers["x-api-key"] = "REPLACE_WITH_YOUR_API_KEY"
end
puts response.body_str

関連情報

関連情報は次のとおりです。