Synthetics REST APIを使用して、ping、シンプルブラウザ、スクリプト化ブラウザ、APIテストモニターなど、すべてのタイプのSyntheticモニター を作成および管理します。REST APIを介して、すべてのSyntheticsモニタリングデータを入手できます。
Synthetics REST APIを使用するには、その機能とユーザーキー を使用できるユーザーロールが必要です。
入手可能なすべてのNew Relic APIの概要については、API入門 を参照してください。
機能 Synthetics API(v3)の最新バージョンには、以下の機能が追加されました。
Synthetics API(v3)
機能
POSTリクエストとPUTリクエストのオプションフィールド
SIMPLE
とBROWSER
タイプのモニターのオプションは、UIで使用する場合と同じ要領で指定できます。
PATCHリクエスト
PUT内のモニターエンティティ全体を指定する代わりに、変更するモニターのフィールドのみを更新できます。また、適切なタイプのモニターを使用していることを前提に、OPTION
を指定することもできます。
400 Bad Request
(不正なリクエスト)エラーの詳細
Synthetics API v3以降では、検証エラーが発生すると、できるだけ多くの情報が表示されます。これで、リクエストの問題点を特定しやすくなります。以前のAPIバージョンでは、最初にエラーが発生した時点で検証が中断されていましたが、このAPIではすべての検証が実行され、検証に失敗したすべてのエラーが表示されます。
ページ付け
大きなAPIレスポンスには、適切なページ番号付けが施されます。
NRQLクエリを使用して、APIを介して実行した過去の変更を分析 することもできます。
APIにおけるモニタータイプ 以下に、モニターのタイプ とAPIにおける名称を示します。
モニターのタイプ
API名
Ping
SIMPLE
シンプルブラウザ
Browser
スクリプト化ブラウザ
SCRIPT_BROWSER
APIテスト
SCRIPT_API
APIの使用 Synthetics REST API を使用するには、Syntheticsモニターの管理およびユーザーキー の使用が可能である必要があります(REST APIキーは動作しません)。
このAPIは、すべてのSyntheticsモニターで使用できます。(また、スクリプト化ブラウザ用の追加のAPIメソッドとAPIテストモニター を使用して、これらのモニターに関連付けられたスクリプトを更新することもできます。)APIを介して、すべてのSyntheticsデータを入手できます。APIの例には、cURLコマンドが表示されます。
米国ベースのアカウントの場合、次のエンドポイントを使用します:
https://synthetics.newrelic.com/synthetics/api
EUベースのアカウント の場合、次のエンドポイントを使用します:
https://synthetics.eu.newrelic.com/synthetics/api
注意 Synthetics REST APIでは、アカウントのリクエスト速度が1秒あたり3つのリクエストに制限されます。この閾値を超えて行われたリクエストは、429
レスポンスコードを返します。
すべてのモニターを取得する New Relicアカウントに含まれるすべてのモニターのリストを表示するには、GETリクエストを$API_ENDPOINT/v3/monitors
に送信します。たとえば、
curl -v \
-H 'Api-Key:$API_KEY ' $API_ENDPOINT /v3/monitors
リクエストに成功すると、200 OK
のレスポンスが返されます。返されるデータ は、次の形式を使用したJSONオブジェクトです。
"id": "2a1bc369-7654-489d-918e-f6g135h7i2jk",
"uri": "http://example.com",
"modifiedAt": "2016-09-26T23:12:46.981+0000",
"createdAt": "2016-09-26T23:12:46.981+0000",
クエリの引数:
オフセット
:モニターのカウントオフセット。デフォルトは0件。たとえば、モニターが40台あり、オフセット値に20を使用すると、21~40のモニターが返されます。上限
:ページあたりに表示される結果は、最高で100件です。デフォルトは20件です。以下のように、cURLコマンドにこれらの値を含めることができます。
curl -v \
-H 'Api-Key:$API_KEY ' $API_ENDPOINT /v3/monitors \
-G -d 'offset=20&limit=100'
ヘッダーには、モニターのページング を容易にするLink
が含まれます。例:
<https://synthetics.newrelic.com/synthetics/api/v3/monitors/?offset=0&limit=20>; rel="first", <https://synthetics.newrelic.com/synthetics/api/v3/monitors/?offset=40&limit=20>; rel="last"
特定のモニターを取得する 単一のSyntheticsモニターを表示するには、GETリクエストを$API_ENDPOINT/v3/monitors/$MONITOR_ID
に送信します。
curl -v \
-H 'Api-Key:$API_KEY ' $API_ENDPOINT /v3/monitors/$MONITOR_ID
リクエストに成功すると、200 OK
のレスポンスが返されます。返されるデータ は、次の形式を使用したJSONオブジェクトです。
{
"id": UUID ,
"name": string ,
"type": string ,
"frequency": integer ,
"uri": string ,
"locations": array of strings ,
"status": string ,
"slaThreshold": double ,
"userId": integer ,
"apiVersion": string
}
無効なモニターIDは、404 Not Found: The specified monitor doesn't exist
を返します。
モニターを作成する Syntheticsアカウントに新規のモニターを追加するには、モニターを記述するJSONペイロードと共に、POSTリクエストを$API_ENDPOINT/v3/monitors
に送信します。
特に明記しない限り、次の例のすべてのフィールドが必須です。
"name": string [required],
"type": string (SIMPLE, BROWSER, SCRIPT_API, SCRIPT_BROWSER) [required],
"frequency": integer (minutes) [required, must be one of 1, 5, 10, 15, 30, 60, 360, 720, or 1440],
"uri": string [required for SIMPLE and BROWSER type],
"locations": array of strings [at least one required],
"status": string (ENABLED, MUTED, DISABLED) [required],
"validationString": string [only valid for SIMPLE and BROWSER types],
"verifySSL": boolean (true, false) [only valid for SIMPLE and BROWSER types],
"bypassHEADRequest": boolean (true, false) [only valid for SIMPLE types],
"treatRedirectAsFailure": boolean (true, false) [only valid for SIMPLE types]
さらに、REST APIを介してスクリプト化されたモニター用のスクリプトを追加する には、追加のAPIエンドポイント を呼び出して、作成したばかりのモニター用のスクリプトを送信します。検証済みスクリプトの実行 を有効にしたプライベートロケーションを使用している場合は、スクリプト実行が検証済みのスクリプトロケーション をご覧ください。
次の例では、以下に示す特定の値を使用してSynthetic REST APIの属性 を置き換えます。
curl -v \
-X POST -H 'Api-Key:$API_KEY ' \
-H 'Content-Type: application/json' $API_ENDPOINT /v3/monitors \
-d '{ "name" : "monitor1 ", "frequency" : 15 , "uri" : "http://my-uri.com ", "locations" : [ "AWS_US_WEST_1 " ], "type" : "browser ", "status" : "enabled", "slaThreshold" : "1.0"}'
リクエストに成功すると、location
ヘッダーで指定された新規作成モニターのURLと共に、201 Created
レスポンスが返されます。可能なエラーコード:
400 Bad Request
:1つ以上のモニター値が無効であるか、リクエストの形式が無効です。例:頻度が範囲外であるか、指定されたロケーションの1つ以上が無効です。(レスポンスの本文に含まれるエラーメッセージを参照してください。)402 Payment Required
:モニターを作成すると、アカウントで購入したチェックの限度額を超える定期的なチェックが増加します。既存のモニターを更新する New Relicで既存のモニターを更新するには、PUTリクエストを$API_ENDPOINT/v3/monitors/$MONITOR_ID
に送信します。さらに、スクリプト化モニターの場合、BASE64でエンコードされたスクリプトを更新する の手順に従います。
すべてのフィールドは必須です。ただし、モニターのTYPE
は変更できません 。
特定のモニターIDを使用し、Synthetic REST APIの属性 を特定の値で置き換えます。
curl -v \
-X PUT -H 'Api-Key:$API_KEY ' \
-H 'Content-Type: application/json' $API_ENDPOINT /v3/monitors/$MONITOR_ID \
-d '{ "name" : "updated monitor name ", "type": "monitor type ", "frequency" : 15 , "uri" : "http://my-uri.com/ ", "locations" : [ "AWS_US_WEST_1 " ], "status" : "enabled ", "slaThreshold": "7.0" }'
PUTリクエストの目的は、ターゲットエンティティを置き換えることにあります。既存のモニターを更新する場合、新しいモニター を作成するときにJSONペイロードで使用する、すべての属性が必要になります。
リクエストに成功すると、空白の本文と共に、204 No Content
レスポンスが返されます。可能なエラーコード:
400 Bad Request
:1つ以上のモニター値が無効であるか、リクエストの形式が無効です。たとえば、頻度が範囲外であるか、指定されたロケーションの1つ以上が無効です。(レスポンスの本文に含まれるエラーメッセージを参照してください。)404 Not Found
:指定されたモニターが存在しません。既存のモニターにパッチを適用する New Relicで既存のモニターにパッチを適用するには、$API_ENDPOINT/v3/monitors/$MONITOR_ID
リクエストを送信します。
特定のモニターIDを使用し、Synthetic REST APIの属性 を特定の値で置き換えます。
curl -v \
-X PATCH -H 'Api-Key:$API_KEY ' \
-H 'Content-Type: application/json' $API_ENDPOINT /v3/monitors/$MONITOR_ID \
-d '{ "name" : "updated monitor name " }'
PATCHリクエストの目的は、エンティティ全体を更新する代わりに、New Relic Syntheticsモニターの個別の属性を更新することにあります。これにより、更新する属性のみを提供できます。
リクエストに成功すると、空白の本文と共に、204 No Content
レスポンスが返されます。可能なエラーコード:
400 Bad Request
:1つ以上のモニター値が無効であるか、リクエストの形式が無効です。たとえば、頻度が範囲外であるか、指定されたロケーションの1つ以上が無効です。(レスポンスの本文に含まれるエラーメッセージを参照してください。)404 Not Found
:指定されたモニターが存在しません。既存のモニターを削除する New Relic Syntheticsで既存のモニターを削除するには、$API_ENDPOINT /v3/monitors/$MONITOR_ID
にDELETEリクエストを送信します。
curl -v \
-H 'Api-Key:$API_KEY ' \
-X DELETE $API_ENDPOINT /v3/monitors/$MONITOR_ID
リクエストに成功すると、空白の本文と共に、204 No Content
レスポンスが返されます。リクエストに失敗すると、404 Not Found
レスポンスが返されます:指定されたモニターは存在しません。
有効なロケーションのリストを取得する New Relic Syntheticsで有効なロケーションのリストを取得するには、以下のコマンドを使用します。
curl -v \
-X GET -H 'Api-Key:$API_KEY ' $API_ENDPOINT /v1/locations
スクリプト化ブラウザとAPIテストモニター用のスクリプトAPI 汎用APIに加えて、スクリプト化ブラウザ(SCRIPT_BROWSER
)とAPIテストブラウザ(SCRIPT_API
)用のAPIメソッドがいくつかあります。以下に、cURLコマンドの例を示します。
モニターのスクリプトを取得する お使いのアカウント用のNew Relic Syntheticsで特定のSCRIPT_BROWSER
またはSCRIPT_API
モニターに関連するスクリプトを表示するには、GETリクエストを$API_ENDPOINT /v3/monitors/$MONITOR_ID/script
に送信します。例:
curl -v
-H 'Api-Key: $API_KEY '
$API_ENDPOINT /v3/monitors/$MONITOR_ID /script
リクエストに成功すると、200 OK
のレスポンスが返されます。返されるデータは、次の形式を使用したJSONオブジェクトです。
{
"scriptText": BASE64 encoded string
}
可能なエラーコード:
403 Forbidden:
指定されたモニターのタイプは、SCRIPT_BROWSERまたはSCRIPT_APIではありません。404 Not Found:
指定されたモニターが存在しないか、またはモニターに関連付けられたスクリプトが存在しません。モニターのスクリプトを更新する お使いのアカウント用のNew Relic Syntheticsで特定のSCRIPT_BROWSER
またはSCRIPT_API
モニターに関連するスクリプトを更新するには、scriptText
を含むJSONペイロード(必須)と共に、PUTリクエストを$API_ENDPOINT /v3/monitors/$MONITOR_ID/script
に送信します。
scriptPayload='{"scriptText":BASE64 encoded string }'
curl -v -X PUT \
-H 'Api-Key:$API_KEY ' \
-H 'Content-Type: application/json' \
$API_ENDPOINT /v3/monitors/$MONITOR_UUID /script \
-d $scriptPayload
検証済みスクリプトの実行 を有効にしたプライベートロケーションを使用している場合は、スクリプト実行が検証済みのスクリプトロケーション をご覧ください。
リクエストに成功すると、空白の本文と一緒に204 No Content
のレスポンスが返されます。可能なエラーコード:
400 Bad Request:``scriptText
またはhmac
用の、無効のBASE64でエンコードされた文字列です。403 Forbidden:
指定されたモニターは、SCRIPT_BROWSER
またはSCRIPT_API
タイプのものではありません。404 Not Found:
指定されたモニターが存在しません。検証されたスクリプトを実行するプライベートロケーションのスクリプトの使用 検証済みのスクリプト実行 をオンにしたプライベートロケーション用にモニターを作成または更新するときは、scriptLocations
を使用してパスワードを設定する必要があります:
{
"scriptText": BASE64 encoded String ,
"scriptLocations": [
{
"name": Location name ,
"hmac" BASE64 encoded String of SHA256 HMAC for location
}
]
}
HMAC文字列を生成するために使用するパスワードは、プライベートロケーションに設定されたパスワードと一致する必要があります。検証済みスクリプトの実行 を有効にしたロケーションが複数存在する場合、各ロケ―ションでHMAC を計算する必要があります。HMAC文字列を生成する場合は、SHA256アルゴリズムをスクリプトとパスワードと一緒に使用します。
以下はスクリプトの例です。
var assert = require('assert');
この例では、password
をscriptLocation
用のパスワードとして使用します:
curl -v
-X PUT -H 'Api-Key: '$API_KEY '
-H 'content-type: application/json'
$API_ENDPOINT} /v3/monitors/$MONITOR_ID /script
-d '{ "scriptText": "dmFyIGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpOw0KYXNzZXJ0LmVxdWFsKCcxJywgJzEnKTs=","scriptLocations": [ { "name": "my_vse_enabled_location", "hmac": "MjhiNGE4MjVlMDE1N2M4NDQ4MjNjNDFkZDEyYTRjMmUzZDE3NGJlNjU0MWFmOTJlMzNiODExOGU2ZjhkZTY4ZQ=="} ]}'
重要 BASE64でエンコーディングする前に、スクリプトと計算されたHMAC値の両方から最後の改行文字を削除する必要があります。
計算ステップ:
スクリプトからHMAC値を計算します。1つの方法は使用することです:cat script | openssl dgst -sha256 -hmac "password" > hmac
openssl によって改行文字が追加された場合は、改行文字を削除します。 HMACを改行なしでBASE64でエンコードします。 スクリプト化ブラウザの例New RelicのREST APIとbashスクリプトを使用して、スクリプト化されたブラウザモニターを作成する例を示します。
スクリプト化ブラウザAPIの例 以下の例に、スクリプト化ブラウザモニターを作成するためのcURLコマンドを示します。
Bashスクリプトの例 この例には、SCRIPTED_BROWSER
モニターを作成するbashスクリプトが記載されています。
ヒント 場合によっては、-w 0
を使用して、行の折り返しを無効にします:base64 -w 0 $scriptfile
#!/bin/bash
# API key from your account settings
API_KEY=''
# Other attributes found at https://docs.newrelic.com/docs/apis/synthetics-rest-api/monitor-examples/attributes-synthetics-rest-api#api-attributes
monitorName='Test API Script '
monitorType='SCRIPT_BROWSER '
frequency=1440
locations='"AWS_US_WEST_1" , "AWS_US_EAST_1" '
slaThreshold=7.0
# Location of the file with your script
scriptfile=sample_synth_script.js
# Test that the script file exists (does not validate content)
if [ -e "$scriptfile " ]
then
script=$(cat "$scriptfile ")
payload="{ \"name\" : \"$monitorName\ ", \"frequency\ " : $frequency , \"locations\" : [ $locations ], \"status\" : \"ENABLED\", \"type\" : \"$monitorType\ ", \"slaThreshold\" : $slaThreshold, \"uri\":\"\"}"
echo "Creating monitor"
# Make cURL call to API and parse response headers to get monitor UUID
shopt -s extglob # Required to trim whitespace; see below
while IFS=':' read key value; do
# trim whitespace in "value"
value=${value##+([[:space:]])}; value=${value%%+([[:space:]])}
case "$key" in
location) LOCATION="$value "
;;
HTTP*) read PROTO STATUS MSG <<< "$key{$value:+:$value}"
;;
esac
done < <(curl -sS -i -X POST -H "Api-Key:$API_KEY " -H 'Content-Type:application/json' https://synthetics.newrelic.com/synthetics/api/v3/monitors -d "$payload")
# Validate monitor creation & add script unless it failed
if [ $STATUS = 201 ]; then
echo "Monitor created, $LOCATION "
echo "Uploading script"
# base64 encode script
encoded=`echo "$script" | base64`
scriptPayload="{\"scriptText\":\"$encoded\"}"
curl -s -X PUT -H "Api-Key:$API_KEY " -H 'Content-Type:application/json' "$LOCATION/script" -d $scriptPayload
echo "Script uploaded"
else
echo "Monitor creation failed"
fi
else
echo "script file not found, not creating monitor"
fi
その他のヘルプさらに支援が必要な場合は、これらのサポートと学習リソースを確認してください: