๐ง ํ๋ก๋ฉํ ์ฐ์ค (Prometheus)
์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฐ์ํ ๋ฉํธ๋ฆญ(์งํ)๋ฅผ ๊ทธ ์๊ฐ๋ง ํ์ธํ๋ ๊ฒ์ด ์๋๋ผ ๊ณผ๊ฑฐ ์ด๋ ฅ๊น์ง ํจ๊ป ํ์ธํ๋ ค๋ฉด ๋ฉํธ๋ฆญ์ ๋ณด๊ดํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ํ์ํฉ๋๋ค.
๋ํ ๋ฉํธ๋ฆญ์ ์ง์์ ์ผ๋ก ์์งํ๊ณ ์ด๋ฅผ DB์ ์ ์ฅํ๋ ๋ฌด์ธ๊ฐ๊ฐ ํ์ํฉ๋๋ค.
ํ๋ก๋ฉํ ์ฐ์ค๊ฐ ๋ฐ๋ก ์ด๋ฐ ์ญํ ์ ์ํํฉ๋๋ค.
๐ง ๊ทธ๋ผํ๋ (Grafana)
ํ๋ก๋ฉํ ์ฐ์ค๊ฐ DB๋ผ๊ณ ํ๋ค๋ฉด, ์ด DB์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ ์ฌ์ฉ์๊ฐ ๋ณด๊ธฐ ํธํ๊ฒ ๋ณด์ฌ์ฃผ๋ ๋์๋ณด๋๊ฐ ํ์ํฉ๋๋ค.
๊ทธ๋ผํ๋๋ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ํ๋ก ๋ณด์ฌ์ฃผ๋ ํด์ ๋๋ค.
์ ๋ง์ ๊ทธ๋ํ๋ฅผ ์ ๊ณตํ๊ณ , ํ๋ก๋ฉํ ์ฐ์ค๋ฅผ ํฌํจํ ๋ค์ํ ๋ฐ์ดํฐ์์ค๋ฅผ ์ง์ํฉ๋๋ค.
๐ง ํ๋ก๋ฉํ ์ฐ์ค์ ๊ทธ๋ผํ๋๋ฅผ ์ฌ์ฉํ ๋ชจ๋ํฐ๋ง
์ ์ฒด ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์คํ๋ง ๋ถํธ ์ก์ถ์์ดํฐ์ ๋ง์ดํฌ๋ก๋ฏธํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ๋ฉํธ๋ฆญ์ ์๋์ผ๋ก ์์ฑํฉ๋๋ค.
(๋ง์ดํฌ๋ก๋ฏธํฐ ํ๋ก๋ฉํ ์ฐ์ค ๊ตฌํ์ฒด๋ ํ๋ก๋ฉํ ์ฐ์ค๊ฐ ์ฝ์ ์ ์๋ ํฌ๋ฉง์ผ๋ก ๋ฉํธ๋ฆญ์ ์์ฑํฉ๋๋ค.)
ํ๋ก๋ฉํ ์ฐ์ค๋ ์ด๋ ๊ฒ ๋ง๋ค์ด์ง ๋ฉํธ๋ฆญ์ ์ง์ํด์ ์์งํ๊ณ , ์์งํ ๋ฉํธ๋ฆญ์ ๋ด๋ถ DB์ ์ ์ฅํฉ๋๋ค.
์ฌ์ฉ์๋ ๊ทธ๋ผํ๋ ๋์๋ณด๋ ํด์ ํตํด ๊ทธ๋ํ๋ก ํธ๋ฆฌํ๊ฒ ๋ฉํธ๋ฆญ์ ์กฐํํฉ๋๋ค.
์ด๋ ํ์ํ ๋ฐ์ดํฐ๋ ํ๋ก๋ฉํ ์ฐ์ค๋ฅผ ํตํด์ ์กฐํํฉ๋๋ค.
๐ง ํ๋ก๋ฉํ ์ฐ์ค ์ค์น
ํ๋ก๋ฉํ ์ฐ์ค ์ค์น ์ฌ์ดํธ(https://prometheus.io/download/)๋ก ์ด๋ํฉ๋๋ค.
์ฌ๊ธฐ์๋ ๋งฅ OS ๊ธฐ์ค์ผ๋ก ์ค์น๋ฅผ ์งํํ๊ฒ ์ต๋๋ค.
๋งฅ OS๋ darwin์ ์ ํํ์ฌ ์ค์นํฉ๋๋ค.
์ต์ ๋ฒ์ ํน์ LTS ๋ฒ์ ์ค ์๋ฌด๊ฑฐ๋ ์ค์นํ์๋ฉด ๋ฉ๋๋ค.
์ดํ (๋ฐ๋์) ํฐ๋ฏธ๋์ ํตํด ํ๋ก๋ฉํ ์ฐ์ค๊ฐ ์ค์น๋ ๊ฒฝ๋ก๋ก ์ด๋ํฉ๋๋ค.
์ดํ ./prometheus๋ฅผ ์ ๋ ฅํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒ์ ๋๋ค.
์ฐ์ ์ทจ์๋ฅผ ๋๋ฌ์ค ํ, ๋งฅ๋ถ์ ์์คํ ํ๊ฒฝ์ค์ -> ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ๋ฐ ๋ณด์ -> ๋ณด์์ผ๋ก ๋ค์ด๊ฐ๋๋ค.
์ดํ prometheus ์ฌ์ฉ์ ํ์ธ ์์ด ํ์ฉํ๋๋ก ๋ง๋ค์ด์ค๋๋ค.
์ด์ ๋ค์ ./prometheus๋ฅผ ์คํํฉ๋๋ค.
์ดํ http://localhost:9090 ์ผ๋ก ์ ์ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ๋ฉด์ ๋ณผ ์ ์์ต๋๋ค.
๐ง ํ๋ก๋ฉํ ์ฐ์ค ์ฐ๋ํ๊ธฐ
์์ ์ค๋ช ์์ ํ๋ก๋ฉํ ์ฐ์ค๋ ๋ฉํธ๋ฆญ์ ์์งํ๊ณ ๋ณด๊ดํ๋ DB๋ผ๊ณ ํ์์ต๋๋ค.
ํ๋ก๋ฉํ ์ฐ์ค๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฉํธ๋ฆญ์ ์์งํ ์ ์๋๋ก ์ฐ๋ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ 2๊ฐ์ง ์์ ์ด ํ์ํฉ๋๋ค.
1. ์ ํ๋ฆฌ์ผ์ด์ ์ค์
ํ๋ก๋ฉํ ์ฐ์ค๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฉํธ๋ฆญ์ ๊ฐ์ ธ๊ฐ ์ ์๋๋ก ์ ํ๋ฆฌ์ผ์ด์ ์์ ํ๋ก๋ฉํ ์ฐ์ค ํฌ๋ฉง์ ๋ง์ถ์ด ๋ฉํธ๋ฆญ ๋ง๋ค๊ธฐ
2. ํ๋ก๋ฉํ ์ฐ์ค ์ค์
ํ๋ก๋ฉํ ์ฐ์ค๊ฐ ์ฐ๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฉํธ๋ฆญ์ ์ฃผ๊ธฐ์ ์ผ๋ก ์์งํ๋๋ก ์ค์
๐ ์ ํ๋ฆฌ์ผ์ด์ ์ค์
ํ๋ก๋ฉํ ์ฐ์ค๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฉํธ๋ฆญ์ ๊ฐ์ ธ๊ฐ๋ ค๋ฉด ํ๋ก๋ฉํ ์ฐ์ค๊ฐ ์ฌ์ฉํ๋ ํฌ๋ฉง์ ๋ง์ถ์ด ๋ฉํธ๋ฆญ์ ๋ง๋ค์ด์ผ ํฉ๋๋ค.
๋คํํ๋ ์ด ๋ถ๋ถ์ ๋ง์ดํฌ๋ก๋ฏธํฐ์์ ํด๊ฒฐํด์ค๋๋ค.
๊ฐ๊ฐ์ ๋ฉํธ๋ฆญ๋ค์ ๋ด๋ถ์์ ๋ง์ดํฌ๋ก๋ฏธํฐ ํ์ค ๋ฐฉ์์ผ๋ก ์ธก์ ๋๊ณ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ด๋ค ๊ตฌํ์ฒด๋ฅผ ์ฌ์ฉํ ์ง ์ง์ ๋ง ํด์ฃผ๋ฉด ๋ฉ๋๋ค.
โ๏ธ build.gradle ์ถ๊ฐ
implementation 'io.micrometer:micrometer-registry-prometheus'
๋ง์ดํฌ๋ก๋ฏธํฐ ํ๋ก๋ฉํ ์ฐ์ค ๊ตฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์คํ๋ง ๋ถํธ์ ์ก์ถ์์ดํฐ๊ฐ ์๋์ผ๋ก ๋ง์ดํฌ๋ก๋ฏธํฐ ํ๋ก๋ฉํ ์ฐ์ค ๊ตฌํ์ฒด๋ฅผ ๋ฑ๋กํด์ ๋์ํ๋๋ก ์ค์ ํด์ค๋๋ค.
์ก์ธ์์ดํฐ์ ํ๋ก๋ฉํ ์ฐ์ค ๋ฉํธ๋ฆญ ์์ง ์๋ํฌ์ธํธ(/actuator/prometheus)๊ฐ ์๋์ผ๋ก ์ถ๊ฐ๋ฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์คํ ์์ผ http://localhost:8080/actuator๋ก ๋ค์ด๊ฐ๋ฉด ๋ค์๊ณผ ๊ฐ์ด prometheus ๊ฐ ์ถ๊ฐ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
๋ค์ด๊ฐ ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ๋ฉด์ ํ์ธํ ์ ์์ต๋๋ค.
# HELP hikaricp_connections_creation_seconds_max Connection creation time
# TYPE hikaricp_connections_creation_seconds_max gauge
hikaricp_connections_creation_seconds_max{pool="HikariPool-1",} 0.0
# HELP hikaricp_connections_creation_seconds Connection creation time
# TYPE hikaricp_connections_creation_seconds summary
hikaricp_connections_creation_seconds_count{pool="HikariPool-1",} 0.0
hikaricp_connections_creation_seconds_sum{pool="HikariPool-1",} 0.0
...
๊ธฐ์กด ์ก์ถ์์ดํฐ์์๋ jvm.info ์ ๊ฐ์ด .์ผ๋ก ๊ตฌ๋ถ๋๋ ๋ฐ๋ฉด, ํ๋ก๋ฉํ ์ฐ์ค๋ . ๋์ _๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ฆ jvm.info๋ jvm_info๊ฐ ๋ฉ๋๋ค.
๋ํ ๊ธฐ์กด ์ก์ถ์์ดํฐ์์๋ ๋ก๊ทธ ๋ฐ์ ํ์๋ฑ๊ณผ ๊ฐ์ด ์๊ฐ ๊ณ์ํด์ ๋์ ๋ ๋ statistics๊ฐ COUNT๋ก ์ค์ ๋ฉ๋๋ค.
(์ด๋ฅผ ์นด์ดํฐ๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.)
ํ๋ก๋ฉํ ์ฐ์ค๋ ์นด์ดํฐ ๋ฉํธ๋ฆญ์ ๋ง์ง๋ง์๋ _total์ ๋ถ์ ๋๋ค.
# HELP logback_events_total Number of log events that were enabled by the effective log level
# TYPE logback_events_total counter
logback_events_total{level="warn",} 0.0
logback_events_total{level="debug",} 0.0
logback_events_total{level="error",} 0.0
logback_events_total{level="trace",} 0.0
logback_events_total{level="info",} 5.0
๐ ํ๋ก๋ฉํ ์ฐ์ค ์ค์
์ด์ ํ๋ก๋ฉํ ์ฐ์ค๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ /actuator/prometheus๋ฅผ ํธ์ถํด์ ๋ฉํธ๋ฆญ์ ์ฃผ๊ธฐ์ ์ผ๋ก ์์งํ๋๋ก ์ค์ ํด๋ณด๊ฒ ์ต๋๋ค.
ํ๋ก๋ฉํ ์ฐ์ค ํด๋์ ์๋ prometheus.yml ํ์ผ์ ์์ ํ๊ฒ ์ต๋๋ค.
๊ธฐ์กด promethues.yml ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. (๊ฐ๋จํ ๋ณด๊ธฐ ์ํด ์ฃผ์์ ์ ๊ฑฐํ์์ต๋๋ค.)
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
rule_files:
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
์ด์ scrape_configs์ ๋ค์ ๋ถ๋ถ์ ์ถ๊ฐํด์ค๋๋ค.
- job_name: "spring-actuator"
metrics_path: '/actuator/prometheus'
scrape_interval: 1s
static_configs:
- targets: [ 'localhost:8080' ]
์ ์ฒด ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
rule_files:
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
- job_name: "spring-actuator" # ์๋ฌด๊ฑฐ๋ ๊ฐ๋ฅ
metrics_path: '/actuator/prometheus'
scrape_interval: 1s
static_configs:
- targets: [ 'localhost:8080' ]
- job_name: ์์งํ๋ ์ด๋ฆ์ ๋๋ค. ์์๋ก ์ค์ ๊ฐ๋ฅํฉ๋๋ค.
- metrics_path: ์์งํ ๊ฒฝ๋ก๋ฅผ ์ง์ ํฉ๋๋ค.
- scrape_interval: ์์งํ ์ฃผ๊ธฐ๋ฅผ ์ค์ ํฉ๋๋ค.
- targets: ์์งํ ์๋ฒ์ IP, PORT๋ฅผ ์ง์ ํฉ๋๋ค
์ด๋ ๊ฒ ์ค์ ํ๋ฉด ํ๋ก๋ฉํ ์ฐ์ค๋ ๋ค์ ๊ฒฝ๋ก๋ฅผ 1์ด์ ํ๋ฒ์ฉ ํธ์ถํด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฉํธ๋ฆญ๋ค์ ์์งํฉ๋๋ค.
http://localhost:8080/actuator/prometheus
์ฌ๊ธฐ์๋ ์์ ๋ฅผ ๋น ๋ฅด๊ฒ ํ์ธํ๊ธฐ ์ํด scrape_interval(์์ง ์ฃผ๊ธฐ)์ 1s๋ก ์ค์ ํ์ง๋ง, ์์ง ์ฃผ๊ธฐ์ ๊ธฐ๋ณธ ๊ฐ์ 1m ์ ๋๋ค.
์์ง ์ฃผ๊ธฐ๊ฐ ๋๋ฌด ์งง์ผ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ์ํฅ์ ์ค ์ ์์ผ๋ฏ๋ก ์ด์์์๋ 10s ~ 1m ์ ๋๋ฅผ ๊ถ์ฅํฉ๋๋ค.
(๋ฌผ๋ก ์์คํ ์ํฉ์ ๋ฐ๋ผ์ ๋ค๋ฆ ๋๋ค.)
์ค์ ์ด ๋๋ฌ์ผ๋ฉด ํ๋ก๋ฉํ ์ฐ์ค ์๋ฒ๋ฅผ ์ข ๋ฃํ๊ณ ๋ค์ ์คํํฉ๋๋ค.
์ดํ prometheus -> status -> configuration์ผ๋ก ์ ์ํฉ๋๋ค.
์๋์ ๊ฐ์ด ์ค์ ์ด ์ ๋๋ก ๋ค์ด์ ์๋ ๊ฒ์ ํ์ธํฉ๋๋ค.
status -> Targets๋ฅผ ๋ค์ด๊ฐ๋ณด๋ฉด ์ ํฌ๊ฐ ์ค์ ํ spring-actuator๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
prometheus๋ ํ๋ก๋ฉํ ์ฐ์ค ์์ฒด์์ ์ ๊ณตํ๋ ๋ฉํธ๋ฆญ ์ ๋ณด์ ๋๋ค. (ํ๋ก๋ฉํ ์ฐ์ค๊ฐ ํ๋ก๋ฉํ ์ฐ์ค ์์ ์ ๋ฉํธ๋ฆญ์ ํ์ธํ๋ ๊ฒ์ ๋๋ค.)
spring-actuator: ์ ํฌ๊ฐ ์ฐ๋ํ ์ ํ๋ฆฌ์ผ์ด์ ๋ฉํธ๋ฆญ ์ ๋ณด์ ๋๋ค.
State๊ฐ UP์ผ๋ก ๋์ด ์์ผ๋ฉด ์ ์, DOWN์ผ๋ก ๋์ด ์์ผ๋ฉด ์ฐ๋์ด ์ ๋ ๊ฒ์ ๋๋ค.
๐ง ํ๋ก๋ฉํ ์ฐ์ค ๊ธฐ๋ณธ ๊ธฐ๋ฅ
ํ๋ก๋ฉํ ์ฐ์ค ๊ฒ์์ฐฝ์ 'http_server_requests_seconds_count'๋ฅผ ์ ๋ ฅํ๊ณ ์คํํด ๋ณด๊ฒ ์ต๋๋ค.
ํ๊ทธ์ ๋ ์ด๋ธ:
error, exception, instance, job, method, outcome, status, uri๋ ๊ฐ๊ฐ์ ๋ฉํธ๋ฆญ ์ ๋ณด๋ฅผ ๊ตฌ๋ถํด์ ์ฌ์ฉํ๊ธฐ ์ํ ํ๊ทธ์ ๋๋ค.
๋ง์ดํฌ๋ก๋ฏธํฐ์์๋ ์ด๊ฒ์ ํ๊ทธ(Tag)๋ผ๊ณ ํ๊ณ , ํ๋ก๋ฉํ ์ฐ์ค์์๋ ๋ ์ด๋ธ(Label)์ด๋ผ ํฉ๋๋ค.
(์์ผ๋ก๋ ์ด ๋์ ๊ตฌ๋ถํ์ง ์๊ณ ์ฌ์ฉํ๊ฒ ์ต๋๋ค.)
์ซ์: ๋ง์ง๋ง์ ๋ณด๋ฉด 1068์ด๋ผ๋ ์ซ์๊ฐ ๋ณด์ ๋๋ค. ์ด ์ซ์๊ฐ ๋ฐ๋ก ๋ฉํธ๋ฆญ์ ๊ฐ์ ๋๋ค.
๐ Table, Graph
Table๊ณผ Graph๋ผ๋ ํญ์ด ์๋ ๊ฒ์ ํ์ธํ ์ ์๋๋ฐ์,
Table์์๋ Evaluation time์ ์์ ํด์ ๊ณผ๊ฑฐ ์๊ฐ์ ๋ฉํธ๋ฆญ์ ์กฐํํ ์ ์์ต๋๋ค.
Graph๋ ๋ฉํธ๋ฆญ์ ๊ทธ๋ํ๋ก ์กฐํํ๋ ๊ธฐ๋ฅ์ ๋๋ค.
๐ ํํฐ
๋ ์ด๋ธ์ ๊ธฐ์ค์ผ๋ก ํํฐ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํํฐ๋ ์ค๊ดํธ('{}') ๋ฌธ๋ฒ์ ์ฌ์ฉํฉ๋๋ค.
๐ฑ ๋ ์ด๋ธ ์ผ์น ์ฐ์ฐ์
'=' : ์ ๊ณต๋ ๋ฌธ์์ด๊ณผ ์ ํํ ๋์ผํ ๋ ์ด๋ธ ์ ํ
'!=' : ์ ๊ณต๋ ๋ฌธ์์ด๊ณผ ๊ฐ์ง ์์ ๋ ์ด๋ธ ์ ํน
'=~' : ์ ๊ณต๋ ๋ฌธ์์ด๊ณผ ์ ๊ท์ ์ผ์นํ๋ ๋ ์ด๋ธ ์ ํ
'!~' : ์ ๊ณต๋ ๋ฌธ์์ด๊ณผ ์ ๊ท์ ์ผ์นํ์ง ์๋ ๋ ์ด๋ธ ์ ํ
์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
uri๊ฐ /log์ธ ์์ฒญ๋ง ํ์ธํ๊ณ ์ถ๋ค๋ฉด {uri="/log"} ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
method๊ฐ GET ํน์ POST์ธ ์์ฒญ์ {method=~" GET|POST"} ๋ฅผ ์ ๋ ฅํ๋ ์์ ๋๋ค.
์ฌ๋ฌ ์กฐ๊ฑด์ ์ฐ๊ฒฐํ ๋์๋, ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๐ ์ฐ์ฐ์ ์ฟผ๋ฆฌ์ ํจ์
ํ๋ก๋ฉํ ์ฐ์ค๋ ๋ค์๊ณผ ๊ฐ์ ์ฐ์ฐ์๋ฅผ ์ง์ํฉ๋๋ค.
- + : ๋ง์
- - : ๋บ์
- * : ๊ณฑ์
- / : ๋๋์
- % : ๋๋จธ์ง
- ^ : ์น์/์ง์
sum
๊ฐ์ ํฉ๊ณ๋ฅผ ๊ตฌํ๋๋ฐ ์ฌ์ฉํฉ๋๋ค.
- sum(http_server_requests_seconds_count)
sum by
๊ทธ๋ฃนํ๋ฅผ ์ํฌ ์ ์์ต๋๋ค.
- sum by(method, status)(http_server_requests_seconds_count)
count
๋ฉํธ๋ฆญ ์์ฒด์ ๊ฐ์๋ฅผ ์ ๋๋ค.
- count(http_server_requests_seconds_count)
tokp
์์ n๊ฐ์ ๋ฉํธ๋ฆญ์ ์กฐํํฉ๋๋ค.
- topk(3, http_server_requests_seconds_count) -> ์์ 3๊ฐ ๋ฉํธ๋ฆญ ์กฐํ
์คํ์ ์์ ์
ํ์ฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ํน์ ๊ณผ๊ฑฐ ์์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํฉ๋๋ค.
- http_server_requests_seconds_count offset 10m
๋ฒ์ ๋ฒกํฐ ์ ํ๊ธฐ
๋ง์ง๋ง์ [1m], [60s]์ ๊ฐ์ด ํํํฉ๋๋ค.
์ด๋ ๊ฒ ์ค์ ํ๋ฉด ์ต๊ทผ 1๋ถ ๋์์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
์ฐธ๊ณ ๋ก ๋ฒ์ ๋ฒกํฐ ์ ํ๊ธฐ๋ ์ฐจํธ์ ๋ฐ๋ก ํํํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ๋ก๋ ํ์ธํ ์ ์์ต๋๋ค.
๋ฒ์ ๋ฒกํฐ ์ ํ์ ๊ฒฐ๊ณผ๋ฅผ ์ฐจํธ์ ํํํ๊ธฐ ์ํด์๋ ์ฝ๊ฐ์ ๊ฐ๊ณต์ด ํ์ํ๋ฐ, ์ดํ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
- http_server_requests_seconds_count[1m]
๐ง ๊ฒ์ด์ง์ ์นด์ดํฐ
๋ฉํธ๋ฆญ์ ํฌ๊ฒ ๊ฒ์ด์ง์ ์นด์ดํฐ๋ก ๋ถ๋ฅํ ์ ์์ต๋๋ค.
๊ฒ์ด์ง๋ ์์๋ก ์ค๋ฅด๋ด๋ฆด ์ ์๋ ๊ฐ์ ๋๋ค.
์๋ฅผ ๋ค์ด CPU ์ฌ์ฉํฅ, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋, ์ฌ์ฉ์ค์ธ ์ปค๋ฅ์ ์ ๋ฑ์ด ์์ต๋๋ค.
์นด์ดํฐ๋ ๋จ์ํ๊ฒ ์ฆ๊ฐํ๋ ๋จ์ผ ๋์ ๊ฐ์ ๋๋ค.
์๋ฅผ ๋ค์ด HTTP ์์ฒญ ์, ๋ก๊ทธ ๋ฐ์ ์ ๋ฑ์ด ์์ต๋๋ค.
๊ฒ์ด์ง๋ ์ค๋ฅด๋ฝ ๋ด๋ฆฌ๋ฝ ํ๋ ๊ฐ์ด๊ณ , ์นด์ดํฐ๋ ํน์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ ๋ง๋ค ๊ทธ ์๋ฅผ ๊ณ์ ๋์ ํ๋ ๊ฐ์ ๋๋ค.
๐ ๊ฒ์ด์ง(Gauge)
๊ฒ์ด์ง๋ ์ค๋ฅด๋ฝ ๋ด๋ฆฌ๋ฝ ํ๋ ๊ฐ์ด๋ฉฐ, ํ์ฌ ์ํ๋ฅผ ๊ทธ๋๋ก ์ถ๋ ฅํ๋ฉด ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด ๋ํ์ ์ธ ๊ฒ์ด์ง์ธ CPU ์ฌ์ฉ๋(system_cpu_usage)์ ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
CPU ์ฌ์ฉ๋์ ํ์ฌ ์ํ๋ฅผ ๊ณ์ ์ธก์ ํ๊ณ ๊ทธ ๊ฐ์ ๊ทธ๋๋ก ๊ทธ๋ํ์ ์ถ๋ ฅํ๋ฉด ๊ณผ๊ฑฐ๋ถํฐ ์ง๊ธ๊น์ง์ CPU ์ฌ์ฉ๋์ ํ์ธํ ์ ์์ต๋๋ค.
๊ฒ์ด์ง์ ๊ฐ์ฅ ๋จ์ํ๊ณ ์ฌ์ฉํ๊ธฐ ์ฌ์ด ๋ฉํธ๋ฆญ์ ๋๋ค. ํฌ๊ฒ ๊ณ ๋ฏผํ์ง ์๊ณ ์๋ ๊ทธ๋๋ก๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
๐ ์นด์ดํฐ(Counter)
์นด์ดํฐ๋ ๋จ์ํ๊ฒ ์ฆ๊ฐํ๋ ๋จ์ผ ๋์ ๊ฐ์ ๋๋ค.
์๋ฅผ ๋ค์ด ๊ณ ๊ฐ์ HTTP ์์ฒญ ์๋ฅผ ๋ ์ฌ๋ ค ๋ณด๋ฉด ๋ฐ๋ก ์ดํดํ ์ ์์ต๋๋ค.
HTTP ์์ฒญ ๋ฉํธ๋ฆญ์ ๊ทธ๋ํ๋ก ํ์ธํ๋ฉด ์์ ๊ฐ์ต๋๋ค.
์นด์ดํฐ๋ ๊ณ์ ๋์ ํด์ ์ฆ๊ฐํ๋ ๊ฐ์ด๋ฏ๋ก ๋ฐ๋ผ์ ๊ณ์ ์ฆ๊ฐํ๋ ๊ทธ๋ํ๋ง ๋ณด๊ฒ ๋ ๊ฒ์ ๋๋ค.
์ด๋ ๊ฒ ์ฆ๊ฐ๋ง ํ๋ ๊ทธ๋ํ์์๋ ํน์ ์๊ฐ์ ์ผ๋ง๋ ๊ณ ๊ฐ์ ์์ฒญ์ด ๋ค์ด์๋์ง ํ๋์ ํ์ธํ๊ธฐ ๋งค์ฐ ์ด๋ ต์ต๋๋ค.
์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด increase(), rate()์ ๊ฐ์ ํจ์๋ฅผ ์ง์ํฉ๋๋ค.
๐ฑ increase()
increase()๋ฅผ ํตํด ์ํด์ ๋ฐ์ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
์ง์ ํ ์๊ฐ ๋จ์๋ณ๋ก ์ฆ๊ฐ๋ฅผ ํ์ธํ ์ ์๋๋ฐ์, ๋ง์ง๋ง์ [์๊ฐ]์ ์ฌ์ฉํด์ ๋ฒ์ ๋ฒกํฐ๋ฅผ ์ ํํด์ผ ํฉ๋๋ค.
increase(http_server_requests_seconds_count{uri="/log"}[1m])
๐ฑ rate()
๋ฒ์ ๋ฒกํฐ์์ ์ด๋น ํ๊ท ์ฆ๊ฐ์จ์ ๊ณ์ฐํฉ๋๋ค.
- increase() ๊ฐ ์ซ์๋ฅผ ์ง์ ์นด์ดํธํ๋ค๋ฉด, rate()๋ ์ฌ๊ธฐ์ ์ด๋น ํ๊ท ์ ๋๋์ด์ ๊ณ์ฐํฉ๋๋ค.
- increase(data[1m])์์ [1m]์ด๋ผ๊ณ ํ๋ฉด 60์ด๊ฐ ๊ธฐ์ค์ด ๋๋ฏ๋ก 60์ ๋๋ ์์ ๋๋ค.
- increase(data[2m])์์ [2m]์ด๋ผ๊ณ ํ๋ฉด 120์ด๊ฐ ๊ธฐ์ค์ด ๋๋ฏ๋ก 120์ ๋๋ ์์ ๋๋ค.
๊ฐ๋จํ๊ฒ ์ด๋น ์ผ๋ง๋ ์ฆ๊ฐํ๋์ง ๋ํ๋ด๋ ์งํ์ ๋๋ค.
๐ ์ ๋ฆฌ
๊ฐ์ด ๊ณ์ ๋ณํ๋ ๊ฒ์ด์ง๋ ํ์ฌ ๊ฐ์ ๊ทธ๋๋ก ๊ทธ๋ํ๋ก ํํํ๋ฉด ๋๋ ๋ฐ๋ฉด,
๊ฐ์ด ๋จ์กฐ๋กญ๊ฒ ์ฆ๊ฐํ๋ ์นด์ดํฐ๋ increase(), rate() ๋ฑ์ ์ฌ์ฉํด์ ํํํด์ผ ํฉ๋๋ค.
์ด๋ฅผ ํตํด ์นด์ดํฐ์์ ํน์ ์๊ฐ์ ์ผ๋ง๋ ๊ฐ์ด ์ฆ๊ฐํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
(์๋ฅผ ๋ค์ด ํน์ ์๊ฐ์ ๊ณ ๊ฐ์ ์์ฒญ์ด ์ผ๋ง๋ ๋ค์ด์๋์ง ๋ฑ)
๋ ์์ธํ ๋ด์ฉ์ ๊ณต์ ๋ฉ๋ด์ผ์ ์ฐธ๊ณ ํด์ฃผ์ธ์
๊ธฐ๋ณธ๊ธฐ๋ฅ: https://prometheus.io/docs/prometheus/latest/querying/basics/
์ฐ์ฐ์: https://prometheus.io/docs/prometheus/latest/querying/operators/
ํจ์: https://prometheus.io/docs/prometheus/latest/querying/functions/
ํ๋ก๋ฉํ ์ฐ์ค๋ก๋ ํ๋์ ๋ค์ด์ค๋ ๋์๋ณด๋๋ฅผ ๋ง๋ค๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค.
์ด ๋ถ๋ถ์ ๊ทธ๋ผํ๋๋ฅผ ํตํด ํด๊ฒฐํ ์ ์์ต๋๋ค.
๐ Reference
[์คํ๋ง ๋ถํธ - ํต์ฌ ์๋ฆฌ์ ํ์ฉ. ์น์ 9] - ๊น์ํ๋
'๐๏ธ Spring > ๋ชจ๋ํฐ๋ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๊ทธ๋ผํ๋] - [2] ๊ณต์ ๋์๋ณด๋ ์ฌ์ฉํ๊ธฐ (0) | 2023.06.11 |
---|---|
[๊ทธ๋ผํ๋] - [1] ๊ทธ๋ผํ๋(Grafana) ๋์๋ณด๋ ์์ฑ (2) | 2023.06.10 |
[์ก์ถ์์ดํฐ] - ๋ง์ดํฌ๋ก๋ฏธํฐ(Micrometer)์ ๋ฉํธ๋ฆญ(Metric) (0) | 2023.05.20 |
[์ก์ถ์์ดํฐ] - ์ก์ถ์์ดํฐ(Actuator) ์์ํ๊ธฐ (0) | 2023.05.09 |