IT/DevOps

Spring Boot MSA ๋ชจ๋‹ˆํ„ฐ๋ง: Spring Boot MSA + Prometheus + Grafana

Unused 2024. 3. 8. 15:47

Spring Boot๋กœ ๋ฐฑ์—”๋“œ๋ฅผ ์„œ๋น„์Šคํ•˜๋‹ค ๋ณด๋ฉด ๊ฐ ์„œ๋น„์Šค๋“ค์˜ ์ƒํƒœ๋ฅผ ํ•œ ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐํ™”๋œ ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์ด ํ•„์š”ํ•ด์ง„๋‹ค.

์ด๋ฅผ ์œ„ํ•ด ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” Spring Boot MSA ํ”„๋กœ์ ํŠธ์— Prometheus๋ฅผ ์—ฐ๋™ ํ›„, Grafana๋กœ ์‹œ๊ฐํ™”๋œ ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค.

 

Prometheus๋ž€?

Prometheus๋Š” ์›๋ž˜ Soundcloud์—์„œ ๋งŒ๋“  ์˜คํ”ˆ์†Œ์Šค ์‹œ์Šคํ…œ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์•Œ๋ฆผ ํˆดํ‚ท์ž…๋‹ˆ๋‹ค. 2012๋…„ ์‹œ์ž‘ ์ด๋ž˜, ๋งŽ์€ ๊ธฐ์—…๊ณผ ์กฐ์ง์ด Prometheus๋ฅผ ์ฑ„ํƒํ–ˆ์œผ๋ฉฐ, ์ด ํ”„๋กœ์ ํŠธ๋Š” ๋งค์šฐ ํ™œ๋ฐœํ•œ ๊ฐœ๋ฐœ์ž ๋ฐ ์‚ฌ์šฉ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ๋Š” ๋…๋ฆฝํ˜• ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋กœ์„œ ์–ด๋–ค ํšŒ์‚ฌ๋กœ๋ถ€ํ„ฐ๋„ ๋…๋ฆฝ์ ์œผ๋กœ ์œ ์ง€ ๊ด€๋ฆฌ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ฐ•์กฐํ•˜๊ณ  ํ”„๋กœ์ ํŠธ์˜ ๊ฑฐ๋ฒ„๋„Œ์Šค ๊ตฌ์กฐ๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๊ธฐ ์œ„ํ•ด Prometheus๋Š” 2016๋…„์— Kubernetes์— ์ด์–ด ๋‘ ๋ฒˆ์งธ๋กœ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ์ปดํ“จํŒ… ์žฌ๋‹จ์— ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ๋กœ ๊ฐ€์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. Prometheus๋Š” ๋ ˆ์ด๋ธ”์ด๋ผ๋Š” optional key-value์Œ๋“ค๊ณผ ํ•จ๊ป˜ ๊ธฐ๋ก๋œ metrics๋ฅผ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋กœ ์ˆ˜์ง‘ ๋ฐ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์›๋ฌธ๐Ÿ”—

๊ทธ๋ฆฌ๊ณ  Prometheus๋ฅผ ํ†ตํ•ด ์ˆ˜์ง‘, ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋Š” PromQL์ด๋ผ๋Š” ์ฟผ๋ฆฌ ํ˜•ํƒœ๋กœ ์ถ”์ถœ ๋ฐ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Grafana๋ž€?

Grafana OSS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”ํŠธ๋ฆญ, ๋กœ๊ทธ ๋ฐ ์ถ”์ ์ด ์ €์žฅ๋œ ์œ„์น˜์— ๊ด€๊ณ„์—†์ด ์ฟผ๋ฆฌ, ์‹œ๊ฐํ™”, ์•Œ๋ฆผ ๋ฐ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Grafana OSS๋Š” ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(TSDB) ๋ฐ์ดํ„ฐ๋ฅผ ์•Œ๊ธฐ ์‰ฌ์šด ๊ทธ๋ž˜ํ”„์™€ ์‹œ๊ฐํ™”๋กœ ์ „ํ™˜ํ•  ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ Grafana OSS ํ”Œ๋Ÿฌ๊ทธ์ธ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด NoSQL/SQL DB, Jira ๋˜๋Š” ServiceNow์™€ ๊ฐ™์€ ํ‹ฐ์ผ“ํŒ… ๋„๊ตฌ, GitLab๊ณผ ๊ฐ™์€ CI/CD ๋„๊ตฌ์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›๋ฌธ๐Ÿ”—

