You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
애플리케이션 설정: 프로메테우스가 애플리케이션의 메트릭을 가져갈 수 있도록 애플리케이션에서 프로메테우스 포멧에 맞추어 메트릭 만들기
프로메테우스 설정: 프로메테우스가 우리 애플리케이션의 메트릭을 주기적으로 수집하도록 설정
애플리케이션 설정
프로메테우스가 애플리케이션의 메트릭을 가져가려면 프로메테우스가 사용하는 포멧에 맞추어 메트릭을 만들어야 한다.
참고로 프로메테우스는 /actuator/metrics 에서 보았던 포멧(JSON)은 이해하지 못한다. 하지만 프로메테우스 포멧에 대한 부분은 걱정할 것이 없다. 마이크로미터가 이런 부분은 모두 해결해준다.
- 각각의 메트릭들은 내부에서 마이크로미터 표준 방식으로 측정되고 있다. 따라서 어떤 구현체를 사용할지 지정만 해주면 된다.
build.gradle 추가 implementation 'io.micrometer:micrometer-registry-prometheus' //추가
마이크로미터 프로메테우스 구현 라이브러리를 추가한다.
이렇게 하면 스프링 부트와 액츄에이터가 자동으로 마이크로미터 프로메테우스 구현체를 등록해서 동작하도록 설정해준다.
액츄에이터에 프로메테우스 메트릭 수집 엔드포인트가 자동으로 추가된다.
/actuator/prometheus
- 모든 메트릭이 프로메테우스 포멧으로 만들어 진 것을 확인할 수 있다.
- /actuator/metrics 와 비교해서 프로메테우스에 맞추어 변환된 부분을 몇가지 확인해보자.
포멧 차이
jvm.info jvm_info : 프로메테우스는 . 대신에 _ 포멧을 사용한다. . 대신에 _ 포멧으로 변환된 것을 확인할 수 있다.
logback.events logback_events_total : 로그수 처럼 지속해서 숫자가 증가하는 메트릭을 카운터라 한다. 프로메테우스는 카운터 메트릭의 마지막에는 관례상 _total 을 붙인다.
http.server.requests 이 메트릭은 내부에 요청수, 시간 합, 최대 시간 정보를 가지고 있었다. 프로메테우스에서는 다음 3가지로 분리된다.
http_server_requests_seconds_count : 요청 수
http_server_requests_seconds_sum : 시간 합(요청수의 시간을 합함)
http_server_requests_seconds_max : 최대 시간(가장 오래걸린 요청 수)
대략 이렇게 포멧들이 변경된다고 보면 된다. 포멧 변경에 대한 부분은 진행하면서 자연스럽게 알아보자.
주의
scrape_interval 여기서는 예제를 빠르게 확인하기 위해서 수집 주기를 1s 로 했지만, 수집 주기의 기본 값은 1m 이다. 수집 주기가 너무 짧으면 애플리케이션 성능에 영향을 줄 수 있으므로 운영에서는 10s ~ 1m 정도를 권장한다. (물론 시스템 상황에 따라서 다르다.)
프로메테우스 연동 확인
프로메테우스 메뉴 Status Configuration 에 들어가서 prometheus.yml 에 입력한 부분이 추가되어 있는지 확인해보자.
- prometheus : 프로메테우스 자체에서 제공하는 메트릭 정보이다. (프로메테우스가 프로메테우스 자신의 메트릭을 확인하는 것이다.)
- spring-actuator : 우리가 연동한 애플리케이션의 메트릭 정보이다.
- State 가 UP 으로 되어 있으면 정상이고, DOWN 으로 되어 있으면 연동이 안된 것이다.
프로메테우스 - 기본 기능
이번에는 프로메테우스를 사용하는데 필요한 간단한 기능들을 알아보자.
검색창에 http_server_requests_seconds_count 를 입력하고 실행해보자
- 태그, 레이블: error , exception , instance , job , method , outcome , status , uri 는 각각의 메트릭 정보를 구분해서 사용하기 위한 태그이다. 마이크로미터에서는 이것을 태그(Tag)라 하고, 프로메테우스에서는 레이블(Label)이라 한다. 여기서는 둘을 구분하지 않고 사용하겠다.
- 숫자: 끝에 마지막에 보면 132 , 4 와 같은 숫자가 보인다. 이 숫자가 바로 해당 메트릭의 값이다.
기본 기능
Table -> Evaluation time을 수정해서 과거 시간 조회 가능
Graph -> 메트릭을 그래프로 조회 가능
필터
레이블을 기준으로 필터를 사용할 수 있다. 필터는 중괄호( {} ) 문법을 사용한다.
count
count(http_server_requests_seconds_count)
메트릭 자체의 수 카운트
topk
topk(3, http_server_requests_seconds_count)
상위 3개 메트릭 조회
오프셋 수정자
http_server_requests_seconds_count offset 10m
offset 10m 과 같이 나타낸다. 현재를 기준으로 특정 과거 시점의 데이터를 반환한다.
범위 벡터 선택기
http_server_requests_seconds_count[1m]
마지막에 [1m] , [60s] 와 같이 표현한다. 지난 1분간의 모든 기록값을 선택한다.
참고로 범위 벡터 선택기는 차트에 바로 표현할 수 없다. 데이터로는 확인할 수 있다. 범위 벡터 선택의 결과를 차트에 표현하기 위해서는 약간의 가공이 필요한데, 조금 뒤에 설명하는 상대적인 증가 확인 방법을 참고하자.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
프로메테우스 - 설치
프로메테우스 - 애플리케이션 설정
2가지 작업 필요
애플리케이션 설정
build.gradle 추가
implementation 'io.micrometer:micrometer-registry-prometheus' //추가포멧 차이
주의
프로메테우스 연동 확인
프로메테우스 메뉴 Status Configuration 에 들어가서 prometheus.yml 에 입력한 부분이 추가되어 있는지 확인해보자.
프로메테우스 메뉴 Status Targets 에 들어가서 연동이 잘 되었는지 확인하자.
프로메테우스 - 기본 기능
기본 기능
필터
레이블을 기준으로 필터를 사용할 수 있다. 필터는 중괄호( {} ) 문법을 사용한다.
레이블 일치 연산자
예)
연산자 쿼리와 함수
다음과 같은 연산자를 지원한다.
sum
값의 합계를 구한다.
예) sum(http_server_requests_seconds_count)
sum by
sum by(method, status)(http_server_requests_seconds_count)
SQL의 group by 기능과 유사하다.
결과
{method="GET", status="404"} 3 {method="GET", status="200"} 120count
count(http_server_requests_seconds_count)
메트릭 자체의 수 카운트
topk
topk(3, http_server_requests_seconds_count)
상위 3개 메트릭 조회
오프셋 수정자
http_server_requests_seconds_count offset 10m
offset 10m 과 같이 나타낸다. 현재를 기준으로 특정 과거 시점의 데이터를 반환한다.
범위 벡터 선택기
http_server_requests_seconds_count[1m]
마지막에 [1m] , [60s] 와 같이 표현한다. 지난 1분간의 모든 기록값을 선택한다.
참고로 범위 벡터 선택기는 차트에 바로 표현할 수 없다. 데이터로는 확인할 수 있다. 범위 벡터 선택의 결과를 차트에 표현하기 위해서는 약간의 가공이 필요한데, 조금 뒤에 설명하는 상대적인 증가 확인 방법을 참고하자.
Beta Was this translation helpful? Give feedback.
All reactions