Search
Duplicate
πŸ–‡οΈ

μƒνƒœ λͺ¨λ‹ˆν„°λ§ ν™˜κ²½ ꡬ좕

생성일
2022/09/24
νƒœκ·Έ
Spring
infra
linux
λͺ©μ°¨

λ„μž… λ°°κ²½

μ§€λ‚œ μŠ€ν”„λ¦°νŠΈ λ•Œ μ„œλ²„κ°€ λ‹€μš΄λλŠ”λ° 원인 νŒŒμ•…μ΄ λ°”λ‘œ λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. μ–΄λ–€ μƒνƒœμ˜€λŠ”μ§€λ„ 잘 λͺ°λžκΈ°λ•Œλ¬Έμ— μš°μ„  μΈμŠ€ν„΄μŠ€λ₯Ό μ€‘μ§€μ‹œν‚€κ³  μž¬μ‹€ν–‰ν•œ λ’€ λ‹€ν–‰νžˆ μ„œλ²„λ₯Ό λ„μšΈ 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. μ•žμœΌλ‘œ 또 이런 일이 λ°œμƒν•˜μ§€ μ•Šμ„ κ²ƒμ΄λΌλŠ” ν™•μ‹ ν•  수 μ—†μŠ΅λ‹ˆλ‹€. 이에 따라 μ†Œμžƒκ³  μ™Έμ–‘κ°„ κ³ μΉ˜λŠ” μ‹¬μ •μœΌλ‘œ, μ΄λŸ¬ν•œ ν˜„μƒμ„ λ°©μ§€ν•˜κ³  μ„œλ²„μ˜ μƒνƒœλ₯Ό μ§€μ†μ μœΌλ‘œ ν™•μΈν•˜κΈ° μœ„ν•΄ λͺ¨λ‹ˆν„°λ§ νˆ΄μ„ λ„μž…ν•˜κΈ°λ‘œ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

λͺ¨λ‹ˆν„°λ§ μ‹œμŠ€ν…œ λͺ©μ 

μ•ˆμ •μ μΈ μ„œλΉ„μŠ€λ₯Ό μœ„ν•΄μ„œλŠ” λͺ¨λ‹ˆν„°λ§ μ‹œμŠ€ν…œμ΄ ν•„μˆ˜μž…λ‹ˆλ‹€. λͺ¨λ‹ˆν„°λ§ ν™˜κ²½μ„ κ΅¬μΆ•ν•˜λ©΄ μ„œλΉ„μŠ€ κΈ°λŠ₯이 μ •μƒμ μœΌλ‘œ μž‘λ™ν•˜λŠ”μ§€, μ„œλ²„κ°€ λ‹€μš΄λ˜μ§€ μ•Šμ•˜λŠ”μ§€ 등을 λͺ¨λ‹ˆν„°λ§ν•˜κ³  μž₯μ• κ°€ λ°œμƒν•˜λ©΄ 이에 λŒ€ν•΄ μΈμ§€ν•˜κ³  λŒ€μ²˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λͺ¨λ‹ˆν„°λ§ν•˜λŠ” λŒ€μƒμ€ μ—¬λŸ¬ 가지가 μžˆμ„ 수 μžˆλŠ”λ°, 저희 λͺ¨λ½ ν”„λ‘œμ νŠΈμ—μ„œλŠ” μ„œλ²„μ˜ μƒνƒœμ™€ μ„±λŠ₯을 λͺ¨λ‹ˆν„°λ§ν•˜κ³ , μ•± μ„œλ²„μ˜ λ‘œκ·Έμ— λŒ€ν•œ λͺ¨λ‹ˆν„°λ§ λ“± 두 λŒ€μƒμ— λŒ€ν•΄ λͺ¨λ‹ˆν„°λ§μ„ μ§„ν–‰ν•˜κ³ μž ν•©λ‹ˆλ‹€.

μƒνƒœ λͺ¨λ‹ˆν„°λ§

ν•΄λ‹Ή μ„œλ²„μ˜ μƒνƒœκ°€ 어떀지 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. μ„œλ²„ μƒνƒœμ—λŠ” CPU, λ©”λͺ¨λ¦¬ 이용λ₯  λ˜λŠ” μ•± μ„œλ²„μ˜ DB 컀λ„₯μ…˜ μƒνƒœ, μƒμ„±λ˜μ–΄μžˆλŠ” μ“°λ ˆλ“œ 수, μš”μ²­ API λΉˆλ„ 등이 있고 이와 같은 μ„œλ²„ μƒνƒœμ˜ λ©”νŠΈλ¦­μ„ ν™•μΈν•˜κ³  뢄석할 수 μžˆμŠ΅λ‹ˆλ‹€.

Spring Boot Actuator

β€’
Spring Boot의 λͺ¨λ‹ˆν„°λ§κ³Ό 관리λ₯Ό μœ„ν•œ λ„κ΅¬μž…λ‹ˆλ‹€. HTTP λ˜λŠ” JMX둜 μ—”λ“œν¬μΈνŠΈλ₯Ό μ„€μ •ν•˜κ³  이 정보λ₯Ό 기반으둜 μ„œλ²„μ˜ μƒνƒœλ₯Ό λͺ¨λ‹ˆν„°λ§ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ©”νŠΈλ¦­, ν—¬μŠ€ 체크, DB 컀λ„₯μ…˜ μƒνƒœ λ“± μˆ˜μ§‘μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.
β€’
κΈ°λŠ₯이 κ°•λ ₯ν•œ 만큼 λ³΄μ•ˆμ—λ„ 신경을 μ¨μ•Όν•©λ‹ˆλ‹€. μ„œλ²„μ˜ μƒνƒœλ₯Ό λ“œλŸ¬λ‚΄κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. λ©”λͺ¨λ¦¬, CPU μƒνƒœ 뿐만 μ•„λ‹ˆλΌ μ„€μ • 파일의 μ ˆλŒ€ 경둜 등도 확인할 수 μžˆμ–΄μ„œ μ œν•œμ μœΌλ‘œ 정보λ₯Ό μ˜€ν”ˆν•΄μ•Όν•©λ‹ˆλ‹€.
β€’
이벀트 λͺ¨λ‹ˆν„°λ§ 및 경고에 μ‚¬μš©λ˜λŠ” μ˜€ν”ˆ μ†ŒμŠ€ νˆ΄μž…λ‹ˆλ‹€. μœ μ—°ν•œ 쿼리λ₯Ό μ œκ³΅ν•˜κ³ , HTTP ν’€ λͺ¨λΈμ„ μ‚¬μš©ν•˜μ—¬ κ΅¬μΆ•λœ μ‹œκ³„μ—΄ λ°μ΄ν„°λ² μ΄μŠ€μ— μ‹€μ‹œκ°„(κΈ°λ³Έ 15초)으둜 λ©”νŠΈλ¦­μ„ κΈ°λ‘ν•˜κ³  μ‹œκ°ν™”κ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€.
β€’
μ‹œκ³„μ—΄ 데이터 μ‹œκ°ν™” μ˜€ν”ˆ μ†ŒμŠ€ νˆ΄μž…λ‹ˆλ‹€. prometheus λ‘œλŠ” 병렬적인 μ‹œκ°ν™”κ°€ νž˜λ“€κ³  λ‹€μ–‘ν•œ μžλ£Œκ°€ νž˜λ“€μ–΄ grafana λ₯Ό ν•¨κ»˜ μ‚¬μš©ν•©λ‹ˆλ‹€. μ—¬λŸ¬ DBλ₯Ό μ§€μ›ν•˜κ³ , 자유둭게 λŒ€μ‹œλ³΄λ“œλ₯Ό ꡬ성할 수 μžˆλŠ”λ° 보톡 ν…œν”Œλ¦Ώμ„ ν™œμš©ν•©λ‹ˆλ‹€.

μŠ€ν”„λ§λΆ€νŠΈ μ„€μ •

λ¨Όμ € μ•± μ„œλ²„μ˜ μƒνƒœλ₯Ό 보여주기 μœ„ν•œ μŠ€ν”„λ§λΆ€νŠΈ 섀정을 actuactor 와 prometheus 둜 ν•©λ‹ˆλ‹€.

μ˜μ‘΄μ„± μΆ”κ°€

implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'io.micrometer:micrometer-registry-prometheus'
Groovy
볡사
μŠ€ν”„λ§λΆ€νŠΈμ—μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘ μ˜μ‘΄μ„±μ„ μΆ”κ°€ν•΄μ€λ‹ˆλ‹€.

property μ„€μ •

