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: スクリプトの実際の内容。これは base64 でエンコードしないでください。
RUNTIME_TYPE: モニターが使用するランタイム タイプ。"NODE_API" のみが受け入れられる値です。
RUNTIME_TYPE_VERSION: モニターが使用するランタイム タイプのバージョン。受け入れられる唯一の値は
16.10
です。SCRIPT_LANGUAGE: モニターで使用される言語。"JAVASCRIPT" のみが受け入れられる値です。
SCRIPT_CONTENT: スクリプトの実際の内容。これは base64 でエンコードしないでください。
RUNTIME_TYPE: モニターが使用するランタイム タイプ。"CHROME_BROWSER" のみが受け入れられる値です。
RUNTIME_TYPE_VERSION: モニターが使用するランタイム タイプのバージョン。「100」のみが受け入れられる値です。
SCRIPT_LANGUAGE: モニターで使用される言語。"JAVASCRIPT" のみが受け入れられる値です。
証明書チェックモニターの場合:
DAYS_UNTIL_EXPIRATION: 証明書を更新する必要があるときに通知します。たとえば、証明書の有効期限が切れる 30 日前に通知が必要な場合は、30 を入力します。
すべてのモニターの場合:
APDEX_TARGET: SLA レポートの入力に使用されるモニターの Apdex ターゲット。デフォルトは 7 秒 (7000ms) です。
クエリを使用してデータを取得する
クエリはデータをフェッチするように要求します。合成エンティティで利用できる追加のクエリ機能については、 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 }, apdexTarget: APDEX_TARGET } ) { 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 }, apdexTarget: APDEX_TARGET ) { 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 }, apdexTarget: APDEX_TARGET } ) { 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, apdexTarget: APDEX_TARGET } ) { 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 }, apdexTarget: APDEX_TARGET }) { 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, apdexTarget: APDEX_TARGET } ) { 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, apdexTarget: APDEX_TARGET, 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 }, apdexTarget: APDEX_TARGET } ) { 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 }, apdexTarget: APDEX_TARGET ) { 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 }, apdexTarget: APDEX_TARGET } ) { 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, apdexTarget: APDEX_TARGET } ) { 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 }, apdexTarget: APDEX_TARGET } ) { 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, apdexTarget: APDEX_TARGET } ) { errors { description type } } }
これを使用して、壊れたリンクモニターを更新します。
mutation { syntheticsUpdateBrokenLinksMonitor ( guid: ENTITY_GUID, monitor: { locations: { public: ["LOCATION_1", "LOCATION_2"] }, name: "YOUR_MONITOR_NAME", period: PERIOD, status: STATUS, apdexTarget: APDEX_TARGET, uri: "MONITOR_URI", tags: { key: "YOUR_TAG_NAME", values: "TAG_VALUE" } } ) { errors { description type } }}
以下の例を使用して、単純なブラウザ、スクリプト化された API、またはスクリプト化されたブラウザ モニターを新しい Chrome 100+ または Node.js 16.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 {descriptiontype}}}
合成モニターを削除する
次のスクリプトを使用して、モニターを削除します。
モニターエンティティ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 } }}