์ฆ‰ Prometheus๋ฅผ ํ†ตํ•ด ์ถ”์ถœํ•œ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฅผ Grafana๋กœ ์‹œ๊ฐํ™”ํ•จ์œผ๋กœ์จ ๋‚ด๊ฐ€ ํ˜„์žฌ ์„œ๋น„์Šคํ•˜๋Š” Spring Boot ์•ฑ๋“ค์„ ํ•œ ๋ˆˆ์— ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Spring Boot Applications ์ค€๋น„

Grafana + Prometheus ์ ์šฉ ์ „ ๊ฒ€์ฆ

์ด ํฌ์ŠคํŠธ์—์„œ๋Š” ์šฐ๋ถ„ํˆฌ ํ™˜๊ฒฝ ์œ„์—์„œ ์ตœ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ (MSA; Microservices Architecture) ํ˜•ํƒœ๋กœ Spring Boot ์•ฑ๋“ค์„ ์„œ๋น„์Šคํ•œ๋‹ค. ์šฐ์ธก ์ด๋ฏธ์ง€์˜ step09_๋กœ ์‹œ์ž‘ํ•˜๋Š” ์•ฑ๋“ค์ด ๋ฐ”๋กœ ๊ทธ๊ฒƒ์ด๋‹ค.

์ด 4๊ฐœ์˜ ์•ฑ๋“ค์„ ์š”์•ฝํ•˜์ž๋ฉด:

    • step09_SpringCloudClient1: Payment service๋ผ ๊ฐ€์ •. /payment/info์—์„œ ํ•ด๋‹น ์„œ๋น„์Šค์˜ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์•Œ๋ ค์ค€๋‹ค.
    • step09_SpringCloudClient2: Order service๋ผ ๊ฐ€์ •. /order/info์—์„œ ํ•ด๋‹น ์„œ๋น„์Šค์˜ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์•Œ๋ ค์ค€๋‹ค.
    • step09_SpringCloudGateway: Gateway service. ์œ„ 1, 2 ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์„ 80 ํฌํŠธ๋กœ ๋ฌถ๋Š” ๊ฒŒ์ดํŠธ์›จ์ด ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์‹ค์ œ๋กœ ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค๋ฉด Nginx๋‚˜ Apache๋ฅผ 80๋ฒˆ ํฌํŠธ์— ๋ฌผ๋ ค๋†“๋Š” ๊ฒƒ์ด ์ข‹๊ฒ ์ง€๋งŒ ์ด ํฌ์ŠคํŠธ์—์„œ๋Š” ๊ฒŒ์ดํŠธ์›จ์ด ์„œ๋น„์Šค๋ฅผ 80๋ฒˆ ํฌํŠธ์— ๋ฌผ๋ ค๋†“๊ธฐ๋กœ ํ•œ๋‹ค.
    • step09_SpringCloudServer: Eureka server. ์œ„ 3๊ฐœ์˜ ์„œ๋น„์Šค๋“ค์€ ์ „๋ถ€ @EnableDiscoveryClient ์• ๋„ˆํ…Œ์ด์…˜์„ ์ ์šฉํ•˜์—ฌ ์ด Eureka server์— ๋“ฑ๋ก๋˜๊ฒŒ๋” ๋งŒ๋“ค์—ˆ๋‹ค.
    • ๋ชจ๋‘ Java 17, Spring Boot 3.2.3, Gradle + Groovy๋กœ ๊ตฌ์„ฑ
    • Eureka server ๋ฐ client ๊ตฌ์„ฑ
    • application.properties๊ฐ€ ์•„๋‹ˆ๋ผ application.yml์„ ์ž‘์„ฑ
    • ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์€ STS4์ด๋‹ค.

 

4๊ฐœ์˜ ์•ฑ๋“ค์„ ์‹คํ–‰๊ฐ€๋Šฅํ•œ jar ํŒŒ์ผ๋กœ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ./gradlew bootJar๋ฅผ ์‹คํ–‰ํ•˜์˜€๋‹ค.

 

 

