NerdGraph APIを使用すると、合成モニターの作成、更新、または削除を自動化できます。
要件
要件は、以下のとおりです。
- 一般的なNerdGraphの要件
- 関連するユーザー権限:合成UIの使用に適用されるのと同じ合成監視権限がNerdGraphの使用に適用されます
NerdGraphエクスプローラーのフィールドを理解する
NerdGraphエクスプローラーでフィールド定義を表示できますが、 LOCATION
、 PERIOD
、 TAGS
、およびその他のフィールドをよりよく理解するのに役立つ場合があります。
スクリプトでプライベートロケーションを識別するには、プライベートロケーションのエンティティGUIDを使用します。スクリプトが正常に実行されることを確認するには、 vsePassword
属性も含めます。例えば:
locations: {
private: {
guid: LOCATION_ENTITY_GUID,
vsePassword: YOUR_VSE_PASSWORD
}
}
パブリックロケーションは、AWS_なしでロケーション識別子を使用します。次に例を示します。
locations: { public: ["US_EAST_2", "US_WEST_1"]}
PERIOD
属性は、モニターが実行される時間間隔を定義します。間隔を定義するには、次の形式を使用します。
EVERY_MINUTE
毎分。EVERY_N_MINUTES
、ここで、「N」は分です。サポートされている値には、EVERY_5_MINUTES
、EVERY_10_MINUTES
、EVERY_15_MINUTES
、およびEVERY_30_MINUTES
が含まれます。EVERY_HOUR
1時間ごとに。EVERY_N_HOURS
、ここで、「N」は時間です。サポートされている値には、EVERY_6_HOURS
とEVERY_12_HOURS
が含まれます。EVERY_DAY
1日1回。
タグはオプションです。モニターの作成中、または後でNerdGraphまたはUIのタグ付け呼び出しを使用してタグを追加できます。キーと値を含む配列を使用して、1回のミューテーション呼び出しで複数のタグを追加できます。
一部のフィールドは、より高度な構成用です。これらはオプションです。
pingモニターの場合、これらには次のものが含まれます。
HEADER_NAME
:リクエストに表示されるカスタムヘッダー名。
HEADER_VALUE
:リクエストのカスタムヘッダー値。
REDIRECT_IS_FAILURE
:リダイレクトされた場合、モニターは失敗を報告します。
VALIDATION_TEXT
:このテキストがモニターの応答に含まれていない場合、失敗を返します。
TLS_VALIDATION
:SSL証明書チェーンの有効性を検証します。
単純なブラウザモニターの場合:
RUNTIME_TYPE
:モニターが使用するランタイムタイプ。 「CHROME_BROWSER」が唯一受け入れられる値です。
RUNTIME_TYPE_VERSION
:モニターで使用されるランタイムタイプのバージョン。受け入れられる値は「100」のみです。
SCRIPT_LANGUAGE
:モニターで使用されている言語。 「JAVASCRIPT」が唯一の受け入れられる値です。
スクリプト化されたAPIモニターの場合:
SCRIPT_CONTENT
:スクリプトの実際の内容。これはbased64でエンコードされるべきではありません。
RUNTIME_TYPE
:モニターが使用するランタイムタイプ。 「NODE_API」が唯一の受け入れられる値です。
RUNTIME_TYPE_VERSION
:モニターで使用されるランタイムタイプのバージョン。受け入れられる値は
16.10
のみです。SCRIPT_LANGUAGE
:モニターで使用されている言語。 「JAVASCRIPT」が唯一の受け入れられる値です。
SCRIPT_CONTENT
:スクリプトの実際の内容。これはbased64でエンコードされるべきではありません。
RUNTIME_TYPE
:モニターが使用するランタイムタイプ。 「CHROME_BROWSER」が唯一受け入れられる値です。
RUNTIME_TYPE_VERSION
:モニターで使用されるランタイムタイプのバージョン。受け入れられる値は「100」のみです。
SCRIPT_LANGUAGE
:モニターで使用されている言語。 「JAVASCRIPT」が唯一の受け入れられる値です。
証明書チェックモニターの場合:
DAYS_UNTIL_EXPIRATION
:証明書を更新する必要があるときに通知します。たとえば、証明書の有効期限が切れる30日前に通知が必要な場合は、30と入力します。
クエリを使用してデータを取得する
クエリはデータをフェッチするように要求します。合成エンティティで利用できる追加のクエリ機能については、 NerdGraphエンティティAPIチュートリアルをご覧ください。
合成モニターに照会して、データに関する現在の状況情報またはモニター構成に関する詳細を取得できます。クエリの例は次のとおりです。
{ actor { entitySearch(query: "domain = 'SYNTH' AND type = 'MONITOR'") { results { entities { ... on SyntheticMonitorEntityOutline { guid name accountId monitorType tags { key values } } } } } }}
あなたはあなたのプライベートな場所を照会することができます:
{ actor { entitySearch(query: "domain = 'SYNTH' AND type = 'PRIVATE_LOCATION'") { results { entities { accountId guid name tags { key values } } } } }}
安全なクレデンシャルをクエリすると、メタデータのみを取得できますが、クレデンシャル値自体は取得できません。
{ actor { entitySearch(query: "domain = 'SYNTH' AND type = 'SECURE_CRED'") { results { entities { ... on SecureCredentialEntityOutline { accountId guid name tags { key values } updatedAt } } } } }}
スクリプト化されたAPIまたはスクリプト化されたブラウザーモニターで使用されるスクリプトを取得します。他の種類のモニターはエラーを返します。
{
actor {
account(id: YOUR_ACCOUNT_ID) {
synthetics {
script(monitorGuid: "ENTITY_GUID") {
text
}
}
}
}
}
ステップモニター用に構成されたステップを取得します。他の種類のモニターはエラーを返します。
{
actor {
account(id: YOUR_ACCOUNT_ID) {
synthetics {
steps(monitorGuid: "ENTITY_GUID") {
ordinal
type
values
}
}
}
}
}
合成モニターを作成する
以下は、合成モニターの作成を自動化するためのサンプルリクエストです。
ヒント
新しいランタイムを使用するには、 runtimeType
、 runtimeTypeVersion
、およびscriptLanguage
を含むランタイムオブジェクトを含めます。レガシーランタイムを引き続き使用するには、ランタイムオブジェクトとこれらの属性を含めないでください。
Pingモニターは、アプリケーションが実行されていることを確認します。 NerdGraphで作成する例を次に示します。
mutation {
syntheticsCreateSimpleMonitor (
accountId: YOUR_ACCOUNT_ID
monitor: {
locations: {
public: ["LOCATION_1", "LOCATION_2"]
},
name: "YOUR_MONITOR_NAME",
period: PERIOD,
status: STATUS,
uri: "MONITORED_URI",
advancedOptions: {
customHeaders: {
name: "HEADER_NAME",
value: "HEADER_VALUE"
},
redirectIsFailure: REDIRECT_IS_FAILURE,
responseValidationText: "VALIDATION_TEXT",
shouldBypassHeadRequest: BYPASS_HEAD_REQUEST,
useTlsValidation: TLS_VALIDATION
}
}
) {
errors {
description
type
}
}
}
シンプルなブラウザモニターは、Chromeインスタンスを使用して顧客の訪問を模倣します。 NerdGraphで作成する例を次に示します。
mutation {
syntheticsCreateSimpleBrowserMonitor (
accountId: YOUR_ACCOUNT_ID,
monitor: {
locations: {
public: ["LOCATION_1", "LOCATION_2"]
},
name: "YOUR_MONITOR_NAME",
period: PERIOD,
runtime: {
runtimeType: "RUNTIME_TYPE",
runtimeTypeVersion: "RUNTIME_TYPE_VERSION",
scriptLanguage: "SCRIPT_LANGUAGE"
}
status: STATUS,
uri: "MONITORED_URI",
advancedOptions: {
customHeaders: {
name: "HEADER_NAME",
value: "HEADER_VALUE"
},
enableScreenshotOnFailureAndScript: ENABLE_SCREENSHOT,
responseValidationText: "VALIDATION_TEXT",
useTlsValidation: TLS_VALIDATION
}
) {
errors {
description
type
}
}
}
スクリプト化されたブラウザモニターは、ページやアプリケーションとのより複雑な相互作用です。 NerdGraphで作成する例を次に示します。
mutation {
syntheticsCreateScriptBrowserMonitor (
accountId: YOUR_ACCOUNT_ID,
monitor: {
locations: {
public: ["LOCATION_1", "LOCATION_2"]
},
name: "MONITOR_NAME",
period: PERIOD,
runtime: {
runtimeType: "RUNTIME_TYPE",
runtimeTypeVersion: "RUNTIME_TYPE_VERSION",
scriptLanguage: "SCRIPT_LANGUAGE"
}
script: "SCRIPT_CONTENT",
status: STATUS,
advancedOptions: {
enableScreenshotOnFailureAndScript: ENABLE_SCREENSHOT
}
}
) {
errors {
description
type
}
}
}
スクリプト化されたAPIモニターは、APIエンドポイントをチェックします。 NerdGraphで作成する例を次に示します。
mutation {
syntheticsCreateScriptApiMonitor (
accountId: YOUR_ACCOUNT_ID,
monitor: {
locations: {
public: ["LOCATION_1", "LOCATION_2"]
},
name: "YOUR_MONITOR_NAME",
period: PERIOD,
runtime: {
runtimeType: "RUNTIME_TYPE",
runtimeTypeVersion: "RUNTIME_TYPE_VERSION",
scriptLanguage: "SCRIPT_LANGUAGE"
}
script: "SCRIPT_CONTENT",
status: STATUS
}
) {
errors {
description
type
}
}
}
ステップモニターは、コードレスのマルチステップブラウザーベースのモニターを提供します。 NerdGraphで作成する例を次に示します。
mutation {
syntheticsCreateStepMonitor (
accountId: NR_ACCOUNT_ID,
monitor: {
locations: {
public: ["LOCATION_1", "LOCATION_2"]
},
name: "MONITOR_NAME",
period: PERIOD,
status: STATUS,
steps: [{
ordinal: 0,
type: NAVIGATE,
values: ["MONITORED_URI"],["USER_AGENT"]
},{
ordinal: STEP_NUMBER,
type: STEP_TYPE,
values: ["CONDITIONAL_TYPE","VALUE"]
}]
advancedOptions: {
enableScreenshotOnFailureAndScript: ENABLE_SCREENSHOT
}
}
) {
errors {
description
type
}
}
}
SSL証明書の有効期限が近づいたときに通知するようにモニターを設定します。 NerdGraphで作成する例を次に示します。
mutation {
syntheticsCreateCertCheckMonitor (
accountId: YOUR_ACCOUNT_ID,
monitor: {
domain: "DOMAIN",
locations: {
public: ["LOCATION_1", "LOCATION_2"]
},
name: "YOUR_MONITOR_NAME",
numberDaysToFailBeforeCertExpires: DAYS_UNTIL_EXPIRATION,
period: PERIOD,
status: STATUS
}
) {
errors {
description
type
}
}
}
壊れたリンクモニターは、Webページ上のリンクに障害がないかチェックします。 NerdGraphで作成する例を次に示します。
mutation {
syntheticsCreateBrokenLinksMonitor (
accountId: YOUR_ACCOUNT_ID,
monitor: {
locations: {
public: ["LOCATION_1", "LOCATION_2"]
},
name: "YOUR_MONITOR_NAME",
period: PERIOD,
status: STATUS,
uri: "MONITOR_URI",
tags: {
key: "YOUR_TAG_NAME",
values: "TAG_VALUE"
}
}
) {
errors {
description
type
}
}
}
合成モニターを更新する
作成後にモニターの種類を変更することはできませんが、設定を更新することはできます。リクエストの一部として必要なのは、GUIDと更新が必要な設定のみです。
ヒント
runtimeType、runtimeTypeVersion、およびscriptLanguageを含むランタイムオブジェクトを含めて、新しいランタイムを使用するようにモニターをアップグレードします。従来のランタイムを引き続き使用するには、このオブジェクトとこれらの属性を含めないでください。
これを使用して、pingモニターを更新します。
mutation {
syntheticsUpdateSimpleMonitor (
guid: "ENTITY_GUID",
monitor: {
locations: {
public: ["LOCATION_1", "LOCATION_2"]
},
name: "YOUR_MONITOR_NAME",
period: PERIOD,
status: STATUS,
uri: "MONITORED_URI",
advancedOptions: {
customHeaders: {
name: "HEADER_NAME",
value: "HEADER_VALUE"
},
redirectIsFailure: REDIRECT_IS_FAILURE,
responseValidationText: "VALIDATION_TEXT",
shouldBypassHeadRequest: BYPASS_HEAD_REQUEST,
useTlsValidation: TLS_VALIDATION
}
}
) {
errors {
description
type
}
}
}
単純なブラウザーモニター(ランタイムバージョンをアップグレードする機能を含む)を更新するには、次を使用します。
mutation {
syntheticsUpdateSimpleBrowserMonitor (
guid: ENTITY_GUID,
monitor: {
locations: {
public: ["LOCATION_1", "LOCATION_2"]
},
name: "YOUR_MONITOR_NAME",
period: PERIOD,
runtime: {
runtimeType: "RUNTIME_TYPE",
runtimeTypeVersion: "RUNTIME_TYPE_VERSION",
scriptLanguage: "SCRIPT_LANGUAGE"
}
status: STATUS,
uri: "MONITORED_URI",
advancedOptions: {
customHeaders: {
name: "HEADER_NAME",
value: "HEADER_VALUE"
},
enableScreenshotOnFailureAndScript: ENABLE_SCREENSHOT,
responseValidationText: "VALIDATION_TEXT",
useTlsValidation: TLS_VALIDATION
}
) {
errors {
description
type
}
}
}
スクリプト化されたブラウザーモニター(ランタイムバージョンをアップグレードする機能を含む)を更新するには、次を使用します。
mutation {
syntheticsUpdateScriptBrowserMonitor (
guid: ENTITY_GUID,
monitor: {
locations: {
public: ["LOCATION_1", "LOCATION_2"]
},
name: "MONITOR_NAME",
period: PERIOD,
runtime: {
runtimeType: "RUNTIME_TYPE",
runtimeTypeVersion: "RUNTIME_TYPE_VERSION",
scriptLanguage: "SCRIPT_LANGUAGE"
}
script: "SCRIPT_CONTENT",
status: STATUS,
advancedOptions: {
enableScreenshotOnFailureAndScript: ENABLE_SCREENSHOT
}
}
) {
errors {
description
type
}
}
}
スクリプト化されたAPIモニター(ランタイムバージョンをアップグレードする機能を含む)を更新するには、次を使用します。
mutation {
syntheticsUpdateScriptApiMonitor (
guid: ENTITY_GUID,
monitor: {
locations: {
public: ["LOCATION_1", "LOCATION_2"]
},
name: "YOUR_MONITOR_NAME",
period: PERIOD,
runtime: {
runtimeType: "RUNTIME_TYPE",
runtimeTypeVersion: "RUNTIME_TYPE_VERSION",
scriptLanguage: "SCRIPT_LANGUAGE"
}
script: "SCRIPT_CONTENT",
status: STATUS
}
) {
errors {
description
type
}
}
}
これを使用して、ステップモニターを更新します。
mutation {
syntheticsCreateStepMonitor (
accountId: NR_ACCOUNT_ID,
monitor: {
locations: {
public: ["LOCATION_1", "LOCATION_2"]
},
name: "MONITOR_NAME",
period: PERIOD,
status: STATUS,
steps: [{
ordinal: 0,
type: NAVIGATE,
values: ["MONITORED_URI"],["USER_AGENT"]
},{
ordinal: STEP_NUMBER,
type: STEP_TYPE,
values: ["VALUE_1","VALUE_2"]
}]
advancedOptions: {
enableScreenshotOnFailureAndScript: ENABLE_SCREENSHOT
}
}
) {
errors {
description
type
}
}
}
これを使用して、証明書チェックモニターを更新します。
mutation {
syntheticsUpdateCertCheckMonitor (
guid: ENTITY_GUID,
monitor: {
domain: "DOMAIN",
locations: {
public: ["LOCATION_1", "LOCATION_2"]
},
name: "YOUR_MONITOR_NAME",
numberDaysToFailBeforeCertExpires: DAYS_UNTIL_EXPIRATION,
period: PERIOD,
status: STATUS
}
) {
errors {
description
type
}
}
}
これを使用して、壊れたリンクモニターを更新します。
mutation {
syntheticsUpdateBrokenLinksMonitor (
guid: ENTITY_GUID,
monitor: {
locations: {
public: ["LOCATION_1", "LOCATION_2"]
},
name: "YOUR_MONITOR_NAME",
period: PERIOD,
status: STATUS,
uri: "MONITOR_URI",
tags: {
key: "YOUR_TAG_NAME",
values: "TAG_VALUE"
}
}
) {
errors {
description
type
}
}
}
以下の例を使用して、単純なブラウザー、スクリプト化されたAPI、またはスクリプト化されたブラウザーモニターを新しいChrome100またはNode16.10ランタイムに更新できます。次の例では、スクリプト化されたブラウザモニターを従来のランタイムから新しいランタイムにアップグレードします。
以下の例を使用して単純なブラウザモニターを更新するには、ミューテーションを{
syntheticsUpdateScriptBrowserMonitor
}ではなくsyntheticsUpdateSimpleBrowserMonitor
に変更します。以下の例を使用してスクリプト化されたAPIモニターを更新するには、ミューテーションを{
syntheticsUpdateScriptBrowserMonitor
}ではなくsyntheticsUpdateScriptApiMonitor
に変更します。実行時設定の詳細については、 optional-fieldsを確認してください。
mutation { syntheticsUpdateScriptBrowserMonitor ( guid: "<ENTITY_GUID>", monitor: { runtime: { runtimeType: "RUNTIME_TYPE", runtimeTypeVersion: "RUNTIME_TYPE_VERSION", scriptLanguage: "SCRIPT_LANGUAGE" } } ) { errors { description type } } }
合成モニターを削除する
次のスクリプトを使用して、モニターを削除します。
モニターエンティティGUIDを使用してモニターを削除します。
mutation {
syntheticsDeleteMonitor (
guid: "ENTITY_GUID"
) {
errors {
description
}
}
}
プライベートな場所を管理する
プライベートロケーションを使用すると、ファイアウォールの背後にあるアプリケーションを監視できます。プライベートロケーションを作成するときは、プライベートミニオンをインストールして構成し、そのプライベートロケーションに割り当てられたモニターを実行します。
mutation{
syntheticsCreatePrivateLocation (
accountId: NR_ACCOUNT_ID,
name: "PrivateLocationName",
description: "Optional description",
verifiedScriptExecution: false
) {
guid
errors {
description
type
}
}
}
mutation {
syntheticsUpdatePrivateLocation (
guid: YOUR_ENTITY_GUID,
description: "EnterYourDescription",
verifiedScriptExecution: true
) {
description
verifiedScriptExecution
errors {
description
type
}
}
}
mutation {
syntheticsDeletePrivateLocation (
guid: YOUR_ENTITY_GUID
) {
errors {
description
type
}
}
}
扱いにくいバックログをクリアする必要がある場合は、次を使用してください。
mutation {
syntheticsPurgePrivateLocationQueue (
guid: YOUR_ENTITY_GUID
) {
errors {
description
type
}
}
}
安全な資格情報を管理する
パスワード、APIキー、エンコードされた証明書など、モニターで使用される保護された情報を保存、保護、および集中管理する場合は、 安全なクレデンシャルを使用します。 NerdGraphを使用すると、何らかの理由でクレデンシャルをリセットする必要がある場合に、安全なクレデンシャルの値をプログラムで変更できます。
mutation {
syntheticsCreateSecureCredential (
accountId: YOUR_ENTITY_GUID,
description: "YourOptionalDescription",
key: SECURE_CREDENTIAL_NAME,
value: SECURE_CREDENTIAL_VALUE
) {
errors {
description
}
}
}
mutation {
syntheticsUpdateSecureCredential (
accountId: YOUR_ACCOUNT_ID,
description: "YourOptionalDescription",
key: SECURE_CREDENTIAL_NAME,
value: SECURE_CREDENTIAL_VALUE) {
createdAt
lastUpdate
errors {
description
}
}
}
mutation {
syntheticsDeleteSecureCredential (
accountId: YOUR_ACCOUNT_ID,
key: SECURE_CREDENTIAL_NAME
) {
errors {
description
}
}
}