본문 바로가기

Spring

[Springboot] 맥북 m2 그라파나(grafana) 설치 프로메테우스가 DB라고 한다면, DB에 있는 데이터를 불러서 사용자가 보기 편하게 보여주는 대시보드가 필요함 그라파나는 매우 유연하고 데이터를 그래프로 보여주는 툴 수 많은 그래프를 제공하고, 프로메테우스를 포함한 다양한 데이터소스를 지원 1. 그라파나 다운로드 https://grafana.com/grafana/download?platform=mac Download Grafana | Grafana Labs Overview of how to download and install different versions of Grafana on different operating systems. grafana.com 2. 압축풀고 실행 다운로드 받은 경로 bin으로 이동 ./grafana-server 아래와 같은 .. 더보기
[Springboot] 프로메테우스 설치 애플리케이션에서 발생한 메트릭을 그 순간만 확인하는 것이 아닌 과거 이력까지 함께 확인하려면 메트릭을 보관하는 DB가 필요함 이렇게 하려면 어디선가 메트릭을 지속해서 수집하고 DB에 저장해야 함 프로메테우스가 바로 이런 역할을 담당함 1. 프로메테우스 아키텍처 2. 설치 https://prometheus.io/download/ Download | Prometheus An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach. prometheus.io mac 사용자는 darwin-amd64 선택 다운로.. 더보기
[Springboot] 다양한 메트릭 확인하기 1. JVM 메트릭 JVM 관련 메트릭을 제공 jvm. 으로 시작함 메모리, 버퍼, 가비지 수집, 스레드, 로드 및 언로드된 클래스 수, JVM 버전 정보, JIT 컴파일 시간 등의 정보를 확인할 수 있음 "jvm.buffer.count", "jvm.buffer.memory.used", "jvm.buffer.total.capacity", "jvm.classes.loaded", "jvm.classes.unloaded", "jvm.compilation.time", "jvm.gc.live.data.size", "jvm.gc.max.data.size", "jvm.gc.memory.allocated", "jvm.gc.memory.promoted", "jvm.gc.overhead", "jvm.info", "jvm... 더보기
[Springboot] 기본 메트릭 확인하기 스프링부트 액츄에이터를 사용하여 메트릭(지표)를 편리하게 사용할 수 있음 액츄에이터가 마이크로미터를 통해서 등록한 기본 메트릭 확인 http://localhost:8080/actuator/metrics 자세히 확인하기 http://localhost:8080/actuator/metrics/{name} 설명 { "name": "jvm.memory.used", "description": "The amount of used memory", "baseUnit": "bytes", "measurements": [ { "statistic": "VALUE", "value": 1.28958912E8 // 메모리 사용량 } ], "availableTags": [ // 해당 태그를 기반으로 정보를 필터링해서 확인할 수 있음 .. 더보기
[Springboot] 마이크로미터 1. 모니터링의 필요성 서비스를 운영할 때는 애플리케이션에 CPU, 메모리, 커넥션 사용, 고객 요청수 같은 수 많은 지표들을 확인하는 것이 필요함 어디에 어떤 문제가 발생했는지 사전에 대응할 수 있고, 문제 발생 시 원인을 빠르게 파악해서 대처할 수 있음 2. 마이크로미터(Micrometer) 라이브러리 세상에는 다양한 모니터링 툴이 존재하는데, 각 툴마다 정보를 전달하는 방법이 다 다름, 그래서 이 것을 표준 측정하도록 돕는게 마이크로미터 라이브러리 -> 애플리케이션 메트릭 파사드라고 불리는데, 애플리케이션의 메트릭(측정 지표)을 마이크로미터가 정한 표준 방법으로 모아서 제공해줌 마이크로미터 추상체를 사용하고 예를들어 JMX구현체, 프로메테우스 구현체 등 구현체를 선택하면됨 -> 마이크로미터가 추상화.. 더보기
[Springboot] 액츄에이터와 보안 1. 액츄에이터와 보안 액츄에이터가 제공하는 기능들은 애플리케이션 내부 정보를 너무 많이 노출함 그래서 외부 인터넷 망이 공개된 곳에 액츄에이터의 엔드포인트를 공개하는 것은 보안상 좋은 방법이 아님 액츄에이터의 엔드포인트들은 외부 인터넷에서 접근이 불가능하게 막고, 내부에서만 접근 가능한 내부망을 사용하는 것이 안전함 2. 보안 방법 1) 액츄에이터 포트 설정 외부 인터넷 망을 통해서 8080 포트에만 접근할 수 있고, 다른 포트는 내부망에서만 접근할 수 있다면 그 다른 포트번호에서 액츄에이터 실행되도록 설정하면 됨 // application.properties management.server.port={포트번호} 2) 액츄에이터 URL 경로에 인증 설정 포트를 분리하는 것이 어렵고 어쩔 수 없이 외부 .. 더보기
[Springboot] 액츄에이터 - httpexchanges 엔드포인트 1. 기능 HTTP 요청과 응답의 과거 기록 확인 HttpExchangeRepository 인터페이스의 구현체를 빈으로 등록하면 httpexchanges 엔드포인트를 사용할 수 있음 HttpExchangeRepository 빈을 등록하지 않으면 엔드포인트가 활성화 되지 않는데 스프링 부트는 기본으로 InMemoryHttpExchangeRepository 구현체를 제공함 이 기능은 매우 단순하고 기능에 제한이 많기 때문에 개발 단계에서만 사용하고 실제 운영 서비스에서는 모니터링 툴이나 핀포인트, Zipkin 같은 다른 기술을 사용하는 것이 좋음 2. 실습 빈 등록 @Bean public InMemoryHttpExchangeRepository httpExchangeRepository() { return ne.. 더보기
[Springboot] 액츄에이터 - loggers 엔드포인트 1. 기능 로깅과 관련된 정보를 확인하고, 실시간 변경 가능 2. 실습 package hello.controller; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @Slf4j @RestController public class LogController { @GetMapping("/log") public String log() { log.trace("trace log"); log.debug("debug log"); log.info("info log"); log.warn("wa.. 더보기