management: endpoints: web: exposure: include: "prometheus" endpoints: health: show-details: always metrics: tags: application: ${spring.application.name}
YAML
볡사
β€’
management.endpoints.web.exposure.include
β—¦
actuator API μ—μ„œ 보여 쀄 λ°μ΄ν„°μ˜ μΉ΄ν…Œκ³ λ¦¬λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€.
β—¦
* 둜 μ„€μ •ν•˜λ©΄ μ„œλ²„μ˜ λͺ¨λ“  μƒνƒœλ₯Ό 보여쀄 수 μžˆκΈ°λ•Œλ¬Έμ— 맀우 μœ„ν—˜ν•©λ‹ˆλ‹€.
include λ₯Ό * 둜 ν–ˆμ„ λ•Œ
β—¦
μœ„μ™€ 같이 각각의 정보가 λ‹΄κΈ΄ λͺ¨λ“  API λ₯Ό μ˜€ν”ˆν•©λ‹ˆλ‹€.
β€’
management.metrics.tags.application
β—¦
이후 prometheus μ—μ„œ ꡬ뢄할 application 의 이름을 μ •ν•©λ‹ˆλ‹€.
이외에도 authorization λ“± λ‹€μ–‘ν•œ 섀정이 λ§Žμ§€λ§Œ, ν˜„μž¬ WAS μ„œλ²„λŠ” private IP 둜만 접근이 κ°€λŠ₯ν•˜κΈ°λ•Œλ¬Έμ— μœ„μ™€ 같이 μ„€μ •λ§Œ 해도 λ³΄μ•ˆμƒ λ¬Έμ œκ°€ μ—†μŠ΅λ‹ˆλ‹€.

인프라 섀계

μ €ν¬λŠ” AWS 의 t4g.micro λ₯Ό μ΄μš©ν•΄μ•Ό ν•˜λŠ” μ„œλ²„ λ¦¬μ†ŒμŠ€ μ œν•œμ΄ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. ν•΄λ‹Ή μΈμŠ€ν„΄μŠ€λŠ” 1GB λ©”λͺ¨λ¦¬λ₯Ό κ°€μ§€κΈ°λ•Œλ¬Έμ— WAS, prometheus, grafana λ₯Ό λͺ¨λ‘ ν•˜λ‚˜μ˜ μ„œλ²„μ— λ„μš°κΈ°λŠ” νž˜λ“€μ—ˆμŠ΅λ‹ˆλ‹€. κ·Έλ ‡λ‹€κ³  WAS, prometheus, grafana λ₯Ό 각각의 μΈμŠ€ν„΄μŠ€λ‘œ λ„μš°λŠ” 것도 λΆˆκ°€λŠ₯ν–ˆμŠ΅λ‹ˆλ‹€. κ·Έ 이유둜, ν—ˆμš©λœ μΈλ°”μš΄λ“œ κ·œμΉ™μ΄ 8080κ³Ό 8081 ν¬νŠΈλ°–μ— μ—†μ—ˆκΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. 이에 따라 이후 둜그 λͺ¨λ‹ˆν„°λ§ μ„œλ²„κΉŒμ§€ κ³ λ €ν•˜μ—¬ μ„€κ³„ν•œ μƒνƒœ λͺ¨λ‹ˆν„°λ§ μΈμŠ€ν„΄μŠ€ κ΅¬μ‘°λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
β€’
WASλŠ” ν…ŒμŠ€νŠΈμš© 8081 포트둜 μ‹€ν–‰ν•˜μ˜€μŠ΅λ‹ˆλ‹€. ν•΄λ‹Ή ν¬νŠΈλŠ” μΈλ°”μš΄λ“œ κ·œμΉ™μ— μœ„λ°°λ˜μ§€ μ•Šμ•„ actuator λ₯Ό ν•΄λ‹Ή 포트둜 μ΄μš©ν•˜κΈ°λ‘œ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
β€’
prometheus λŠ” 8080 으둜 μ‹€ν–‰ν•˜μ˜€μŠ΅λ‹ˆλ‹€. ν˜„μž¬λŠ” μ„œλ²„κ°€ 잘 λ™μž‘ν•˜λŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ 8080 으둜 μ‹€ν–‰ν•˜μ˜€κ³ , μΆ”ν›„ 둜그 λͺ¨λ‹ˆν„°λ§λ•Œ 포트λ₯Ό λ°”κΏ€ μ˜ˆμ •μž…λ‹ˆλ‹€.
β€’
grafana λŠ” μ‹œκ°ν™” νˆ΄μ΄κΈ°λ•Œλ¬Έμ—, ν™•μΈμš© 이외에도 μ§€μ†μ μœΌλ‘œ 접속이 κ°€λŠ₯ν•΄μ•Ό ν•©λ‹ˆλ‹€. 이에 따라 8081 포트둜 μ‹€ν–‰μ‹œμΌœ μΈλ°”μš΄λ“œ κ·œμΉ™μ— μœ„λ°°λ˜μ§€ μ•Šκ²Œ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

