전체 글 682

[Prometheus] 프로메테우스 연동하기 ( With SpringBoot )

프로메테우스(Prometheus)란? 시간이 지남에 따라 추이가 변하는 데이터를 메트릭(Metric)이라고 한다. CPU사용량, 메모리 사용량 등이 메트릭에 해당한다. SpringBoot는 Metric 수집을 마이크로미터(MicroMeter) 모듈을 내장한 엑츄에이터가 담당한다. 그런데 문제가 있다. 메트릭은 시간이 흐를수록 계속 쌓이게 된다. Application의 메모리만으로는 증가하는 메트릭 데이터를 모두 커버할 수 없다. 그래서 메트릭 전용 외부 DB를 두는데, 그것이 프로메테우스(Prometheus)이다. 프로메테우스는 마이크로미터가 수집한 메트릭 데이터를 일정시간 간격으로 PULL하여 DB에 수집한다. 이때, MicroMeter Prometheus 구현체가 필요하다. 마이크로미터는 수집한 메트..

Ops/Monitoring 2023.05.12

[SpringBoot] 메트릭(Metric) 이란?

[SpringBoot] 모니터링 - 엑츄에이터(Actuator)(1) 개발이 완료되면 App을 모니터링해야 한다. ( Production-Ready ) App상태정보, 트래픽, DB상태정보 등등 다양한 모니터링 데이터를 파악해야 하는데 개발자가 하나 하나 파악하기에 어려움이 있다. Sprin lordofkangs.tistory.com 메트릭(Metric)이란? 시간이 지남에 따라 변화하는 데이터를 의미한다. 메모리 사용률, CPU 사용률, 스레드 사용률 등등.. 시간에 따른 추이를 추적할 가치가 있는 데이터를 메트릭(Metric)이라 부른다. 메트릭 수집은 마이크로미터(MicroMeter) 모듈이 담당하는데, 이는 엑츄에이터 안에 내장되어 있다. 마이크로미터는 일정한 시간간격으로 메트릭을 수집한다. 수집..

Dev/SPRING 2023.05.11

[SpringBoot] 엑츄에이터(Actuator)(3) - 로그 및 HTTP 기록 확인하기

[SpringBoot] 모니터링 - 엑츄에이터(Actuator)(1) 개발이 완료되면 App을 모니터링해야 한다. ( Production-Ready ) App상태정보, 트래픽, DB상태정보 등등 다양한 모니터링 데이터를 파악해야 하는데 개발자가 하나 하나 파악하기에 어려움이 있다. Sprin lordofkangs.tistory.com 이전 포스팅에서 Actuator에 대해서 알아보았다. 이번 포스팅에서는 Actuator를 활용하여 실시간으로 로그레벨을 수정해보고 HTTP 요청/응답 기록을 확인해보겠다. 실시간 로그레벨 수정하기 logger 엔드포인트는 Spring에 등록된 클래스의 로그레벨을 노출한다. 로그레벨은 중요하다. 프로그램을 운영하다가 에러가 발생하면 로그를 보는데 로그수준에 맞는 로그만 확인 ..

Dev/SPRING 2023.05.11

[SpringBoot] 엑츄에이터(Actuator)(2) - info 엔드포인트

[SpringBoot] 모니터링 - 엑츄에이터(Actuator)(1) 개발이 완료되면 App을 모니터링해야 한다. ( Production-Ready ) App상태정보, 트래픽, DB상태정보 등등 다양한 모니터링 데이터를 파악해야 하는데 개발자가 하나 하나 파악하기에 어려움이 있다. Sprin lordofkangs.tistory.com 이전 포스팅에서 엑츄에이터(Actuator)가 무엇인지 알아보았다. 이번 포스팅에서는 엑츄에이터가 제공하는 다양한 엔드포인트에 대해서 정리해보겠다. ( 엑츄에이터 설정은 이전 포스팅을 참고하기 바랍니다. ) info 정보 info 엔드포인트는 실행된 SpringBootApplication의 데이터를 담고 있다. 보안상의 이유로, 몇몇 엔드포인트는 설정없이는 공개가 되지 않도..

Dev/SPRING 2023.05.11

[SpringBoot] 엑츄에이터(Actuator)(1) - Actuator란?

개발이 완료되면 App을 모니터링해야 한다. ( Production-Ready ) App상태정보, 트래픽, DB상태정보 등등 다양한 모니터링 데이터가 존재한다. 그러나 개발자가 이를 하나 하나 파악하기에 어려움이 있다. SpringBoot는 다양한 모니터링 데이터를 한가지 동일한 방식으로 제공하는 라이브러리를 갖고 있는데, 그것이 엑츄에이터(Actuator)이다. Actuator는 HTTP방식과 JMX방식으로 데이터를 제공한다. 이번 포스팅에서는 HTTP방식에 대해서 알아보겠다. 엑츄에이터 라이브러리를 Dependecy로 등록하면 Spring은 엑츄에이터 관련 Bean을 스프링 컨테이너에 추가한다. 그럼, 클라이언트는 URL로 원하는 모니터링 데이터를 가져올 수 있다. ▶︎ URL 형식 : http://..