๊ทธ๋ฆฌ๊ณ  ์œ„์™€ ๊ฐ™์ด ์œˆ๋„์šฐ์—์„œ 4๊ฐœ์˜ ์•ฑ๋“ค์„ ๊ตฌ๋™ํ•˜์—ฌ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์˜€๋‹ค.

 

Spring Boot ์•ฑ๋“ค์— Prometheus ์ ์šฉ

Spring Boot ์•ฑ๋“ค์— Spring Boot Actuator๋ฅผ ํ™œ์„ฑํ™”ํ•˜์—ฌ, Actuator๊ฐ€ ์ œ๊ณตํ•˜๋Š” metrics๋ฅผ Prometheus๋กœ ์ˆ˜์ง‘ํ•˜์ž.

์šฐ์„  ๊ฐ ์•ฑ๋“ค์˜ application.yml์— ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

Eureka server์˜ application.yml:

server:
  port: 8761
  address: 127.0.0.1
  tomcat:
    mbeanregistry:
      enabled: true 

management:
  endpoints:
    web:
      exposure:
        include: "*"

eureka:
  instance:
    hostname: 127.0.0.1 # public IP ์ฃผ์†Œ ๋˜๋Š” ๊ทธ๋ƒฅ localhost ๋“ฑ..
    prefer-ip-address: true  #instance๊ฐ€ client ๋ณด๋‹ค ์œ„์— ์žˆ๊ฒŒ
  client:
    register-with-eureka: false  #์„œ๋ฒ„๋ผ์„œ false
    fetch-registry: false
    service-url:
      default-zone: http://${eureka.instance.hostname}:${server.port}/eureka/ # ์ถ”๊ฐ€

ํŠนํžˆ ์ค‘์š”ํ•œ ํŒŒํŠธ๋Š” server์•„๋ž˜์˜ tomcat๋ถ€ํ„ฐ, management ํ•ญ๋ชฉ ์ „์ฒด์ด๋‹ค.

๋จผ์ € server์•„๋ž˜์˜ tomcat ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์„ค๋ช…์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

๐Ÿ’ก Tomcat MBean ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ํ™œ์„ฑํ™”ํ•˜๊ธฐ:

  • MBean์€ Java Management Extensions (JMX)๋ฅผ ํ†ตํ•ด ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” Java ๊ฐ์ฒด
  • Tomcat์˜ MBean ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ฉด, ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค๊ฐ€ ํ†ฐ์บฃ ๋‚ด๋ถ€์˜ ๋‹ค์–‘ํ•œ ๋ฉ”ํŠธ๋ฆญ์„ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋ฅผ ํ†ตํ•ด ํ†ฐ์บฃ์˜ ์„ฑ๋Šฅ ๋ฐ ์ƒํƒœ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€๋Šฅ
์ž„๋ฒ ๋””๋“œ ํ†ฐ์บฃ์˜ MBean ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋ผ ์žˆ๋‹ค. ๋•๋ถ„์— ํ†ฐ์บฃ์˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ†ฐ์บฃ์˜ MBean์„ ์‚ฌ์šฉํ•ด์„œ Micrometer ๋“ฑ์„ ํ†ตํ•ด ๋ฉ”ํŠธ๋ฆญ์„ ๋…ธ์ถœํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด (...) server.tomcat.mbeanregistry.enabled ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์›๋ฌธ๐Ÿ”—

๋˜ํ•œ management ํ•ญ๋ชฉ์€, Spring Boot ์•ฑ๋“ค์˜ /actuator/prometheus๋ผ๋Š” path๋ฅผ ๋…ธ์ถœ์‹œํ‚ค๊ธฐ ์œ„ํ•จ์ด๋‹ค. ์—ฌ๊ธฐ์„œ endpoint์˜ include๋Š” ํ•ด๋‹น ํ•ญ๋ชฉ๋“ค์„ ํฌํ•จํ•œ๋‹ค, ๊ทธ๋ฆฌ๊ณ  exclude๋Š” ๋ฐฐ์ œํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. *๋ผ๋Š” ๊ฐ’์€ ๋ชจ๋“  endpoints๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ. ๊ทธ๊ฒŒ ์•„๋‹ˆ๋ผ ํŠน์ •ํ•œ endpoint๋งŒ ๋…ธ์ถœ์‹œํ‚ค๊ณ ์ž ํ•œ๋‹ค๋ฉด ์ƒํ™ฉ์— ๋งž๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ฐ ์•ฑ๋“ค์˜ build.gradle์˜ dependencies ํ•ญ๋ชฉ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด Prometheus์™€ Actuator๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค.

