Metric API を使用して、New Relic プラットフォームにカスタム メトリックを送信します。このドキュメントには、最初のカスタムメトリックを送信するためのクイックスタートと、メトリックデータをフォーマットして送信する方法についての詳細な情報が含まれています。
クイックスタート測定データの送信
指標タイプcount
、 gauge
、およびsummary
をレポートします。メトリクスの詳細については、ドキュメントを参照してください。
メトリックデータは、HTTP POST リクエストで New Relic に送信されます。各リクエストは1つ以上のメトリックデータで構成され、メトリック名、タイムスタンプ、値で構成されます。
この例に従って、最初のメトリックデータポイントをNew Relicに送信します。
を入手 データを報告するアカウントの。
ライセンスキーを以下のJSONに挿入し、そのJSONを当社の エンドポイント に送信します。
timestamp
を有効なエポック タイムスタンプで更新してください。この例では、memory.heap
という名前のメトリックに対して 1 つのメトリック データ ポイントを作成しますが、メトリック タイプを指定するか、オプションのcommon
ブロックを追加することで、追加の属性またはデータ ポイントを作成できます。bash$curl -vvv -k -H "Content-Type: application/json" \>-H "Api-Key: NEW_RELIC_LICENSE_KEY" \>-X POST https://metric-api.newrelic.com/metric/v1 \>--data '[{$"metrics":[{$"name":"memory.heap",$"type":"gauge",$"value":2.3,$"timestamp":CURRENT_TIME,$"attributes":{"host.name":"dev.server.com"}$}]$}]'
メトリックは数秒で New Relic で利用できるようになります。このクエリを使って、任意の NRQL インターフェース からデータを照会することができます。
FROM Metric SELECT max(memory.heap) TIMESERIES
データが表示される場所については、 Find Metric API data を参照してください。
エンドポイントURL
メトリックAPIのエンドポイントにメトリックデータを送信する場合は、HTTP POSTを使用します。
https://metric-api.newrelic.com/metric/v1
ヒント
組織が EU データセンターでデータをホストしている場合は、 EU 地域のエンドポイントを使用していることを確認してください。
HTTPリクエストヘッダ
POSTリクエストには、以下のHTTPリクエストヘッダを含めてください。一部のパラメーターは、リクエストヘッダーではなく、クエリパラメーターとして送信できます。
ヘッダー | クエリのパラメータとして送信しますか? | 詳細 |
---|---|---|
| いいえ | 必須。 |
| いいえ | 必須(通常、HTTP クライアントが自動的に設定します).リクエストボディの長さをオクテット(8ビットバイト)で表します(チャンクされたエンコーディングで送信された場合を除く)。このヘッダーは、通常、データを送信する基礎となるHTTPクライアントによってデフォルトで設定され、ほとんどの場合、エンドユーザーが追加の努力をする必要はありません。 |
| はい | 必要。 あ データを報告するアカウントの。 これがヘッダーとクエリ パラメータの両方として提供される場合、値は一致する必要があります。 |
| いいえ | GZIP の場合は必須。値は |
| いいえ | オプション-将来の使用のために予約されています。値は有効な |
HTTPリクエストボディ
HTTP POSTリクエストのボディは、JSON形式である必要があります。以下に、JSONペイロードの要件と推奨事項を記載します。
ペイロードは UTF-8 としてエンコードする必要があります。
構造
JSONペイロードはこの構造体を使用しています。
- JSONのペイロードは、マップの配列です。
- 各マップには
metrics
キーが含まれている必要があります。その値は、1 つ以上の指標データ ポイントを含む配列です。 - メトリック データ ポイントは、
name
、value
、およびtimestamp
とオプションの属性セットによって識別されます。
必要なキー・バリュー・ペア
metrics
配列内の各指標データ ポイント マップは、次のキーと値の構造を使用します:
鍵 | 説明 |
---|---|
ストリング | 必須.メトリックの名前です。値は255文字以下でなければなりません。 |
数字 or 地図 | 必須。値は指標タイプによって異なります。 |
長さ | 必須.メトリックの開始時刻を Unix時間で表示.デフォルトではUTCタイムゾーンを使用します。このフィールドは、秒、マイクロ秒、およびナノ秒もサポートしています。ただし、データは保存や検索のためにミリ秒に変換されます。報告されたタイムスタンプが48時間前よりも古いものや、報告された時点から24時間後よりも新しいものは、メトリクスが削除されます。 |
ポジティブロング |
|
| 推奨。これは、サポートされている指標タイプの 1 つである必要があります。タイプを指定しない場合、これはデフォルトで |
文字列, JSON 数字, または ブーリアン | 推奨.この特定のメトリックに関連するキー・バリュー・ペアのマップ。値は、文字列、JSON の数値、またはブーリアンです。キーは大文字と小文字を区別し、255文字以下でなければなりません。 |
メトリック間で属性を共有する common
複数の指標に一連の属性を含めたい (各指標に同じ属性を追加したくない) 場合は、 common
ブロックを使用できます。これは、関連するすべてのメトリック データ ポイントに適用される情報を指定するオプションのマップです。メトリック データ ポイントに同じキーが存在する場合、共通セクションの値は上書きされます。
ブロックを含むことができます。
属性 | 説明 |
---|---|
長さ | メトリックの開始時刻を Unix時間 で表したものです。デフォルトでは、UTCタイムゾーンの現在の時刻になります。このフィールドは、秒、マイクロ秒、およびナノ秒もサポートしています。ただし、データは保存や後のクエリのためにミリ秒に変換されます。 |
ポジティブロング |
|
文字列、JSONの数値、またはブーリアン | この特定のメトリックに関連するキーと値のペアのマップ。値には、文字列、JSONの数値、またはブーリアンを使用できます。 |
レスポンスの検証とステータスコード
メトリクス API は、成功したリクエストに対して202
レスポンス コードを返します。データが受け入れられると、HTTP 202
応答コードが次のような応答構造で返されます:
HTTP/1.1 202 AcceptedContent-Type: application/json; charset=UTF-8Content-Length: 52Access-Control-Allow-Methods: GET, POST, PUT, HEAD, OPTIONSAccess-Control-Allow-Credentials: trueAccess-Control-Allow-Origin: *Connection: keep-alive
{"requestId":"f0e7bfff-001a-b000-0000-01682bcf4565"}
202
応答でデータが欠落しています
202
コードは、API がデータを受信し、データが基本的な検証チェックに合格したことを示します。通常、データは数秒以内にクエリに使用できるようになります。ただし、New Relic はデータを受け取った後、非同期で追加の検証を実行します。202
レスポンスを受信してもメトリクスが見つからない場合は、この非同期検証中に New Relic がエラーを検出したことを示しています。
これらのエラーは、使用した Insert API キーに関連付けられたアカウントでNrIntegrationError
イベントをクエリすることで見つけることができます。各リクエストのrequestId
は、 NrIntegrationError
イベントでタグ付けされます。詳しくは、 NRIntegrationError
イベントのトラブルシューティングを参照してください。
ステータスコード
Metric APIは、以下のHTTPステータスコードを返すことができます。
ステータスコード | 定義 |
---|---|
| データを受け付けました。 |
| リクエストの構造が無効です。 |
| 認証に失敗しました。 |
| リクエストパスが正しくありません。 |
| POST以外のリクエストメソッドを使用しました。 |
| リクエストがエンドポイントに到達するまでに時間がかかりすぎました。 |
|
|
| ペイロードが大きすぎました。ペイロードは1MB(10^6バイト)以下でなければなりません。 |
| リクエストURIが長すぎました。 |
|
|
| リクエストレートのクォータを超えてしまいました。 |
| リクエストヘッダーが長すぎます。 |
| サーバーエラーが発生しました(再試行してください)。 |