NerdGraph API를 사용하면 합성 모니터 생성, 업데이트 또는 삭제를 자동화할 수 있습니다.
요구 사항
요구 사항은 다음과 같습니다.
- 일반 NerdGraph 요구 사항
- 관련 사용자 권한: NerdGraph 사용에 적용되는 합성 UI 사용에 적용되는 동일한 합성 모니터링 권한
NerdGraph 탐색기의 필드 이해
NerdGraph 탐색기 에서 필드 정의를 볼 수 있지만 LOCATION
, PERIOD
, TAGS
및 기타 필드를 더 잘 이해하는 데 도움이 될 수 있습니다.
PERIOD
속성은 모니터가 실행되는 시간 간격을 정의합니다. 간격을 정의하려면 다음 형식을 사용하십시오.
EVERY_MINUTE
1분마다.EVERY_N_MINUTES
, 여기서 'N'은 분입니다. 지원되는 값은EVERY_5_MINUTES
,EVERY_10_MINUTES
,EVERY_15_MINUTES
및EVERY_30_MINUTES
입니다.EVERY_HOUR
매시간.EVERY_N_HOURS
, 여기서 'N'은 시간입니다. 지원되는 값은EVERY_6_HOURS
및EVERY_12_HOURS
입니다.EVERY_DAY
하루에 한 번.
태그는 선택 사항입니다. 모니터 생성 중 또는 나중에 NerdGraph 또는 UI에서 태깅 호출을 사용하여 태그를 추가할 수 있습니다. 키와 값이 포함된 배열을 사용하여 단일 돌연변이 호출에 여러 태그를 추가할 수 있습니다.
일부 필드는 고급 구성을 위한 것입니다. 이는 선택 사항입니다.
핑 모니터 의 경우 다음이 포함됩니다.
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을 입력합니다.
모든 모니터의 경우:
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 } } }
깨진 링크 모니터는 웹 페이지의 링크에 오류가 있는지 확인합니다. 다음은 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를 포함하는 런타임 개체를 포함합니다. 레거시 런타임으로 다운그레이드하려면 이 객체를 포함하고 이러한 속성을 빈 문자열로 설정하십시오. 레거시 런타임을 계속 사용하려면 이 개체와 이러한 속성을 포함하지 마십시오.
이것을 사용하여 핑 모니터를 업데이트하십시오.
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 } }}