Prometheus μ„€μΉ˜

λͺ¨λ‹ˆν„°λ§ μ„œλ²„λ₯Ό λ„μšΈ μΈμŠ€ν„΄μŠ€λ‘œ μ ‘μ†ν•˜μ—¬ prometheus λ₯Ό μ„€μΉ˜ν•˜κ³  μ„œλ²„λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.
wget https://github.com/prometheus/prometheus/releases/download/v2.37.1/prometheus-2.37.1.linux-arm64.tar.gz tar -xvf prometheus-2.37.1.linux-arm64.tar.gz
Shell
볡사
wget λͺ…λ Ήμ–΄λŠ” web-get 의 μ€„μž„λ§μ΄κ³ , web μ—μ„œ λ‹€μš΄λ‘œλ“œ ν•  λ•Œ μ‚¬μš©λ˜λŠ” λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.
2022-09-23 κΈ°μ€€Β LTS 버전인 2.37.1 λ²„μ „μ˜ λ¦¬λˆ…μŠ€ arm64 버전을 λ‹€μš΄λ°›μ•˜μŠ΅λ‹ˆλ‹€. λ‹Ήμ—°ν•œ λ§μ΄μ§€λ§Œ, μΈμŠ€ν„΄μŠ€μ˜ OS 버전에 맞게 잘 λ‹€μš΄λ‘œλ“œν•΄μ•Ό 싀행이 κ°€λŠ₯ν•©λ‹ˆλ‹€. μ²˜μŒμ—λŠ” 아무 생각없이 freebsd 버전을 λ‹€μš΄ λ°›μ•˜λ‹€κ°€ κ³ μƒν–ˆμŠ΅λ‹ˆλ‹€. λ‹€μš΄λ‘œλ“œν•œ νŒŒμΌμ„ tar λͺ…λ Ήμ–΄λ‘œ 압좕을 ν’€μ–΄μ£Όλ©΄ prometheus-2.37.1.linux-arm64 λΌλŠ” λ‹€μš΄λ‘œλ“œν•œ 버전 μ΄λ¦„μ˜ 폴더가 μƒμ„±λ©λ‹ˆλ‹€.

Prometheus μ„€μ •

압좕을 ν‘Ό prometheus-2.37.1.linux-arm64 ν΄λ”μ—μ„œ vi λͺ…λ Ήμ–΄λ‘œ prometheus.yml νŒŒμΌμ„ μˆ˜μ •ν•©λ‹ˆλ‹€.
global: scrape_interval: 15s evaluation_interval: 15s alerting: alertmanagers: - static_configs: - targets: scrape_configs: - job_name: "prometheus" static_configs: - targets: ["localhost:8080"] - job_name: "springboot" metrics_path: "/actuator/prometheus" static_configs: - targets: ["{WAS IP}:{WAS PORT}"]
YAML
볡사
β€’
interval: 15s
β—¦
λŒ€μƒ μ„œλ²„μ—μ„œ 데이터λ₯Ό κ°€μ Έμ˜¬ μ‹œκ°„ 간격을 μ •μ˜ν•©λ‹ˆλ‹€. 기본값인 15초λ₯Ό κ·ΈλŒ€λ‘œ μ‚¬μš©ν•΄ μ£Όμ—ˆμŠ΅λ‹ˆλ‹€.
β€’
alert λŠ” λ”°λ‘œ μ‚¬μš©ν•˜μ§€ μ•ŠκΈ°μ—, 빈 κ°’μœΌλ‘œ λ‘μ—ˆμŠ΅λ‹ˆλ‹€.
β€’
job_name: prometheus(localhost:8080)
β—¦
prometheus μ—μ„œ 자체적으둜 데이터λ₯Ό κ°€μ Έμ˜€λŠ” job μž…λ‹ˆλ‹€.
β—¦
ν•΄λ‹Ή ν¬νŠΈμ—μ„œ prometheus μ„œλ²„μ˜ μƒνƒœ, κ·Έλž˜ν”„ 등을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
β—¦
ν•΄λ‹Ή νŽ˜μ΄μ§€λŠ” grafana λ₯Ό λ„μž…ν•˜λ©΄ μ‚¬μš©ν•  일이 λ“œλ¬ΌκΈ°λ•Œλ¬Έμ— 이후에 κΈ°λ³Έκ°’(9090)으둜 λ³€κ²½ν•  μ˜ˆμ •μž…λ‹ˆλ‹€.
β€’
job_name: springboot
β—¦
WAS 의 actuator 에 μžˆλŠ” prometheus 의 정보λ₯Ό μ–»κΈ° μœ„ν•΄ job 을 μΆ”κ°€ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
β—¦
metrics_path μ—λŠ” 데이터λ₯Ό κ°€μ Έμ˜¬ μ„œλ²„μ˜ 데이터가 μžˆλŠ” endpoint λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€.
β—¦
target μ—λŠ” 데이터λ₯Ό κ°€μ Έμ˜¬ μ„œλ²„μ˜ IP 와 포트λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€.