dependencies {
	(... ์ƒ๋žต ...)
	runtimeOnly 'io.micrometer:micrometer-registry-prometheus' // ๋งˆ์ดํฌ๋กœ๋ฏธํ„ฐ ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ๊ตฌํ˜„์ฒด
	implementation 'org.springframework.boot:spring-boot-starter-actuator' // ์•ก์ถ”์—์ดํ„ฐ
}

 

์ด๋ ‡๊ฒŒ application.yml ๋ฐ build.gradle ๊ตฌ์„ฑ์„ ๋‚˜๋จธ์ง€ 3๊ฐœ์˜ ์•ฑ๋“ค์—๋„ ์ ์šฉํ•œ ๋’ค, bootJar๋ฅผ ํ†ตํ•ด ์‹คํ–‰๊ฐ€๋Šฅํ•œ jar ํŒŒ์ผ์„ ๋ฐ›๋Š”๋‹ค.

Ubuntu์— Grafana ๋ฐ Prometheus ํ™˜๊ฒฝ ๊ตฌ์„ฑ

Grafana ๋ฐ Prometheus ์„ค์น˜

์ด ํฌ์ŠคํŠธ์—์„œ๋Š” ์œ„ 4๊ฐœ์˜ Spring Boot ์•ฑ๋“ค์ด Ubuntu ํ™˜๊ฒฝ์—์„œ ๊ตฌ๋™๋  ๊ฒƒ์„ ์ „์ œ๋กœ ํ•œ๋‹ค. ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ Ubuntu์˜ ์…ธ์—์„œ ์‹คํ–‰ํ•˜์—ฌ Grafana ๋ฐ Prometheus๋ฅผ ์„ค์น˜ํ•˜์—ฌ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

# ์‹œ๊ฐํ™” ๋„๊ตฌ์ธ Grafana๋ฅผ ์„ค์น˜
sudo apt-get update
sudo apt-get install -y software-properties-common
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo apt-get update
sudo apt-get install grafana

# Grafana๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ํ™œ์„ฑํ™”
sudo systemctl start grafana-server
sudo systemctl enable grafana-server

# ๋ชจ๋‹ˆํ„ฐ๋ง ๋„๊ตฌ์ธ Prometheus๋ฅผ ์„ค์น˜
sudo apt-get install prometheus

# Prometheus๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ํ™œ์„ฑํ™”
sudo systemctl start prometheus
sudo systemctl enable prometheus

Prometheus ํ™˜๊ฒฝ ๊ตฌ์„ฑ

Prometheus์˜ /etc/prometheus/prometheus.yml (ํ•ด๋‹น ํŒŒ์ผ์˜ ๋์—๋‹ค๊ฐ€ ๋ถ™์ผ ๊ฒƒ, targets ํ•ญ๋ชฉ์€ ์ƒํ™ฉ์— ๋งž๊ฒŒ ์กฐ์ •, ๋“ค์—ฌ์“ฐ๊ธฐ ์ฃผ์˜!)

  - job_name: 'probono-server'
    metrics_path: '/actuator/prometheus'
    scrape_interval: 5s
    scrape_timeout: 5s
    static_configs:
      - targets: ['localhost:8761']

์ดํ›„ ์•„๋ž˜์™€ ๊ฐ™์ด Prometheus ์„œ๋น„์Šค ์žฌ์‹œ์ž‘:

# Prometheus๋ฅผ ์žฌ์‹œ์ž‘
sudo systemctl reload prometheus
sudo systemctl restart prometheus

์œ„์—์„œ application.yml ๋ฐ build.gradle๋ฅผ ์ˆ˜์ •ํ•œ 4๊ฐœ์˜ ์•ฑ๋“ค์˜ jar ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๊ณ , Ubuntu์˜ ์…ธ์—์„œ curl http://localhost:8761/actuator/prometheus ์‹คํ–‰ ์‹œ ์•„๋ž˜์™€ ๊ฐ™์ด ๋œจ๋ฉด metrics๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ถœ๋ ฅ๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

