전체 글 18

spring boot 3.x + actuator 파헤치기. 14. 마무리

https://youtu.be/JN-ci4qljfs 가볍게 시작한 시리즈인데 마무리까지 한달가까이 걸렸습니다. ㅡ.ㅜ 원래 목표는 actuator + prometheus + grafana 까지 구성하여 전체 흐름을 모두 설명하고자 했으나, actuator 사용법만 다루면 내부 동작 원리를 하나도 모를듯 하여, 가끔씩 내부 코드도 살펴보면서 동작 원리를 설명하였습니다. 그러다보니 내용이 너무 길어져서 이번 시리즈는 여기서 마무리하고 prometheus, grafana 는 다음번 시리즈에 다루도록 하겠습니다. 공식가이드를 기반으로 설명을 하였으나, 공식가이드에 대한 번역서는 아니므로 모든 내용을 다루지는 않았습니다. 따라서 좀 더 자세히 알고 싶으면 설명 중간중간에 적힌 공식 가이드 링크로 들어가서 추가적인..

spring boot 3.x + actuator 파헤치기. 13. spring boot admin 연동

https://youtu.be/YEfnxsrVPtw https://youtu.be/Q9fbNzlQCJI 이제까지는 actuator 의 값을 보기 위해 웹브라우저에 http://127.0.0.1:8080/actuator/ 로 시작하는 url 을 넣고 일일이 확인을 했습니다. 단순히 조회만 할것이면 웹브라우저로 가능하나, 값을 변경하는 작업은 HTTP GET이 아닌 HTTP PUT, POST 와 같은 걸 사용해야 하는데 웹브라우저 자체는 이를 지원하지 않습니다. 게다가 json 형식으로 아주 많은 데이터가 나올 경우 눈으로 일일이 확인하기가 어렵습니다. 또한 여러 application이 있을때, ip가 서로 다를 것이므로 일일이 ip를 변경해가면서 값을 확인해야 합니다. 이런 불편함은 spring boot ..

spring boot 3.x + actuator 파헤치기. 12. metrics 정리

https://youtu.be/h3LqD0edGE0 이제까지 counter, gauge, timer 라는 metrics 에 대해 알아보았습니다. ( 그외에도 몇가지 metrics 가 있긴 합니다. https://micrometer.io/docs/concepts 참조 ) 각각의 특성과 생성,등록 방법에 대해 정리해보도록 하겠습니다. 결론부터 말하자면 counter와 timer가 사용 패턴이 유사하고 gauge 만 다릅니다. annotation 지원 어노테이션이 지원되는 metric 은 counter 와 timer 입니다. 아래처럼 측정하고 싶은 메서드 위에 @Counted 나 @Timer 를 적어주면 됩니다. @Counted void method1() {} @Timer void method2() {} AO..

spring boot 3.x + actuator 파헤치기. 11. about metrics endpoint ( Timer )

https://youtu.be/aqkb1SHBNIc https://youtu.be/LywjP3UDTcM 마지막으로 다룰 metric type 으로 timer 가 있습니다. 이름 그대로 시간을 측정하는 metric 입니다. timer 등록 우선 다른 metric type과 동일하게 builder 를 이용해서 timer 를 만든 후 meterRegistry 에 등록해줍니다. 아래처럼 my.timer 라고 파라미터값을 넣었으므로 actuator 에서는 my.timer 가 path에 들어가게 됩니다. timer 의 경우 시간값을 측정하고 싶은 곳에 timer 로 감싸서 구현을 해야합니다. 그래서 반드시 Timer 를 bean 으로 등록해둬야 합니다. @Configuration @RequiredArgsConstr..

spring boot 3.x + actuator 파헤치기. 10. about metrics endpoint ( Gauge )

https://youtu.be/oGJlKymgixc metrics 중 Gauge 타입에 대해 알아보겠습니다. 이전에 다룬 Counter 타입의 경우 이름 그대로 횟수값을 다루는데 주로 사용합니다. queue 에 push 된 횟수, 상품 주문 횟수, 취소 횟수, http 요청 횟수, 에러 횟수 등등에 사용됩니다. 따라서 양수값만 사용되고 값이 작아지지 않습니다. ( Counter api 단에서 increment 메서드만 제공되지, decrement 메서드가 없습니다. ) Gauge 는 자동차 속도 계기판과 같이 커졌다 작아졌다 할 수 있는 값에 사용됩니다. 보통 cpu usage, mem usage , 사용중인 thread count, 사용중인 connection pool count 등에 사용됩니다. th..