Prometheus μ‹€ν–‰

sudo nohup ./prometheus --web.listen-address=:8080 &
Shell
볡사
nohup λͺ…λ Ήμ–΄λ‘œ μ‹€ν–‰ν•˜μ—¬ λ°±κ·ΈλΌμš΄λ“œλ‘œ μ‹€ν–‰ν•˜μ˜€μŠ΅λ‹ˆλ‹€. 이와 ν•¨κ»˜ 포트λ₯Ό μ„€μ •ν•˜κΈ° μœ„ν•΄ --web.listen-address μ˜΅μ…˜μœΌλ‘œ 8080을 μ„€μ •ν•˜κ³  μ„œλ²„λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.
μ„œλ²„λ₯Ό μ‹€ν–‰ν•œ ν›„ ν•΄λ‹Ή μΈμŠ€ν„΄μŠ€μ˜ 8080 포트둜 μ ‘μ†ν•˜λ©΄ λ‹€μŒκ³Ό 같은 화면을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. ν˜„μž¬λŠ” prometheus μ„œλ²„κ°€ 잘 μ‹€ν–‰λ˜μ—ˆλŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•œ μš©λ„μ΄κ³ , 이후에 이 νŽ˜μ΄μ§€λŠ” μ‚¬μš©ν•˜μ§€ μ•Šμ„ μ˜ˆμ •μž…λ‹ˆλ‹€. status - targets μ—μ„œ target 으둜 μ„€μ •ν•œ μ›Ήμ•±μ„œλ²„μ˜ health μƒνƒœλ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
우츑의 지ꡬ본 λͺ¨μ–‘을 λˆ„λ₯΄λ©΄ μ‚¬μš© κ°€λŠ₯ν•œ 쿼리듀을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. κ°„λ‹¨ν•˜κ²Œ μ‚΄μ•„μžˆλŠ” μ“°λ ˆλ“œ 개수 쿼리λ₯Ό μ‹€ν–‰(Execute)ν•˜κ³  Graph λ₯Ό 보면 μ‹œκ°ν™”λœ 자료λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ prometheus μ—μ„œλŠ” μœ„μ™€ 같이 λ‹¨νŽΈμ μΈ κ·Έλž˜ν”„ μžλ£Œλ°–μ— 확인할 수 μ—†μŠ΅λ‹ˆλ‹€. 이에 따라 λ‹€μ–‘ν•˜κ³  μ„ΈλΆ„ν™”λœ κ·Έλž˜ν”„λ₯Ό μœ„ν•΄ μ‹œκ°ν™” μ „μš© 툴인 Grafana λ₯Ό μ‚¬μš©ν•˜κ³ μž ν•©λ‹ˆλ‹€.

Grafana μ„€μΉ˜

wget https://dl.grafana.com/enterprise/release/grafana-enterprise-9.1.5.linux-arm64.tar.gz tar -zxvf grafana-enterprise-9.1.5.linux-arm64.tar.gz
Shell
볡사
μ„€μΉ˜ 방식은 μœ„μ˜ prometheus 와 μœ μ‚¬ν•©λ‹ˆλ‹€.

Grafana μ„€μ •

Grafana μ—­μ‹œ λ³΄μ•ˆκ·Έλ£Ήλ•Œλ¬Έμ— κΈ°λ³Έ 포트(3100) λŒ€μ‹  8081 포트둜 λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€. λ‹€μš΄λ°›μ€ ν΄λ”μ˜ conf/defaults.ini νŒŒμΌμ—μ„œ 포트λ₯Ό μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
# The http port to use http_port = 8081
Shell
볡사

Grafana μ‹€ν–‰

