기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
JSON
참고
버전 9 이상을 지원하는 작업 영역에서는 이 데이터 소스를 사용하려면 적절한 플러그인을 설치해야 할 수 있습니다. 자세한 설명은 Grafana 플러그인 섹션을 참조하세요.
JSON 데이터 소스는 임의의 백엔드에 대해 요청을 실행하고 JSON 응답을 Grafana 데이터 프레임으로 파싱합니다.
데이터 소스 추가
-
아마존 매니지드 Grafana 워크스페이스에서 Grafana 콘솔을 열고 로그인했는지 확인합니다.
-
구성 아래의 사이드 메뉴 (톱니바퀴 아이콘) 에서 데이터 소스를 선택합니다.
-
데이터 소스 추가를 선택합니다.
참고
사이드 메뉴에 데이터 소스 링크가 보이지 않으면 현재 사용자에게 해당
Admin
역할이 없는 것입니다. -
데이터 소스 목록에서 JSON을 선택합니다.
-
URL 필드에 API 엔드포인트를 입력합니다. 데이터 소스가 요청을 보내는 곳입니다.
JSON API
이 데이터 소스에 대한 OpenAPI 정의가 있습니다. 자세한 내용은 SimPod
이 데이터 소스를 사용하려면 백엔드가 4개의 엔드포인트를 구현해야 합니다.
-
GET /
상태 코드 응답이 200개입니다. 데이터 소스 구성 페이지의 “연결 테스트”에 사용됩니다. -
POST /search
호출 시 사용 가능한 지표를 반환합니다. -
POST /query
입력을 기반으로 메트릭을 반환합니다. -
POST /annotations
주석 반환.
다음 두 URL은 선택 사항입니다.
-
POST /tag-keys
애드혹 필터의 태그 키 반환 -
POST /tag-values
Ad Hoc 필터의 태그 값을 반환합니다.
/search
POST /search
아마존 매니지드 Grafana는 다음에 대해 이 요청을 발행합니다.
-
변수, 페이지 새로 만들기/편집.
Query
필드는 다음과 같이 본문에 전달됩니다.{ "target": "query field value" }
-
패널, 쿼리 페이지.
As
형식과Metric
값은 다음과 같이 본문에 전달됩니다.{ "type": "timeseries", "target": "upper_50" }
이러한 값을 처리하는 방법은 사용자에게 달려 있습니다. 응답 본문에는 배열이나 맵이 포함될 수 있습니다. 배열 응답 예시:
["upper_25","upper_50","upper_75","upper_90","upper_95"]
맵 응답 예시:
[ { "text": "upper_25", "value": 1}, { "text": "upper_75", "value": 2} ]
/query
POST /query
timeseries
요청 예시:
{ "panelId": 1, "range": { "from": "2016-10-31T06:33:44.866Z", "to": "2016-10-31T12:33:44.866Z", "raw": { "from": "now-6h", "to": "now" } }, "rangeRaw": { "from": "now-6h", "to": "now" }, "interval": "30s", "intervalMs": 30000, "maxDataPoints": 550, "targets": [ { "target": "Packets", "refId": "A", "type": "timeseries", "data": { "additional": "optional json" } }, { "target": "Errors", "refId": "B", "type": "timeseries" } ], "adhocFilters": [{ "key": "City", "operator": "=", "value": "Berlin" }] }
예제 timeseries
응답 (지표 값은 부동 소수점, 유닉스 타임스탬프 (밀리초)):
[ { "target":"pps in", "datapoints":[ [622,1450754160000], [365,1450754220000] ] }, { "target":"pps out", "datapoints":[ [861,1450754160000], [767,1450754220000] ] }, { "target":"errors out", "datapoints":[ [861,1450754160000], [767,1450754220000] ] }, { "target":"errors in", "datapoints":[ [861,1450754160000], [767,1450754220000] ] } ]
요청과 응답 간의 관계는 target
1:n입니다. 요청된 대상 하나에 대한 응답으로 여러 대상을 반환할 수 있습니다.
선택한 지표가 다음과 같은 경우 반환되는 테이블 응답의 예는 "type": "table"
다음과 같습니다.
[ { "columns":[ {"text":"Time","type":"time"}, {"text":"Country","type":"string"}, {"text":"Number","type":"number"} ], "rows":[ [1234567,"SE",123], [1234567,"DE",231], [1234567,"US",321] ], "type":"table" } ]
추가 데이터
JSON을 입력할 수 있는 Additional JSON Data
입력 필드를 통해 각 지표에 대한 추가 데이터 전송이 지원됩니다.
예를 들어 를 입력하면 Additional JSON Data
"data"
키 아래의 대상 데이터에 연결됩니다. { "additional": "optional json" }
{ "target": "upper_50", "refId": "A", "type": "timeseries", "data": { "additional": "optional json" } }
변수를 입력할 수도 있습니다.
{"key": $variableValue}
/주석
POST /annotations
JSON 요청 본문은 다음과 같습니다.
{ "range": { "from": "2016-04-15T13:44:39.070Z", "to": "2016-04-15T14:44:39.070Z" }, "rangeRaw": { "from": "now-1h", "to": "now" }, "annotation": { "name": "deploy", "datasource": "JSON Datasource", "iconColor": "rgba(255, 96, 96, 1)", "enable": true, "query": "#deploy" }, "variables": [] }
Amazon Managed Grafana는 어노테이션 객체 배열을 포함하는 응답을 예상합니다.
필드 설명:
-
text
— (필수) 주석의 텍스트입니다. -
title
— (선택 사항) 주석 툴팁의 제목입니다. -
isRegion
— (선택 사항) 지역인지 여부. -
time
— (필수) UNIX 시대 이후 시간 (밀리초) -
timeEnd
— (isRegion
true인 경우 필수) UNIX 시대 이후 시간 (밀리초) -
tags
— (선택 사항) 주석의 태그.
[ { "text": "text shown in body", "title": "Annotation Title", "isRegion": true, "time": "timestamp", "timeEnd": "timestamp", "tags": ["tag1"] } ]
참고
참고: 데이터 원본이 백엔드에 직접 연결되도록 구성된 경우 올바른 CORS 헤더로 응답하도록 OPTIONS /annotations
구현해야 합니다.
-
Access-Control-Allow-Headers:accept, content-type
-
Access-Control-Allow-Methods:POST
-
Access-Control-Allow-Origin:*
/태그-키
POST /tag-keys
JSON 요청 본문은 다음과 같습니다.
{ }
태그 키 API는 다음을 반환합니다.
[ {"type":"string","text":"City"}, {"type":"string","text":"Country"} ]
/태그-값
POST /tag-values
JSON 요청 본문은 다음과 같습니다.
{"key": "City"}
태그 키 API는 다음을 반환합니다.
[ {"text": "Eins!"}, {"text": "Zwei"}, {"text": "Drei!"} ]