JSON - Amazon Managed Grafana

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

JSON

참고

버전 9 이상을 지원하는 작업 영역에서는 이 데이터 소스를 사용하려면 적절한 플러그인을 설치해야 할 수 있습니다. 자세한 설명은 Grafana 플러그인 섹션을 참조하세요.

JSON 데이터 소스는 임의의 백엔드에 대해 요청을 실행하고 JSON 응답을 Grafana 데이터 프레임으로 파싱합니다.

데이터 소스 추가

  1. 아마존 매니지드 Grafana 워크스페이스에서 Grafana 콘솔을 열고 로그인했는지 확인합니다.

  2. 구성 아래의 사이드 메뉴 (톱니바퀴 아이콘) 에서 데이터 소스를 선택합니다.

  3. 데이터 소스 추가를 선택합니다.

    참고

    사이드 메뉴에 데이터 소스 링크가 보이지 않으면 현재 사용자에게 해당 Admin 역할이 없는 것입니다.

  4. 데이터 소스 목록에서 JSON을 선택합니다.

  5. URL 필드에 API 엔드포인트를 입력합니다. 데이터 소스가 요청을 보내는 곳입니다.

JSON API

이 데이터 소스에 대한 OpenAPI 정의가 있습니다. 자세한 내용은 SimPod//를 참조하십시오. GrafanaJsonDatasource

이 데이터 소스를 사용하려면 백엔드가 4개의 엔드포인트를 구현해야 합니다.

  • GET /상태 코드 응답이 200개입니다. 데이터 소스 구성 페이지의 “연결 테스트”에 사용됩니다.

  • POST /search호출 시 사용 가능한 지표를 반환합니다.

  • POST /query입력을 기반으로 메트릭을 반환합니다.

  • POST /annotations주석 반환.

다음 두 URL은 선택 사항입니다.

  • POST /tag-keys애드혹 필터의 태그 키 반환

  • POST /tag-valuesAd Hoc 필터의 태그 값을 반환합니다.

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— (isRegiontrue인 경우 필수) 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!"} ]