Dev/SPRING 2023.05.11

[SpringBoot] 외부설정 가져오기(3) - @ConfigurationProperties

[SpringBoot] 외부설정 가져오기(2) - @Value[SpringBoot] 외부설정 통합 - Enviroment Application은 외부에서 설정을 가져올 수 있다. 외부설정을 가져 오는 방법은 다양한데, SpringBoot는 최대한 통합하고 추상화하여, 외부설정을 간단히 조작할 수 lordofkangs.tistory.com @Value 어노테이션은 설정값을 변수에 직접 넣는다. @Value에는 두 가지 제한점이 있다. 1) 변수마다 @Value를 선언해야한다. 설정이 필요한 모든 변수에 @Value를 선언하니 번거롭다. 2) @Value는 변수에 값을 주입하다보니 보안 및 가공이 어렵다. 외부설정을 데이터객체에 바로 주입하면 잘못된 데이터가 바인딩될 수 있다. 중간과정을 두어 유효성 검사를..

Dev/SPRING 2023.05.07

[SpringBoot] 외부설정 가져오기(2) - @Value

[SpringBoot] 외부설정 통합 - Enviroment Application은 외부에서 설정을 가져올 수 있다. 외부설정을 가져 오는 방법은 다양한데, SpringBoot는 최대한 통합하고 추상화하여, 외부설정을 간단히 조작할 수 있도록 기능을 제공한다. 그럼 SpringB lordofkangs.tistory.com 지난 포스팅에서는 Enviroment를 사용하여 외부설정을 읽어보았다. 이번 포스팅에서는 @Value로 외부설정을 읽어보겠다. 어노테이션을 활용하면 좋은 이유는 개발자가 만들어야 할 코드가 줄어든다는 점이다. Enviroment의 경우, 외부설정을 가져오는 코드를 개발자가 직접 작성해야 한다. @Slf4j @Component public class EnviromentCheck { pri..

Dev/SPRING 2023.05.07

[SpringBoot] Profile 사용하기

app.jar가 있다. 개발환경에서는 app.jar는 dev 설정파일이 필요하다. 운영환경에서는 app.jar는 prd 설정파일이 필요하다. 환경에 따라 올바른 설정파일을 읽도록 유도하는 것을 'Profile'이라 부른다. Spring은 Profile 사용을 위한 약속을 갖고 있다. 1) spring.profiles.active 속성에 값을 부여 커맨드라인옵션 : --spring.profiles.active=dev JVM vm옵션 : -Dspring.profiles.active=dev 2) 설정파일명은 application-{profile}.properties로 한다. application-dev.properties application-prd.properties 한 번 구현해보자. 설정값을 가져오는 클..

Dev/SPRING 2023.05.07

[SpringBoot] 설정파일(application.properties)

지난 포스팅에서 Application이 외부설정을 가져오는 3가지 방법을 알아보았다. Application은 OS의 환경변수, JVM의 VM옵션 그리고 CommandLine에서 외부의 설정을 넘겨받을 수 있다. 외부 설정의 개수가 적으면 3가지 방식이 유용하지만 설정의 개수가 많으면 외부에 파일을 하나 두고 관리하는 것이 좋다. 1) 외부설정파일 Application 내부가 아닌 외부에 파일을 생성해보자. (MacOS 기준 설명입니다.) application.properties url=dev.db.com name=dev_user key=value 형식을 지켜서 작성한다. SpringBoot 프로젝트는 실행가능한 jar로 압축되는데, 해당 jar와 동일한 위치에 외부설정파일을 위치시킨다. jar를 실행하면..

Dev/SPRING 2023.05.05

[SpringBoot] 외부설정 가져오기(1) - Enviroment

Application은 외부에서 설정을 가져올 수 있다. 외부설정을 가져 오는 방법은 다양한데, SpringBoot는 최대한 통합하고 추상화하여, 외부설정을 간단히 조작할 수 있도록 기능을 제공한다. 그럼 SpringBoot가 어떻게 외부설정을 조작하는지 알아보자. Application은 다양한 환경에서 설정을 가져온다. OS의 환경변수, JVM의 VM옵션 그리고 App 시작 시, 수행되는 커맨드라인에도 설정을 넣을 수 있다. 환경이 다양한 만큼, 설정을 가져오는 방법도 각각 다르다. OS 환경변수는 System.getenv()에서 가져온다. JVM의 VM옵션은 System.getProperties()에서 가져온다. 커맨드라인은 main 메소드의 String[] args에서 가져온다. 환경에 따라, 설정..

Dev/SPRING 2023.05.05