spring boot 3.x + actuator 파헤치기. 9. about metrics tags

https://youtu.be/qEcknaCHXVI https://youtu.be/JjaEOJasm1w 이전 예제 코드를 실행한후 웹브라우저에서 아래 링크로 들어가봅시다. http://127.0.0.1:8080/actuator/metrics/http.server.requests availableTags 라는 필드가 보이고 이걸 보니 hash tag 같은 느낌이 듭니다. 즉 필터링해서 특정 케이스에 대한 것만 볼 수 있을것 같습니다. 위와 같이 쿼리 스트링에 tag=KEY:VALUE 형식으로 넣으라고 가이드 되어 있습니다. 만약 여러값을 필터링 하고 싶으면 tag=KEY1:VALUE1&tag=KEY2:VALUE2 처럼 이어서 넣으면 됩니다. http://127.0.0.1:8080/actuator/metri..

spring boot 3.x + actuator 파헤치기. 8. about metrics endpoint ( Counter )

https://youtu.be/px_eSKOAQMk Counter 는 이름 그대로 횟수를 세어 metric 으로 제공합니다. 횟수이므로 1, 2, 100, 3000 처럼 자연수만 가능하지 1.3 처럼 소수나 -100 처럼 음수는 불가능합니다. 일반적으로 cache hit 에 대한 누적 counter, http request 누적 횟수 counter 와 같이 지금까지 특정 이벤트가 몇번 발생했는지를 누적값으로 제공할때 Counter 를 사용하면 됩니다. 공식가이드( https://micrometer.io/docs/concepts#_counters )에는 아래처럼 Counter builder 를 이용해서 값을 세팅한 후 MeterRegistry 에 등록하면 Counter 가 만들어진다고 적혀있습니다. Cou..

spring boot 3.x + actuator 파헤치기. 7. about metrics endpoint

https://youtu.be/1eS3wFVZsXA actuator 의 수많은 endpoint 중 가장 중요한 endpoint 중 하나가 metrics endpoint 입니다. 회사에서 운영/모니터링시 주로 사용하는게 cpu, mem, disk usage, thread count, cache 용량 등인데 이런 정보는 대부분 metrics endpoint 에서 제공되기 때문입니다. application.yml 에 아래처럼 web 에 모두 노출시키도록 설정 한 후 management: endpoints: web: exposure: include: "*" /actuator/metrics 으로 들어가면 아래처럼 다양한 metric 정보들이 나와 있으며, 나와 있는 metric 이름중 하나를 선택해서 url pa..

spring boot 3.x + actuator 파헤치기. 6. about info endpoint

https://youtu.be/OxXLOLVkXnU 이번시간에는 info endpoint 에 대해 알아보겠습니다. actuator 자체가 주로 정보를 제공하는 기능이라서 info endpoint 라는 이름이 와닿지 않습니다. 기본 제공 info endpoint 이름 그대로 정보성 endpoint 인데, spring boot 에서는 아래 5가지를 기본 제공해주고 있습니다. 각 항목이 어떤 정보를 보여주는지는 차차 알아보기로 하고, 우선 prerequisites 즉 선결조건이 있는게 build 와 git 입니다. 선결조건인 info.properties 나 git.properties 파일이 없다면 disable 된다고 봐야 하며, 나머지 3가지는 기본이 disable 되어 있습니다. 결국 별도 설정을 하지 않..

spring boot 3.x + actuator 파헤치기. 5. about health endpoint

https://youtu.be/vGCN34hGBUQ actuator 에서 기본 제공하는 endpoint 중 모니터링 시스템과 자주 연동될 endpoint 로 health endpoint 가 있습니다. 이름에서 알수 있듯이 application의 health 정보를 제공합니다. default health endpoint application.yml 에 아래 설정만 한 상태에서 spring boot 를 구동해봅시다. management: endpoints: web: exposure: include: "*" 이후 웹브라우저에서 health endpoint 로 접근해봅시다. 위와 같이 application이 구동중이라는 의미의 status: UP 이라는 json을 리턴합니다. 고작 이 정보만 있지는 않겠죠? 아..