๋งŒ์•ฝ, 404 Not Found ๋“ฑ์˜ ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค๋ฉด Prometheus ์ ์šฉ์— ์‹คํŒจํ•œ ๊ฒƒ์ด๋‹ค.

Grafana ํ™˜๊ฒฝ ๊ตฌ์„ฑ

์ดˆ๊ธฐ ๊ตฌ์„ฑ

http://localhost:3000์— ์ ‘์†ํ•˜์—ฌ Grafana ๋กœ๊ทธ์ธ ํ™”๋ฉด์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ๋ณธ ๊ณ„์ •์€ admin / admin

๊ทธ๋ฆฌ๊ณ  ์ตœ์ดˆ ๋กœ๊ทธ์ธ ์‹œ, ์•„๋ž˜ ํ™”๋ฉด๊ณผ ๊ฐ™์ด ์•”ํ˜ธ๋ฅผ ์„ค์ •ํ•˜๋ผ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ๋œฌ๋‹ค.

์›ํ•˜๋Š” ์•”ํ˜ธ๋ฅผ ์„ค์ •ํ•œ ๋’ค (๋˜๋Š” ์ขŒ์ธกํ•˜๋‹จ skip๋ฅผ ๋ˆ„๋ฅธ ๋’ค) Submit๋ฅผ ๋ˆ„๋ฅธ๋‹ค.

Spring Boot ๋ชจ๋‹ˆํ„ฐ๋ง์— ์ ํ•ฉํ•œ ๋Œ€์‹œ๋ณด๋“œ ์ƒ์„ฑ

์ด์ œ Spring Boot ์•ฑ๋“ค์˜ ๋ชจ๋‹ˆํ„ฐ๋ง์— ์ ํ•ฉํ•œ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. Grafana ๋ฉ”์ธ ํ™”๋ฉด์˜ ์ขŒ์ธก์ƒ๋‹จ Dashboards๋ฅผ ํด๋ฆญํ•œ๋‹ค.

์ดํ›„ ๋Œ€์‹œ๋ณด๋“œ ํ™”๋ฉด์˜ ์šฐ์ธก์ƒ๋‹จ Import๋ฅผ ์„ ํƒํ•œ๋‹ค.

์œ ์ €๊ฐ€ ์ง์ ‘ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๊ฒ ์ง€๋งŒ, ์ด๋ฏธ ๋ˆ„๊ฐ€ ๋งŒ๋“ค์–ด๋†“์€ ํ…œํ”Œ๋ฆฟ์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด ํฌ์ŠคํŠธ์—์„œ๋Š” 'Spring Boot 2.1 System Monitor'๋ผ๋Š” ํ…œํ”Œ๋ฆฟ์„ ๊ฐ€์ ธ๋‹ค ์“ธ ๊ฒƒ์ด๋‹ค. https://grafana.com/grafana/dashboards/11378-justai-system-monitor/

 

Dashboards | Grafana Labs

Thank you! Your message has been received!

grafana.com

์ด Spring Boot 2.1 System Monitor์˜ Copy ID to clipboard๋ฅผ ํด๋ฆญํ•œ๋‹ค.

๋‹ค์‹œ localhost์˜ Grafana ํŽ˜์ด์ง€๋กœ ๋Œ์•„์™€์„œ, ์•„๋ž˜์™€ ๊ฐ™์ด, ํ•ด๋‹น ํ…œํ”Œ๋ฆฟ์„ importํ•œ๋‹ค.

์ด๋•Œ Datasource๋กœ Premetheus๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด, 'Prometheus server URL'์ด๋ผ๋Š” ํ•ญ๋ชฉ์—๋Š” http://localhost:9090์„ ๋„ฃ๋Š”๋‹ค.

 

Grafana ๋Œ€์‹œ๋ณด๋“œ ์ตœ์ข… ํ™•์ธ

Importํ•œ ํ…œํ”Œ๋ฆฟ์„ ํ†ตํ•ด ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์•„๋ž˜์™€ ๊ฐ™์€ ํ™”๋ฉด์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.