본문 바로가기

Infrastructure/Grafana

Grafana API 활용하기 (1)

그라파나는 Grafana Labs 에서 관리하는 오픈 소스 시각화 및 분석 도구로서, 여러 데이터 소스와 손쉬운 통합이 가능합니다.

실제로 그라파나를 설치해 Config 에서 Datasources 를 클릭해보면, 아래와 같이 연동할 수 있는 많은 데이터 소스들이 나옵니다.

 

datasources

 

InfluxDB, ES, Loki, Jaeger 등 여러 데이터소스와의 통합을 지원하지만 Prometheus 와 가장 흔히 통합해 사용한다고 볼 수 있습니다.

Prometheus 가 자체적으로 web UI 를 통해 시각화를 제공하지만, 모니터링용 대시보드로 사용하기엔 꽤 부족한 점이 많아 Prometheus 에서도 이를 별로 추천하지 않고 그라파나를 많이 사용합니다. (이전 포스팅)

 

예전 포스팅(링크)에서 그라파나 대시보드를 설치하고 Prometheus 와의 연동 부분을 다뤘었습니다.

이번 포스팅에선 프론트엔드에서 사용하는 것과 동일한 API 인 그라파나에서 제공하는 HTTP API 를 간단히 사용해보도록 하겠습니다.

 

- Api key 생성

 

 

먼저 대시보드 좌측의 Configuration > API Keys 탭을 클릭합니다.

 

 

Add API key 버튼을 누르면 나오는 화면에서 Key name 을 입력한 후 Admin role 을 선택해 키를 생성합니다.

Role 에는 Admin 외에 Editor, Viewer 가 있는데 해당 키에 대한 액세스 수준을 나타냅니다.

가장 오른쪽의 TTL 은 키의 만료 시간을 나타내고 아무것도 입력하지 않으면 만료되지 않는 키가 생성됩니다.

 

 

이후 생성된 키가 위와 같이 나오게 되는데, 문구에 적힌 것 처럼 키는 이때만 확인이 가능하고 저 창을 닫으면 이후로는 확인이 불가능합니다. 따라서 어딘가에 복사해두도록 합니다.

 

- API 테스트

 

CURL 을 이용해서도 테스트 자체는 충분히 할 수 있지만, JS 코드를 간단히 만들어서 진행해보도록 하겠습니다.

우선 테스트하기위해 대시보드를 하나만 생성해두었습니다.

 

 

Grafana 에서 제공하는 HTTP API 들은 이 페이지에 자세히 나와있습니다.

우선 folder 를 조회해보도록 하겠습니다.

 

const axios = require('axios');

const token = '';

axios({
	method: 'GET',
	url: 'http://localhost:3000/api/folders',
	headers: { Authorization: `Bearer ${token}` },
}).then(result => {
	console.info(result.data); // [{ id: 1, uid: 'XXX', title: 'test-folder' }]
}).catch(err => {
	console.error(err);
});

 

folder 를 조회하는 API 는 /api/folders 이고, 아까 Grafana 페이지에서 발급받았던 토큰을 headers 에 세팅하면 끝입니다.

저는 아까 테스트용으로 test-folder 라는 폴더를 만들어놨기 때문에 위와 같이 result.data 가 찍히는걸 볼 수 있습니다.

각자 생성한 대시보드에 따라 id, uid, title 은 다르게 나올 수 있습니다.

 

const axios = require('axios');

const token = '';
const uid = '';

axios({
	method: 'GET',
	url: `http://localhost:3000/api/dashboards/uid/${uid}`,
	headers: { Authorization: `Bearer ${token}` },
}).then(result => {
	console.info(result.data); // { meta: ..., dashboard: ... }
}).catch(err => {
	console.error(err);
});

 

위는 대시보드를 개별 조회하는 API 를 사용한 예시입니다. 사용법은 거의 동일하고 조회 결과 대시보드의 여러 메타데이터들이 찍히는걸 확인할 수 있습니다. 각 대시보드의 uid 를 알기 위해선 search API 를 별도로 사용해야 하는데 다음 포스팅에서 이 부분을 포함해 여러 Grafana API 를 활용하여 대시보드를 백업해두는 방법에 대해 다뤄보도록 하겠습니다.

'Infrastructure > Grafana' 카테고리의 다른 글

Grafana 를 좀 더 잘 활용해보자  (0) 2022.01.15
Grafana API 활용하기 (2)  (0) 2022.01.08