cd bin sudo nohup ./grafana-server &
Shell
볡사
grafana μ—­μ‹œ nohup λͺ…λ Ήμ–΄λ‘œ μ‹€ν–‰ν•˜μ˜€μŠ΅λ‹ˆλ‹€. μ„œλ²„λ₯Ό μ‹€ν–‰μ‹œν‚¨ ν›„ ν•΄λ‹Ή μΈμŠ€ν„΄μŠ€μ˜ 8081 포트둜 μ ‘μ†ν•©λ‹ˆλ‹€. 그러면 둜그인 화면이 λ‚˜μ˜€λŠ”λ°, 초기 아이디와 λΉ„λ°€λ²ˆν˜ΈλŠ” admin/admin μž…λ‹ˆλ‹€. ν•΄λ‹Ή μ •λ³΄λŠ” μ„€μ • νŒŒμΌμ—μ„œ λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
접속을 ν•˜λ©΄ data source λ₯Ό μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ•žμ„œ μ„€μ •ν•œ prometheus λ₯Ό μΆ”κ°€ν•΄μ€λ‹ˆλ‹€.
URL 은 데이터λ₯Ό λ°›μ•„μ˜¬ url 을 κΈ°μž…ν•©λ‹ˆλ‹€. ν˜„μž¬ prometheus 와 grafana κ°€ 같은 μΈμŠ€ν„΄μŠ€μ— 있고, prometheus λ₯Ό 8080 포트둜 μ‹€ν–‰ν•˜μ˜€κΈ°λ•Œλ¬Έμ— URL 에 localhost:8080 을 λ„£μ—ˆμŠ΅λ‹ˆλ‹€. λ‚˜λ¨Έμ§€λŠ” 기본으둜 두고 save ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
dashboard 둜 μ‹œκ°ν™”ν•˜κΈ° μœ„ν•΄ add a new panel 을 ν΄λ¦­ν•©λ‹ˆλ‹€.
metric 에 μ œκ³΅λ˜λŠ” 쿼리 쀑 μ›ν•˜λŠ” 쿼리λ₯Ό ν΄λ¦­ν•˜κ³  run queries λ₯Ό λˆ„λ₯΄λ©΄ κ·Έλž˜ν”„λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. Grafana μ—μ„œλŠ” λ‹¨μˆœν•œ ν•˜λ‚˜μ˜ 데이터λ₯Ό κ·Έλž˜ν”„λ‘œ λ³Ό 수 μžˆμ„ 뿐만 μ•„λ‹ˆλΌ μ—¬λŸ¬ 쿼리λ₯Ό λͺ¨μ•„ λ‹€μ–‘ν•˜κ³  ν’λΆ€ν•œ μ‹œκ°μ  자료λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. 그리고 μ‚¬μš©μžλ₯Ό μœ„ν•΄ μ—¬λŸ¬ 쿼리듀을 λ‹€μ–‘ν•œ μ‹œκ° 자료둜 λ³΄μ—¬μ£ΌλŠ” ν…œν”Œλ¦Ώλ„ μ œκ³΅ν•©λ‹ˆλ‹€.
저희 λͺ¨λ½μ€ μœ„μ˜ template 을 μ μš©ν•˜μ˜€κ³ , json 을 download λ°›μ•„ import ν•˜μ˜€μŠ΅λ‹ˆλ‹€. json 이외에도, ν•΄λ‹Ή template 의 ID λ₯Ό clipboard 에 μ €μž₯ν•˜κ³  Import via grafana.com μ—μ„œ id λ₯Ό λΆ™μ—¬λ„£κ³  load ν•˜λ©΄ import κ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€.
ν˜„μž¬ Prometheus 와 Grafana λ₯Ό μ μš©ν•œ μƒνƒœμž…λ‹ˆλ‹€.
ν•΄λ‹Ή ν…œν”Œλ¦Ώμ—μ„œλŠ” CPU, λ©”λͺ¨λ¦¬ μ‚¬μš©μœ¨, JVM λ©”λͺ¨λ¦¬ μ‚¬μš© ν˜„ν™©, μ“°λ ˆλ“œ 개수, μš”μ²­ API λΉˆλ„, DB 컀λ„₯μ…˜ 개수 등을 μžμ„Έν•˜κ²Œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
둜그 λͺ¨λ‹ˆν„°λ§ ꡬ좕 λ‚΄μš©μ€ λ‹€μŒ νŽ˜μ΄μ§€μ—μ„œ λ§ˆμ € μ§„ν–‰ν•˜κ² μŠ΅λ‹ˆλ‹€.