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
아래에 보면 확인된 개발자가 ... prometheus 사용을 차단했습니다. 라는 메시지가 보인다. 오른쪽에 있는 확인없이 허용 버튼을 눌러서 승인한다.
이후에 다시 다음 명령어를 통해 프로메테우스를 실행한다.
./prometheus
실행 http://localhost:9090
프로메테우스 실행 화면
참고 - macbook apple silicon M1 이상을 사용하시는 분
macbook apple silicon M1 이상을 사용하시는 분들 중에 정상 설치가 잘 안되는 분들만 참고해주세요.
rosetta가 설치되지 않으면 bad CPU type in executable 오류가 발생할 수 있습니다. 이런 오류를 만나면 rosetta를 설치해주세요.
grafana의 경우 darwin arm64 지원이 없어서 rosetta 2 를 설치하여 실행할 수 있습니다.
Apple Silicon M1 이상을 사용하시는 분들은 amd64가 아닌 arm64으로 설치하시면 보안 허용 없이 진행할 수 있습니다.
애플리케이션 설정: 프로메테우스가 애플리케이션의 메트릭을 가져갈 수 있도록 애플리케이션에서 프
로메테우스 포멧에 맞추어 메트릭 만들기
프로메테우스 설정: 프로메테우스가 우리 애플리케이션의 메트릭을 주기적으로 수집하도록 설정
애플리케이션 설정
프로메테우스가 애플리케이션의 메트릭을 가져가려면 프로메테우스가 사용하는 포멧에 맞추어 메트릭을 만들어야 한다.
참고로 프로메테우스는 /actuator/metrics 에서 보았던 포멧(JSON)은 이해하지 못한다.
하지만 프로메테우스 포멧에 대한 부분은 걱정할 것이 없다. 마이크로미터가 이런 부분은 모두 해결해준다.
각각의 메트릭들은 내부에서 마이크로미터 표준 방식으로 측정되고 있다. 따라서 어떤 구현체를 사용할지 지정만 해주면 된다.
# HELP tomcat_threads_config_max_threads
# TYPE tomcat_threads_config_max_threads gauge
tomcat_threads_config_max_threads{name="http-nio-8080",} 200.0
# HELP tomcat_sessions_alive_max_seconds
# TYPE tomcat_sessions_alive_max_seconds gauge
tomcat_sessions_alive_max_seconds 0.0
# HELP tomcat_cache_access_total
# TYPE tomcat_cache_access_total counter
tomcat_cache_access_total 0.0
# HELP jvm_info JVM version info
# TYPE jvm_info gauge
jvm_info{runtime="OpenJDK Runtime Environment",vendor="JetBrains s.r.o.",version="17.0.3+7-b469.37",} 1.0
# HELP logback_events_total Number of events that made it to the logs
# TYPE logback_events_total counter
logback_events_total{level="warn",} 0.0
logback_events_total{level="debug",} 0.0
logback_events_total{level="error",} 2.0
logback_events_total{level="trace",} 0.0
logback_events_total{level="info",} 47.0
...
모든 메트릭이 프로메테우스 포멧으로 만들어 진 것을 확인할 수 있다.
/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 : 최대 시간(가장 오래걸린 요청 수)
대략 이렇게 포멧들이 변경된다고 보면 된다. 포멧 변경에 대한 부분은 진행하면서 자연스럽게 알아보자.
7. 프로메테우스 - 수집 설정
이제 프로메테우스가 애플리케이션의 /actuator/prometheus 를 호출해서 메트릭을 주기적으로 수집하도록 설정해보자.
프로메테우스 폴더에 있는 prometheus.yml 파일을 수정하자.
주의
scrape_interval 여기서는 예제를 빠르게 확인하기 위해서 수집 주기를 1s 로 했지만, 수집 주기의 기본 값은 1m 이다. 수집 주기가 너무 짧으면 애플리케이션 성능에 영향을 줄 수 있으므로 운영에서는 10s ~ 1m 정도를 권장한다. (물론 시스템 상황에 따라서 다르다.)
설정이 끝났으면 프로메테우스 서버를 종료하고 다시 실행하자.
프로메테우스 연동 확인
프로메테우스 메뉴 Status Configuration 에 들어가서 prometheus.yml 에 입력한 부분이 추가되어 있는지 확인해보자.
prometheus : 프로메테우스 자체에서 제공하는 메트릭 정보이다. (프로메테우스가 프로메테우스 자신의 메트릭을 확인하는 것이다.)
spring-actuator : 우리가 연동한 애플리케이션의 메트릭 정보이다.
State 가 UP 으로 되어 있으면 정상이고, DOWN 으로 되어 있으면 연동이 안된 것이다.
프로메테우스를 통한 데이터 조회
프로메테우스를 통해서 연동한 메트릭을 간단히 조회해보자.
jvm_info 를 검색창에 넣고 실행해보면 수집한 메트릭을 조회할 수 있다.
8. 프로메테우스 - 기본 기능
이번에는 프로메테우스를 사용하는데 필요한 간단한 기능들을 알아보자.
검색창에 http_server_requests_seconds_count 를 입력하고 실행해보자
태그, 레이블: error , exception , instance , job , method , outcome , status , uri 는 각각의 메트릭 정보를 구분해서 사용하기 위한 태그이다. 마이크로미터에서는 이것을 태그(Tag)라 하고, 프로메테우스에서는 레이블(Label)이라 한다. 여기서는 둘을 구분하지 않고 사용하겠다.
숫자: 끝에 마지막에 보면 132 , 4 와 같은 숫자가 보인다. 이 숫자가 바로 해당 메트릭의 값이다.
기본 기능
Table Evaluation time 을 수정해서 과거 시간 조회 가능
Graph 메트릭을 그래프로 조회 가능
필터
레이블을 기준으로 필터를 사용할 수 있다. 필터는 중괄호( {} ) 문법을 사용한다.
오프셋 수정자 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.
Uh oh!
There was an error while loading. Please reload this page.
-
5. 프로메테우스 - 설치
다운로드 - 윈도우 사용자 - windows-amd64 를 선택하면 된다.
https://github.com/prometheus/prometheus/releases/download/v2.42.0/prometheus-2.42.0.windows-amd64.zip
다운로드 - MAC 사용자 - darwin-amd64 를 선택하면 된다.
https://github.com/prometheus/prometheus/releases/download/v2.42.0/prometheus-2.42.0.darwin-amd64.tar.gz
실행 - 윈도우
prometheus.exe 실행
윈도우는 처음 실행하면 다음과 같은 메시지를 확인할 수 있다.
실행 - MAC
./prometheus
MAC은 처음 실행하면 다음과 같은 메시지를 확인할 수 있다.
시스템 환경설정 -> 보안 및 개인 정보 보호 -> 일반
아래에 보면 확인된 개발자가 ... prometheus 사용을 차단했습니다. 라는 메시지가 보인다. 오른쪽에 있는 확인없이 허용 버튼을 눌러서 승인한다.
이후에 다시 다음 명령어를 통해 프로메테우스를 실행한다.
./prometheus
실행
http://localhost:9090
프로메테우스 실행 화면
참고 - macbook apple silicon M1 이상을 사용하시는 분
macbook apple silicon M1 이상을 사용하시는 분들 중에 정상 설치가 잘 안되는 분들만 참고해주세요.
6. 프로메테우스 - 애플리케이션 설정
프로메테우스는 메트릭을 수집하고 보관하는 DB이다. 프로메테우스가 우리 애플리케이션의 메트릭을 수집하도록 연동해보자.
여기에는 2가지 작업이 필요하다.
로메테우스 포멧에 맞추어 메트릭 만들기
애플리케이션 설정
프로메테우스가 애플리케이션의 메트릭을 가져가려면 프로메테우스가 사용하는 포멧에 맞추어 메트릭을 만들어야 한다.
참고로 프로메테우스는 /actuator/metrics 에서 보았던 포멧(JSON)은 이해하지 못한다.
하지만 프로메테우스 포멧에 대한 부분은 걱정할 것이 없다. 마이크로미터가 이런 부분은 모두 해결해준다.
각각의 메트릭들은 내부에서 마이크로미터 표준 방식으로 측정되고 있다. 따라서 어떤 구현체를 사용할지 지정만 해주면 된다.
build.gradle 추가
실행
http://localhost:8080/actuator/prometheus
실행 결과
모든 메트릭이 프로메테우스 포멧으로 만들어 진 것을 확인할 수 있다.
/actuator/metrics 와 비교해서 프로메테우스에 맞추어 변환된 부분을 몇가지 확인해보자.
포멧 차이
7. 프로메테우스 - 수집 설정
이제 프로메테우스가 애플리케이션의 /actuator/prometheus 를 호출해서 메트릭을 주기적으로 수집하도록 설정해보자.
프로메테우스 폴더에 있는 prometheus.yml 파일을 수정하자.
prometheus.yml
추가한 부분은 다음과 같다.
이렇게 설정하면 프로메테우스는 다음 경로를 1초에 한번씩 호출해서 애플리케이션의 메트릭들을 수집한다.
http://localhost:8080/actuator/prometheus
주의
scrape_interval 여기서는 예제를 빠르게 확인하기 위해서 수집 주기를 1s 로 했지만, 수집 주기의 기본 값은 1m 이다. 수집 주기가 너무 짧으면 애플리케이션 성능에 영향을 줄 수 있으므로 운영에서는 10s ~ 1m 정도를 권장한다. (물론 시스템 상황에 따라서 다르다.)
설정이 끝났으면 프로메테우스 서버를 종료하고 다시 실행하자.
프로메테우스 연동 확인
프로메테우스 메뉴 Status Configuration 에 들어가서 prometheus.yml 에 입력한 부분이 추가되어 있는지 확인해보자.
프로메테우스 메뉴 Status Targets 에 들어가서 연동이 잘 되었는지 확인하자.
프로메테우스를 통한 데이터 조회
프로메테우스를 통해서 연동한 메트릭을 간단히 조회해보자.
8. 프로메테우스 - 기본 기능
이번에는 프로메테우스를 사용하는데 필요한 간단한 기능들을 알아보자.
검색창에 http_server_requests_seconds_count 를 입력하고 실행해보자
기본 기능
필터
레이블을 기준으로 필터를 사용할 수 있다. 필터는 중괄호( {} ) 문법을 사용한다.
레이블 일치 연산자
예)
연산자 쿼리와 함수
다음과 같은 연산자를 지원한다.
+(덧셈)-(빼기)*(곱셈)/(분할)%(모듈로)^(승수/지수)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
메트릭 자체의 수 카운트
topk
상위 3개 메트릭 조회
오프셋 수정자
http_server_requests_seconds_count offset 10moffset 10m과 같이 나타낸다. 현재를 기준으로 특정 과거 시점의 데이터를 반환한다.범위 벡터 선택기
http_server_requests_seconds_count[1m]
마지막에 [1m] , [60s] 와 같이 표현한다. 지난 1분간의 모든 기록값을 선택한다.
참고로 범위 벡터 선택기는 차트에 바로 표현할 수 없다. 데이터로는 확인할 수 있다. 범위 벡터 선택의 결과를 차트에 표현하기 위해서는 약간의 가공이 필요한데, 조금 뒤에 설명하는 상대적인 증가 확인 방법을 참고하자.
Beta Was this translation helpful? Give feedback.
All reactions