합성 대량 생성 API
SyntheticsBulkCreate API는 단일 동기 작업에서 여러 합성 모니터를 생성하는 엔드포인트를 제공합니다.
- 사후 인시던트 모니터링 - 인시던트를 해결한 후 검색된 엔드포인트에 대한 모니터를 생성하여 반복을 방지합니다.
- 서비스 온보딩 - 새 서비스 또는 애플리케이션에 대한 기준선 모니터링을 신속하게 설정합니다.
- 격차 종결 - 디스커버리를 통해 식별된 모니터링되지 않는 중요 엔드포인트에 대한 모니터를 생성합니다.
- 자동화된 워크플로우 - 인시던트 관리 또는 검색 워크플로우와 통합하여 모니터 프로비저닝을 자동화합니다.
이 API를 사용하여 요청당 최대 50개의 모니터를 생성합니다. 요청당 50개 이상의 모니터를 만들려면 SyntheticsAsyncBulkCreate API를 사용합니다.
이 API에는 애플리케이션(com.snc.uib.sow_synthetics)이 필요하며 Synthetic monitoring , 이 애플리케이션은 에서 사용할 수 ServiceNow Store있습니다. 호출 사용자에게 x_snc_sow_synthetics.synthetics_editor 역할이 있어야 합니다. 이 API를 호출하기 전에 합성 모니터링을 위해 하나 MID 서버 이상의 위치를 구성해야 합니다. 지침은 Create synthetic monitoring locations 문서를 참조하십시오. 또한 모니터링되는 엔드포인트의 CI(구성 항목)가 위치에 Configuration Management Database (CMDB)있어야 합니다.
SyntheticsBulkCreate - POST /sn_sow_synthetics/synthetics_bulk_create
단일 동기 작업에서 여러 합성 모니터를 생성합니다.
즉각적인 확인과 결과가 필요한 인시던트 기반 워크플로우 및 소규모 배치 작업에 이 엔드포인트를 사용합니다. 이 엔드포인트는 요청당 최대 50개의 모니터 생성을 지원하며, 최대 페이로드 크기는 10MB입니다.
이 엔드포인트는 사후 인시던트 식별 가능성을 위해 모니터를 인시던트에 연결하고 자동 MID 서버 위치 선택을 제공합니다. 엔드포인트는 정확한 URL 일치, 동일한 호스트 엔드포인트, 동일한 서브넷 엔드포인트, 동일한 지역 엔드포인트, 사용 가능한 위치 및 기본값으로 폴백의 6단계 프로세스를 통해 평가됩니다. 이를 통해 수동 위치 할당 없이도 최적의 모니터링 범위를 보장할 수 있습니다.
URL 형식
버전이 지정된 URL: /api/sn_sow_synthetics/{api_version}/synthetics_bulk_create
기본 URL: /api/sn_sow_synthetics/synthetics_bulk_create
지원되는 요청 매개변수
| 이름 | 설명 |
|---|---|
| api_version | 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들어 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하도록 이 값만 지정하십시오. 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| 없음 |
| 이름 | 설명 |
|---|---|
| correlation_id | 필수 동일한 요청에서 생성된 모든 모니터를 연결하는 추적 및 원격 측정에 대한 상관 관계 식별자입니다. gs.generateGUID()를 사용하여 ID를 생성할 수 있습니다. 최대 길이: 200자 데이터 유형: 문자열 |
| 엔드포인트 | 필수 모니터를 생성할 엔드포인트 구성 객체의 배열입니다. 이 배열에는 API 요청당 최대 50개의 객체가 포함될 수 있습니다. 데이터 유형: 배열 |
| 엔드포인트.본문 | POST, PUT 또는 PATCH 엔드포인트에 대한 요청 본문입니다. 콘텐츠 유형 헤더에 따라 유효한 JSON 또는 XML 문자열이어야 합니다. 최대 크기는 10KB입니다.데이터 유형: 문자열 |
| 엔드포인트.활성화됨 | 모니터가 생성 직후 실행을 시작할지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
기본값: true 데이터 유형: 부울 |
| endpoints.endpoint_id | 필수 엔드포인트 CI(구성 항목)의 CMDB Sys_id입니다. 테이블: HTTP 엔드포인트 [cmdb_ci_endpoint_http] 데이터 유형: 문자열 |
| 엔드포인트.헤더 | 모니터가 엔드포인트 요청에 포함할 HTTP 헤더의 배열입니다. 데이터 유형: 배열 기본값: 빈 배열(헤더 없음) |
| endpoints.headers.name | 인증 또는 컨텐츠 형식과 같은 HTTP 헤더의 이름입니다.데이터 유형: 문자열 |
| endpoints.headers.value | 전달자 토큰 또는 application/json과 같은 HTTP 헤더의 값입니다.데이터 유형: 문자열 |
| endpoints.interval | 모니터 실행 빈도(분)입니다. ServiceNow 호스팅된 위치는 모니터당 분당 6개의 테스트로 제한됩니다. 유효한 값: 1-60 기본값: 5(5분마다 한 번씩 실행) 데이터 유형: 숫자 |
| endpoints.max_latency_ms | 최대 허용 응답시간(밀리초)입니다. 일반적인 지침은 엔드포인트 유형에 따라 500-5000ms입니다. 테스트할 때 모니터가 이 값을 기준으로 검사하고 응답시간이 이 값을 초과하면 테스트가 실패합니다. 기본값: null(대기 시간 임계치 없음) 데이터 유형: 숫자 |
| endpoints.method | 사용할 HTTP 메서드입니다. 유효한 값(대/소문자 구분 안 함):
기본값: GET 데이터 유형: 문자열 |
| endpoints.name | 모니터의 표시 이름입니다. 인시던트 기반 모니터 생성의 예시 형식은 [INC{number}] {endpoint_name} - {service_name}입니다.최대 길이: 100자 기본값: 모니터 이름은 엔드포인트 이름에서 자동으로 생성됩니다. 데이터 유형: 문자열 |
| endpoints.parent_service_sys_id | 이 엔드포인트가 지원하는 비즈니스 서비스의 Sys_id입니다. 서비스 수준 보고 및 영향 분석에 사용됩니다. 테이블: 비즈니스 서비스 [cmdb_ci_service] 기본값: null 데이터 유형: 문자열 |
| endpoints.support_group_sys_id | 이 엔드포인트를 담당하는 지원 그룹의 Sys_id입니다. 경보 라우팅 및 할당에 사용됩니다. 테이블: 그룹 [sys_user_group] 기본값: null 데이터 유형: 문자열 |
| 엔드포인트.url | 필수 모니터링할 전체 HTTP 또는 HTTPS URL입니다. http:// 또는 https:// 로 시작해야 합니다. 예를 들면 https://api.example.com/health 입니다.최대 길이: 2048자 데이터 유형: 문자열 |
| endpoints.valid_http_code | 성공적인 응답에 대해 예상되는 HTTP 상태 코드로, 단일 값 또는 쉼표로 구분된 목록( 예: "200,201,204")으로 제공됩니다. 테스트할 때 모니터가 이러한 값을 기준으로 검사하며 실제 상태 코드가 목록의 값과 일치하지 않으면 테스트가 실패합니다. 기본값: 200 데이터 유형: 문자열 |
| idempotency_key | 필수 동일한 API 요청이 여러 번 제출되는 경우 중복 모니터 생성을 방지하기 위한 고유 식별자(키)입니다. 키는 24시간 동안 시스템에 보존됩니다. 형식: 데이터 유형: 문자열 |
| incident_id | 모니터 생성을 트리거한 인시던트의 Sys_id입니다. 사후 인시던트 분석에서 추적 및 상관 관계에 사용됩니다. 제공된 경우 생성된 모니터는 이 인시던트에 연결됩니다. 테이블: 인시던트 [incident] 데이터 유형: 문자열 |
헤더
다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 고유한 방식으로 이 작업에 적용됩니다. REST API에 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하십시오.
| 머리글 | 설명 |
|---|---|
| 수용 | 응답 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 권한 부여 | HTTP 기본 인증 또는 OAuth 전달자 토큰입니다. 기본 인증 형식: OAuth 형식: |
| 콘텐츠-형식 | 요청 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 머리글 | 설명 |
|---|---|
| 콘텐츠-형식 | 응답 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 재시도 후 | 상태 코드 503 으로 반환됩니다. 요청을 재시도하기 전에 대기할 시간(초)입니다. |
| X-요청-ID | API 요청의 고유 식별자입니다. 문제 해결 및 로그 상관 관계에 사용됩니다. |
상태 코드
이 HTTP 작업에 적용되는 상태 코드는 다음과 같습니다. REST API에 사용되는 가능한 상태 코드 목록은 REST API HTTP 응답 코드를 참조하십시오.
| 상태 코드 | 설명 |
|---|---|
| 200 | 성공입니다. 모니터 전체 또는 일부가 생성되었습니다. 개별 모니터 생성 상태에 대한 응답 본문을 체크인 results 합니다. |
| 400 | 잘못된 요청. 요청 확인에 실패했습니다. 오류 상세 정보는 응답 error.message 본문을 확인하십시오error.code. 일반적인 원인:
|
| 401 | 권한이 해제되었습니다. 사용자 자격 증명이 잘못되었거나 전달되지 않았습니다. |
| 403 | 금지되었습니다. 모니터를 생성하려면 사용자에게 x_snc_sow_synthetics.synthetics_editor 역할이 있어야 합니다. |
| 404 | 찾을 수 없습니다. API 엔드포인트 경로가 잘못되었거나 합성 모니터링 플러그인이 설치되거나 활성화되지 않았습니다. |
| 413 | 페이로드가 너무 큽니다. 요청 본문이 10MB 한도를 초과합니다. 배열의 객체 endpoints 수를 줄이거나 큰 요청 본문 콘텐츠를 제거합니다. |
| 429 | 요청이 너무 많습니다. 요율 제한을 초과했습니다. 잠시 기다렸다가 다시 시도하십시오. 요율 제한 기간이 다시 설정될 때까지의 시간(초)에 대해 응답 본문을 체크인 error.details.retry_after_seconds 합니다. 사용자가 다음 중 하나를 초과했습니다.
|
| 500 | 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. 응답에는 오류에 대한 추가 정보가 포함되어 있습니다. |
| 503 | 서비스를 사용할 수 없습니다. 가상 모니터링 유지관리 또는 높은 부하로 인해 서비스를 일시적으로 사용할 수 없습니다. Retry-After 헤더에 표시된 지연 후 요청을 다시 시도합니다. |
응답 본문 매개변수(JSON)
| 이름 | 설명 |
|---|---|
| 오류 | API 요청이 실패한 경우 반환되는 객체입니다. 데이터 유형: 객체 |
| 오류.코드 | 오류 코드입니다. 가능한 값:
데이터 유형: 문자열 |
| 오류.상세 정보 | 오류에 대한 추가 정보입니다. 이 객체에 포함된 요소는 오류 유형에 따라 다릅니다. 데이터 유형: 객체 |
| 오류.메시지 | 오류 메시지. 데이터 유형: 문자열 |
| 메시지 | API 요청의 결과에 대한 메시지입니다. 데이터 유형: 문자열 |
| 결과 | 각 엔드포인트에 대한 모니터 생성 결과를 포함하는 객체의 배열입니다. 엔드포인트 결과는 요청 본문의 배열에 endpoints 제공된 순서와 동일한 순서로 나열됩니다. 데이터 유형: 배열 |
| results.endpoint_id | 엔드포인트 CI(구성 항목)의 CMDB Sys_id입니다. 테이블: HTTP 엔드포인트 [cmdb_ci_endpoint_http] 데이터 유형: 문자열 |
| results.error_code | 모니터를 만들 status지 못한 경우의 오류 코드입니다.가능한 값:
데이터 유형: 문자열 |
| results.error_message | 모니터 생성 status 에 실패할 경우의 오류 메시지입니다.데이터 유형: 문자열 |
| 결과.위치 | MID 서버 모니터에 대해 선택한 위치입니다. 데이터 유형: 객체 |
| results.location.name | 위치 이름입니다 MID 서버 . 데이터 유형: 문자열 |
| results.location.selection_phase | 위치를 선택하는 데 사용되는 단계 번호입니다.MID 서버 각 엔드포인트는 가능한 값:
데이터 유형: 숫자 |
| results.location.sys_id | 위치의 Sys_id입니다.MID 서버 테이블: 합성 위치 [sn_sow_synthetics_location] 데이터 유형: 문자열 |
| results.monitor_name | 생성된 모니터의 표시 이름입니다. 데이터 유형: 문자열 |
| results.monitor_sys_id | 생성된 모니터의 Sys_id입니다. 테이블: 검사 [sn_sow_synthetics_check] 데이터 유형: 문자열 |
| 결과.상태 | 엔드포인트의 생성 상태를 모니터링합니다. 가능한 값:
데이터 유형: 문자열 |
| 성공 | API 요청의 성공 여부를 나타내는 플래그입니다. 가능한 값: 주:
이 매개변수는 응답 상태 코드가 200 인 경우에만 포함되므로 이 값은 항상 예입니다.데이터 유형: 부울 |
| 요약 | API 요청의 결과를 요약하는 객체입니다. 데이터 유형: 객체 |
| 요약.실패 | 만들 수 없는 모니터 수입니다. 데이터 유형: 숫자 |
| 요약.성공 | 성공적으로 생성된 모니터 수입니다. 데이터 유형: 숫자 |
| summary.total_requested | API 요청에 포함된 총 엔드포인트 수입니다. 데이터 유형: 숫자 |
cURL 요청
이 예에서는 해결된 인시던트에서 검색된 세 개의 HTTP 엔드포인트에 대한 모니터를 만듭니다.
curl -X POST 'https://instance.service-now.com/api/sn_sow_synthetics/bulk_create' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-u 'username:password' \
-d '{
"incident_id": "a1b2c3d4e5f6789012345678",
"idempotency_key": "INC-INC0012345-20260401T120000",
"correlation_id": "550e8400-e29b-41d4-a716-446655440000",
"endpoints": [
{
"endpoint_id": "e1f2g3h4i5j6789012345678",
"name": "[INC0012345] Payment API Health - Payment Gateway",
"url": "https://api.payment.example.com/health",
"method": "GET",
"interval": 2,
"enabled": true,
"parent_service_sys_id": "s1t2u3v4w5x6789012345678",
"support_group_sys_id": "g1h2i3j4k5l6789012345678",
"valid_http_code": "200",
"max_latency_ms": 500
},
{
"endpoint_id": "k1l2m3n4o5p6789012345678",
"name": "[INC0012345] Payment Transaction API - Payment Gateway",
"url": "https://api.payment.example.com/v2/transactions",
"method": "POST",
"interval": 5,
"enabled": true,
"parent_service_sys_id": "s1t2u3v4w5x6789012345678",
"support_group_sys_id": "g1h2i3j4k5l6789012345678",
"valid_http_code": "200,201",
"max_latency_ms": 1000,
"headers": [
{
"name": "Authorization",
"value": "Bearer test-token"
},
{
"name": "Content-Type",
"value": "application/json"
}
],
"body": "{\"amount\": 100, \"currency\": \"USD\"}"
},
{
"endpoint_id": "q1r2s3t4u5v6789012345678",
"name": "[INC0012345] Customer Portal Status - Payment Gateway",
"url": "https://portal.payment.example.com/status",
"method": "GET",
"interval": 10,
"enabled": true,
"parent_service_sys_id": "s1t2u3v4w5x6789012345678",
"valid_http_code": "200"
}
]
}'
응답 본문 - 모든 모니터가 성공적으로 생성되었습니다.
{
"success": true,
"message": "Bulk creation completed. 3 monitors created successfully, 0 failed validation.",
"summary": {
"total_requested": 3,
"successful": 3,
"failed": 0
},
"results": [
{
"endpoint_id": "e1f2g3h4i5j6789012345678",
"status": "created",
"monitor_sys_id": "m1n2o3p4q5r6789012345678",
"monitor_name": "[INC0012345] Payment API Health - Payment Gateway",
"location": {
"sys_id": "l1m2n3o4p5q6789012345678",
"name": "US-East-1 MID Server",
"selection_phase": 2
},
"error_message": null,
"error_code": null
},
{
"endpoint_id": "k1l2m3n4o5p6789012345678",
"status": "created",
"monitor_sys_id": "r1s2t3u4v5w6789012345678",
"monitor_name": "[INC0012345] Payment Transaction API - Payment Gateway",
"location": {
"sys_id": "l1m2n3o4p5q6789012345678",
"name": "US-East-1 MID Server",
"selection_phase": 2
},
"error_message": null,
"error_code": null
},
{
"endpoint_id": "q1r2s3t4u5v6789012345678",
"status": "created",
"monitor_sys_id": "x1y2z3a4b5c6789012345678",
"monitor_name": "[INC0012345] Customer Portal Status - Payment Gateway",
"location": {
"sys_id": "l1m2n3o4p5q6789012345678",
"name": "US-East-1 MID Server",
"selection_phase": 2
},
"error_message": null,
"error_code": null
}
]
}
응답 본문 - 부분 성공.
{
"success": true,
"message": "Bulk creation completed. 2 monitors created successfully, 1 failed validation.",
"summary": {
"total_requested": 3,
"successful": 2,
"failed": 1
},
"results": [
{
"endpoint_id": "e1f2g3h4i5j6789012345678",
"status": "created",
"monitor_sys_id": "m1n2o3p4q5r6789012345678",
"monitor_name": "[INC0012345] Payment API Health - Payment Gateway",
"location": {
"sys_id": "l1m2n3o4p5q6789012345678",
"name": "US-East-1 MID Server",
"selection_phase": 2
},
"error_message": null,
"error_code": null
},
{
"endpoint_id": "invalid-endpoint-id",
"status": "failed",
"monitor_sys_id": null,
"monitor_name": null,
"location": null,
"error_message": "Invalid endpoint_id: No endpoint found with sys_id 'invalid-endpoint-id' in cmdb_ci_endpoint_http table.",
"error_code": "INVALID_ENDPOINT_ID"
},
{
"endpoint_id": "q1r2s3t4u5v6789012345678",
"status": "created",
"monitor_sys_id": "x1y2z3a4b5c6789012345678",
"monitor_name": "[INC0012345] Customer Portal Status - Payment Gateway",
"location": {
"sys_id": "w1x2y3z4a5b6789012345678",
"name": "EU-West-1 MID Server",
"selection_phase": 4
},
"error_message": null,
"error_code": null
}
]
}
응답 본문 - 요율 제한 오류입니다.
{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Rate limit exceeded. You have made 11 requests in the last minute. Limit is 10 requests per minute.",
"details": {
"limit": 10,
"window": "per_minute",
"retry_after_seconds": 45
}
}
}