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
서비스를 운영할 때는 애플리케이션의 CPU, 메모리, 커넥션 고객 요청 수..등 지표 확인
그라파나 대시보드 예시)
핀포인트 예시)
위와 같은 모니터링 툴(그라파나, 핀포인트)이 작동하려면 시스템의 다양한 지표들을 각각의 모니터링 툴에 맞도록 설정해줘야 한다.(실제로는 라이브러리등을 통해서 자동화 되는 경우가 많다.)
모니터링 툴에 지표 전달
모니터링 툴 변경
✅ 위 코드들의 단점
기존에 측정했던 코드를 모두 변경할 툴에 맞도록 다시 변경해야함.
개발자 입장에서는 단순히 툴 하나를 변경했을뿐인데, 측정하는 코드까지 모두 변경해야 하는 문제가 발생한다.
✅해결
마이크로미터(Micrometer)
마이크로미터 추상화
마이크로 전체 그림
마이크로미터는 애플리케이션 메트릭 파사드라고 불리는데, 애플리케이션의 메트릭(측정 지표)을 마이크로
미터가 정한 표준 방법으로 모아서 제공해준다.
쉽게 이야기해서 마이크로미터가 추상화를 통해서 구현체를 쉽게 갈아끼울 수 있도록 해두었다.
보통은 스프링이 이런 추상화를 직접 만들어서 제공하지만, 마이크로미터라는 이미 잘 만들어진 추상화가
있기 때문에 스프링은 이것을 활용한다. 스프링 부트 액츄에이터는 마이크로미터를 기본으로 내장해서 사용한다.
로그를 추상화 하는 SLF4J 를 떠올려보면 쉽게 이해가 될 것이다.
개발자는 마이크로미터가 정한 표준 방법으로 메트릭(측정 지표)를 전달하면 된다. 그리고 사용하는 모니터
링 툴에 맞는 구현체를 선택하면 된다. 이후에 모니터링 툴이 변경되어도 해당 구현체만 변경하면 된다. 애플리케이션 코드는 모니터링 툴이 변경되어도 그대로 유지할 수 있다.
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.
-
섹션 10. 마이크로미터, 프로메테우스, 그라파나
1️⃣ 마이크로미터 소개
서비스를 운영할 때는 애플리케이션의 CPU, 메모리, 커넥션 고객 요청 수..등 지표 확인
그라파나 대시보드 예시)
위와 같은 모니터링 툴(그라파나, 핀포인트)이 작동하려면 시스템의 다양한 지표들을 각각의 모니터링 툴에 맞도록 설정해줘야 한다.(실제로는 라이브러리등을 통해서 자동화 되는 경우가 많다.)
모니터링 툴에 지표 전달
✅ 위 코드들의 단점
✅해결
마이크로미터(Micrometer)
마이크로미터 추상화
미터가 정한 표준 방법으로 모아서 제공해준다.
있기 때문에 스프링은 이것을 활용한다. 스프링 부트 액츄에이터는 마이크로미터를 기본으로 내장해서 사용한다.
SLF4J를 떠올려보면 쉽게 이해가 될 것이다.링 툴에 맞는 구현체를 선택하면 된다. 이후에 모니터링 툴이 변경되어도 해당 구현체만 변경하면 된다. 애플리케이션 코드는 모니터링 툴이 변경되어도 그대로 유지할 수 있다.
✅ 마이크로미터가 지원하는 모니터링 툴
2️⃣ 메트릭 확인하기
{ "names": [ "application.ready.time", "application.started.time", "disk.free", "disk.total", "hikaricp.connections", "hikaricp.connections.acquire", "hikaricp.connections.active", "hikaricp.connections.idle", "hikaricp.connections.max", "hikaricp.connections.usage", "http.server.requests", "http.server.requests.active", "jdbc.connections.active", "jdbc.connections.idle", "jdbc.connections.max", "jdbc.connections.min", "jvm.buffer.count", "jvm.buffer.memory.used", "jvm.memory.used", "jvm.memory.max", "logback.events", "process.cpu.usage", "process.uptime", "system.cpu.count", "system.cpu.usage", "tomcat.sessions.active.current", "tomcat.sessions.rejected" ] }{ "name": "jvm.memory.used", "description": "The amount of used memory", "baseUnit": "bytes", "measurements": [ { "statistic": "VALUE", "value": 131172848 } ], "availableTags": [ { "tag": "area", "values": [ "heap", "nonheap" ] }, { "tag": "id", "values": [ "G1 Survivor Space", "Compressed Class Space", "Metaspace", "CodeCache", "G1 Old Gen", "G1 Eden Space" ] } ] }✅Tag 필터
availableTags를 보면 다음과 같은 항목을 확인할 수 있다.
tag:area,values[heap, nonheap]
tag:id,values[G1 Survivor Space, ...
tag 필터링 결과
{ "name": "jvm.memory.used", "description": "The amount of used memory", "baseUnit": "bytes", "measurements": [ { "statistic": "VALUE", "value": 32190944 } ], "availableTags": [ { "tag": "id", "values": [ "G1 Survivor Space", "G1 Old Gen", "G1 Eden Space" ] } ] }3️⃣ 다양한 메트릭
기타 수 많은 메트릭이 있다.
사용자가 메트릭을 직접 정의하는 것도 가능하다. 뒤에서 예제로 만들어본다.
✅ JVM 메트릭
JVM 관련 메트릭을 제공한다.
jvm.으로 시작한다.메모리 및 버퍼 풀 세부 정보
가비지 수집 관련 통계
스레드 활용
로드 및 언로드된 클래스 수
JVM 버전 정보
JIT 컴파일 시간
시스템 메트릭을 제공한다.
system.,process.,disk.으로 시작한다.✅ 애플리케이션 시작 메트릭
application.started.time: 애플리케이션을 시작하는데 걸리는 시간(ApplicationStartedEvent로 측정)
application.ready.time: 애플리케이션이 요청을 처리할 준비가 되는데 걸리는 시간ApplicationReadyEvent로 측정)스프링은 내부에 여러 초기화 단계가 있고 각 단계별로 내부에서 애플리케이션 이벤트를 발행한다
ApplicationStartedEvent: 스프링 컨테이너가 완전히 실행된 상태이다. 이후에 커맨드 라인 러너가호출된다.
ApplicationReadyEvent: 커맨드 라인 러너가 실행된 이후에 호출된다.스프링 MVC 메트릭
스프링 MVC 컨트롤러가 처리하는 모든 요청을 다룬다.
메트릭 이름: http.server.requestsTAG 를 사용해서 다음 정보를 분류해서 확인할 수 있다.
uri : 요청 URI
method : GET , POST 같은 HTTP 메서드
status : 200 , 400 , 500 같은 HTTP Status 코드
exception : 예외
✅ 데이터소스 메트릭
DataSource, 커넥션 풀에 관한 메트릭을 확인할 수 있다.jdbc.connections.으로 시작한다.hikaricp.를 통해 히카리 커넥션 풀의 자세한 메트릭을 확인할 수 있다.✅ 로그 메트릭
✅ 톰켓 메트릭
tomcat.session.관련 정보만 노출된다)4️⃣ 프로메테우스와 그라파나 소개
프로메테우스를 통해서 조회한다.
5️⃣ 프로메테우스 - 설치
6️⃣ 프로메테우스 - 애플리케이션 설정
7️⃣ 프로메테우스 - 수집 설정
8️⃣ 프로메테우스 - 기본 기능
9️⃣ 프로메테우스 - 게이지와 카운터
✅ 메트릭은 크게 2가지로 분류
➡️ 게이지
➡️ 카운터(Counter)
카운터는 단순하게 증가하는 단일 누적 값이다.
http_server_requests_seconds_count{uri="/log"}
카운터의 누적값은 인사이트를 도출해야할 것이 적다.
누적없이 나오는 것을 알아보자
✅ increase()
✅ rate()
✅ irate()
rate와 유사한데, 범위 벡터에서 초당 순간 증가율을 계산한다. 급격하게 증가한 내용을 확인하기 좋음.🔟 그라파나 - 설치
1️⃣1️⃣ 그라파나 - 연동
1️⃣2️⃣ 그라파나 - 대시보드 만들기
➡️ 대시보드 만들기
대시보드 저장
Save dashboard저장 버튼(disk 모양) 선택대시보드 확인
➡️ 패널 만들기
하자.
➡️ CPU 메트릭 만들기
PromQL에 system_cpu_usage를 입력하고 Run queries 버튼을 선택하자 패널에 시스템 CPU 사용량을 그래프로 확인할 수 있다.
✔️그래프의 데이터 이름 변경
➡️ 디스크 사용량 추가하기
패널 옵션
PromQL
Beta Was this translation helpful? Give feedback.
All reactions