Spring Boot App monitoring with Actuator

By | 2021년 8월 22일
Table of Contents

Spring Boot App monitoring with Actuator

참조

참조

목표

Spring Actuator 를 이용해 Spring Boot App 을 모니터링합니다.

Application 생성

앱을 생성합니다.

@SpringBootApplication
@RestController
public class Demo4Application {

    public static void main(String[] args) {
        SpringApplication.run(Demo4Application.class, args);
    }

    @GetMapping("/")
    public String hello() {
        return "Hello, World!";
    }
}

build.gradle

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-actuator:2.5.3'
    implementation 'io.micrometer:micrometer-registry-prometheus:1.7.2'
}

application.yml

spring:
  application:
    name: myapp

management:
  endpoints:
    web:
      exposure:
        include: health, info, prometheus
  metrics:
    tags:
      application: ${spring.application.name}

http://localhost:8080/actuator 에서 actuator 가 활성화된 것을 확인할 수 있습니다.

prometheus 설치

vi /home/ubuntu/work/actuator/prometheus.yml
---------------------
global:
  scrape_interval: 10s # 10초 마다 Metric을 Pulling
  evaluation_interval: 10s

scrape_configs:
  - job_name: 'spring-boot-app'
    metrics_path: '/actuator/prometheus' # Application prometheus endpoint
    static_configs:
      - targets: ['localhost:8080'] # Application host:port
---------------------
sudo docker run \
    -d \
    -p 9090:9090 \
    -v /home/ubuntu/work/actuator/prometheus.yml:/etc/prometheus/prometheus.yml \
    --network host \
    --name prometheus \
    prom/prometheus --config.file=/etc/prometheus/prometheus.yml

jvm_memory_used_bytes 를 실행해 보면 사용중인 메모리를 확인할 수 있습니다.

grafana 에서 시각화하기

아래 명령으로 grafana 를 실행합니다.

sudo docker run \
    -d \
    -p 3000:3000 \
    --network host \
    --name=grafana \
    grafana/grafana

비밀번호를 분실했을 때는 아래 명령을 입력합니다.

sudo docker exec grafana grafana-cli admin reset-admin-password admin

10280 로 대시보드를 임포트 합니다.

스트레스 테스트 하기

wget https://hey-release.s3.us-east-2.amazonaws.com/hey_linux_amd64
chmod 777 hey_linux_amd64
sudo mv hey_linux_amd64 /usr/bin/hey

hey -help

5분간 200개의 동시 커넥션을 하도록 합니다.

hey -z 5m -c 200 http://localhost:8080/

답글 남기기