import { Buffer } from 'buffer';
// Buffer 함수를 사용하여 base64 형태로 변환
function base64(string) {
return Buffer.from(string).toString('base64');
}
base64([user, pass].join(':'));
Prometheus를 사용할 경우 Pushgateway를 통하여 데이터를 넘겨주는 경우가 있다. 이러한 경우에 API를 통하여 넘겨주는 방법을 정리하려고 한다.
필요한 자료는 크게 3가지인데,
1. header에 들어갈 Authorization
2. url
3. body(Pushgateway에 입력할 데이터)
이다.
1. header에 들어갈 Authorization
header에 들어갈 Authorization은 Prometheus의 ID, Password를 token으로 변환하여 basic 으로 전송하면 된다.
- Typescript 예시
import { Buffer } from 'buffer';
// base64로 변환 함수
function base64(string) {
return Buffer.from(string).toString('base64');
}
//Prometheus ID, Password를 base64로 변환
const prometheusAuth = base64([user, pass].join(':'));
headers: { Authorization: `Basic ${prometheusAuth}` }
2. url
url의 형태는
{Pushgateway_URL}/metrics/job/{job_value}/{item1}/{item1_value}
이다.
job은 기본 데이터로써 job은 기본적으로 입력되어야된다.
item에는 company 등의 항목을 기입하고 value에 값을 넣는다. 같은 item에서 value값이 같을 경우 같은 종류로 인식하여 데이터가 축적된다. 이러한 데이터를 통해서 grafana와 같은 곳에서 item의 구분으로 그래프를 나타낼 수 있다.
3. body
# HELP [항목명]\n [항목명]{[파티션명]:"[파티션 value]"} value\n
의 형태이다.
let data =
'# HELP disk__total\n' +
'disk__total{name="C:",} 11111.0\n' +
'# HELP disk_used\n' +
'disk_used{name="C:",} 22222.0\n' +
'# HELP disk__total\n' +
'disk__total{name="D:",} 33333.0\n' +
'# HELP disk_used\n' +
'disk_used{name="D:",} 44444.0\n'
이러한 방식으로 디스크의 값과 사용량을 전송한 예시이다.
# HELP 뒤에 데이터명을 적고 \n을 사용하여 다음줄로 이동시키고 데이터명{ } - 파티션이나 구분자명 작성 후 값을 입력하면 된다.
결과값은
다음과 같이 url 값으로 종류가 나뉘고 데이터 종류에따라 분류된다.