프로메테우스는 지표를 모니터링하기에 적합합니다. 지표를 모니터링하면 애플리케이션 동작에 대한 상태변화를 즉각적으로 알고 대처할 수 있습니다. 자바애플리케이션에서 프로메테우스로 지표를 보내는 방법은 크게 3가지 방법이 있습니다.
- JMX 익스포터
- PUSH 게이트웨이
- 자바 클라이언트
여기서는 자바 클라이언트를 사용하는 방법을 설명합니다.
https://github.com/prometheus/client_java
우선 build.gradle에 관련 라이브러리를 추가합니다.
dependencies {
...
implementation 'io.prometheus:simpleclient:0.11.0'
implementation 'io.prometheus:simpleclient_hotspot:0.6.0'
implementation 'io.prometheus:simpleclient_httpserver:0.6.0'
}
다음은 main()안에 HTTP server를 열어 줍니다. 주의할점은 다른 애플리케이션이 점유하고 있지 않는 포트로 열어야 오류없이 실행됩니다.
public static void main(String[] args) {
try {
HTTPServer server = new HTTPServer(9990);
DefaultExports.initialize();
} catch (Exception e) {
log.error(e.getMessage(), e);
}
...
DefaultExports는 프로메테우스 자바 클라이언트가 제공하는 기본 JVM관련 지표를 포함하여 넘겨줄지 여부를 결정하는 것입니다.
다음으로는 어떤 지표값을 보낼지 정해야합니다. 지표는 다음과 같은 종류가 있습니다.
- counter
- gauge
- summary
- historgram
상기 지표관련 설명은 아래 링크를 참고하세요.
https://github.com/prometheus/client_java#instrumenting
여기서는 counter를 적용해보겠습니다. counter를 사용하면 특정 메서드가 몇번 호출되었는지 TPS지표를 측정할 수 있습니다.
static final Counter requests = Counter.build()
.name("http_requests").help("Total requests.")
.labelNames("group").register();
우선 Counter 인스턴스를 생성합니다. 생성시 메트릭 이름, 라벨이름을 등록합니다.
void httpMethod(){
requests.labels("abc").inc();
}
이제 기본 설정은 완료되었습니다.
애플리케이션을 실행하고 지정한 포트로 접속하면 다음과 같은 화면이 나타나게 됩니다.
프로메테우스의 서비스 디스커버리로 해당 포트와 연결하거나 scrape_config로 해당 포트를 지정하고나면 다음과 같이 데이터를 수집이 되는것을 프로메테우스 웹 콘솔에서 확인할 수 있습니다.
counter지표의 경우 rate()함수를 통해 데이터가 얼마나 호출되었는지 확인할 수 있습니다.
rate(http_requests_total[1m])
참고자료
'빅데이터' 카테고리의 다른 글
[번역]넷플릭스에서 데이터를 찾는 방법, Data Explorer 소개 (0) | 2021.09.22 |
---|---|
프로메테우스 지표 rate와 increase의 차이점 (0) | 2021.07.02 |
프로메테우스 promQL에서 without 또는 by 사용시 주의사항 (0) | 2021.07.01 |
아파치 드루이드 tranquility로 데이터 추가시 MessageDroppedException 이슈 (0) | 2021.06.24 |
Tranquility를 사용한 아파치 드루이드 실시간 데이터 적재 (0) | 2021.06.10 |
아파치 드루이드 소개 및 아키텍처 (0) | 2021.06.10 |