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/