Snapshot API

Snapshot API

이 문서는 Grafana에서 스냅샷을 생성, 조회, 삭제하는 API를 설명해요. 스냅샷을 만들고 특정 키로 가져오거나 삭제할 수 있습니다.

출처: 문서

본문

참고: Grafana 13부터 /api 엔드포인트는 /apis 경로를 위해 더 이상 사용되지 않습니다(deprecated). Grafana가 기존 API를 마이그레이션하는 동안 현재 여러분이 사용하는 레거시 API와 정확히 일치하는 항목이 없을 수도 있어요. 이 변경은 현재 설정을 방해하거나 깨지 않습니다. 레거시 API는 비활성화되지 않으며 완전히 접근 가능하고 정상 작동하지만, /api 경로는 더 이상 업데이트되지 않습니다. 자세한 내용은 Grafana의 새 API 구조를 참고하세요.

새 스냅샷 생성하기

POST /api/snapshots

예시 요청:

    POST /api/snapshots HTTP/1.1
    Accept: application/json
    Content-Type: application/json
    Authorization: Bearer <SERVI...KEN>

    {
      "dashboard": {
        "editable":false,
        "nav":[
        {
          "enable":false,
        "type":"timepicker"
        }
        ],
        "rows": [
          {

          }
        ],
        "style":"dark",
        "tags":[],
        "templating":{
          "list":[
          ]
        },
        "time":{
        },
        "timezone":"browser",
        "title":"Home",
        "version":5
        },
      "expires": 3600
    }

JSON 본문 스키마:

  • dashboard – 필수. 완전한 대시보드 모델.
  • name – 선택. 스냅샷 이름.
  • expires – 선택. 스냅샷이 만료될 시간(초). 3600은 1시간, 86400은 1일. 기본값은 만료 없음.
  • external – 선택. 로컬이 아니라 외부 서버에 스냅샷을 저장. 기본값은 false.
  • key – 선택. 고유 키를 정의. external이 true이면 필수.
  • deleteKey – 선택. 스냅샷 삭제에 사용하는 고유 키. key와는 다르므로 생성자만 스냅샷을 삭제할 수 있어요. external이 true이면 필수.

참고: API로 스냅샷을 생성할 때는 스냅샷 데이터를 포함한 전체 대시보드 페이로드를 제공해야 합니다. 이 엔드포인트는 Grafana UI를 위해 설계되었어요.

예시 응답:

    HTTP/1.1 200
    Content-Type: application/json
    {
      "deleteKey":"XXXXXXX",
      "deleteUrl":"myurl/api/snapshots-delete/XXXXXXX",
      "key":"YYYYYYY",
      "url":"myurl/dashboard/snapshot/YYYYYYY",
      "id": 1
    }

키:

  • deleteKey – 스냅샷 삭제용으로 생성된 키
  • key – 대시보드 공유용으로 생성된 키

스냅샷 목록 가져오기

GET /api/dashboard/snapshots

쿼리 파라미터:

  • query – 검색 쿼리
  • limit – 반환 결과 수 제한. 설정하지 않거나 잘못된 값을 제공하면 기본값 1000.

예시 요청:

GET /api/dashboard/snapshots HTTP/1.1
Accept: application/json
Authorization: Bearer <SERVI...KEN>

예시 응답:

HTTP/1.1 200
Content-Type: application/json

[
  {
    "id":8,
    "name":"Home",
    "key":"YYYYYYY",
    "orgId":1,
    "userId":1,
    "external":false,
    "externalUrl":"",
    "expires":"2200-13-32T25:23:23+02:00",
    "created":"2200-13-32T28:24:23+02:00",
    "updated":"2200-13-32T28:24:23+02:00"
  }
]

키로 스냅샷 가져오기

GET /api/snapshots/:key

예시 요청:

GET /api/snapshots/YYYYYYY HTTP/1.1
Accept: application/json
Authorization: Bearer <SERVI...KEN>

예시 응답:

HTTP/1.1 200
Content-Type: application/json

{
  "meta":{
    "isSnapshot":true,
    "type":"snapshot",
    "canSave":false,
    "canEdit":false,
    "canStar":false,
    "slug":"",
    "expires":"2200-13-32T25:23:23+02:00",
    "created":"2200-13-32T28:24:23+02:00"
  },
  "dashboard": {
    "editable":false,
    "nav": [
      {
        "enable":false,
        "type":"timepicker"
      }
    ],
    "rows": [
      {

      }
    ],
    "style":"dark",
    "tags":[],
    "templating":{
      "list":[
      ]
    },
    "time":{
    },
    "timezone":"browser",
    "title":"Home",
    "version":5
  }
}

키로 스냅샷 삭제하기

DELETE /api/snapshots/:key

예시 요청:

DELETE /api/snapshots/YYYYYYY HTTP/1.1
Accept: application/json
Authorization: Bearer <SERVI...KEN>

예시 응답:

HTTP/1.1 200
Content-Type: application/json

{"message":"Snapshot deleted. It might take an hour before it's cleared from any CDN caches.", "id": 1}

deleteKey로 스냅샷 삭제하기

이 API 호출은 스냅샷의 비밀 삭제 키를 사용해 인증 없이 호출할 수 있습니다.

GET /api/snapshots-delete/:deleteKey

예시 요청:

GET /api/snapshots-delete/XXXXXXX HTTP/1.1
Accept: application/json

예시 응답:

HTTP/1.1 200
Content-Type: application/json

{"message":"Snapshot deleted. It might take an hour before it's cleared from any CDN caches.", "id": 1}

더 알아보기 (Learn more)