์Šคํ”„๋ง & ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค (์„ค์น˜, ์„ค์ •, ๊ธฐ๋ณธ ๊ธฐ๋Šฅ)

2023. 5. 18. 10:07ใ†์ธํ”„๋Ÿฐ/์Šคํ”„๋ง ๋ถ€ํŠธ - ํ•ต์‹ฌ ์›๋ฆฌ์™€ ํ™œ์šฉ

728x90

 

์Šคํ”„๋ง ๋ชจ๋‹ˆํ„ฐ๋ง (์•ก์ธ„์—์ดํ„ฐ, ๋งˆ์ดํฌ๋กœ๋ฏธํ„ฐ, ๋ฉ”ํŠธ๋ฆญ, ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค, ๊ทธ๋ผํŒŒ๋‚˜) (tistory.com)

 

์Šคํ”„๋ง ๋ชจ๋‹ˆํ„ฐ๋ง (์•ก์ธ„์—์ดํ„ฐ, ๋งˆ์ดํฌ๋กœ๋ฏธํ„ฐ, ๋ฉ”ํŠธ๋ฆญ, ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค, ๊ทธ๋ผํŒŒ๋‚˜)

์Šคํ”„๋ง Actuator Endpoint (health, info, logger, httpexchanges) (tistory.com) ์Šคํ”„๋ง Actuator Endpoint (health, info, logger, httpexchanges) ์Šคํ”„๋ง๋ถ€ํŠธ Actuator (tistory.com) ์Šคํ”„๋ง๋ถ€ํŠธ Actuator 1๏ธโƒฃ Spring Actuator ์‹ค๋ฌด์—์„œ๋Š” ๊ฐœ๋ฐœ

hyejin.tistory.com

์ €๋ฒˆ ๊ธ€์—์„œ ์Šคํ”„๋ง ๋ถ€ํŠธ์—์„œ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ๋•Œ ์ง€์›ํ•˜๋Š” ํˆด์ธ ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค์™€ ๊ทธ๋ผํŒŒ๋‚˜์— ๋Œ€ํ•œ ๊ฐœ๋…? ์ •๋„ ์•Œ์•„๋ดค๋‹ค. 

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ๋จผ์ € ์„ค์น˜ํ•˜๊ณ  ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณผ ์˜ˆ์ •์ด๋‹ค. 

 

 

 

 

1๏ธโƒฃ ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ์„ค์น˜ 

๋จผ์ € ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์„ค์น˜๋ถ€ํ„ฐ ์ง„ํ–‰ํ•ด์•ผํ•œ๋‹ค. (๋‹น์—ฐํ•จ) 

https://prometheus.io/download/

 

Download | Prometheus

An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.

prometheus.io

์œ„์— ๋งํฌ๋ฅผ ํƒ€๊ณ  ๋“ค์–ด๊ฐ€์„œ 

๊ฐ์ž์˜ ์šด์˜ํ™˜๊ฒฝ์— ๋งž๋Š” ํŒŒ์ผ์„ ์„ ํƒํ•ด ๋‹ค์šด๋ฐ›๊ณ  ์••์ถ• ํ•ด์ œํ•ด์ฃผ๋ฉด ๋œ๋‹ค. (mac์€ darwin ์ด๋ผ๊ณ  ์ ํžŒ ์••์ถ•ํŒŒ์ผ ๋‹ค์šด) 

 

์••์ถ• ํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›์•„ ํ•ด์ œํ•œ ๋‹ค์Œ prometheus.exe ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋˜๋Š”๋ฐ 

์ฒ˜์Œ์—๋Š” 

์ด๋Ÿฐ ํ™”๋ฉด์„ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ ์—ฌ๊ธฐ์„œ '์ถ”๊ฐ€ ์ •๋ณด' ๋ฅผ ํด๋ฆญํ•œ ๋‹ค์Œ์— '์‹คํ–‰' ๋ฒ„ํŠผ ํด๋ฆญํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

(์•„์ง ๋งฅ๋ถ์—์„œ๋Š” ์„ค์น˜๋ฅผ ํ•ด๋ณด์ง€ ์•Š์•„์„œ ์„ค์น˜ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์ •๋ณด ์ถ”๊ฐ€ ์˜ˆ์ •) 

 

์‹คํ–‰ํ•œ ๋‹ค์Œ localhost:9090 (๊ธฐ๋ณธ ํฌํŠธ 9090) ํ•ด์„œ ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ์‹คํ–‰ ํ™”๋ฉด์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

 

2๏ธโƒฃ ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ์„ค์ • 

ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค๋Š” ๋ฉ”ํŠธ๋ฆญ์„ ์ˆ˜์ง‘ํ•˜๊ณ  ๋ณด๊ด€ํ•˜๋Š” DB์ด๋‹ค. 

ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค๋ฅผ ์Šคํ”„๋ง๊ณผ ์—ฐ๋™ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” 2๊ฐ€์ง€ ์„ค์ •์„ ํ•ด์ค˜์•ผ ํ•œ๋‹ค. 

 

- ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ • : ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฉ”ํŠธ๋ฆญ์„ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ํฌ๋งท์— ๋งž์ถ”์–ด ๋ฉ”ํŠธ๋ฆญ ๋งŒ๋“ค๊ธฐ 

- ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ์„ค์ • : ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค๊ฐ€ ์šฐ๋ฆฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฉ”ํŠธ๋ฆญ์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ˆ˜์ง‘ํ•˜๋„๋ก ์„ค์ • 

 

 

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ • 

: ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฉ”ํŠธ๋ฆญ์„ ๊ฐ€์ ธ๊ฐ€๋ ค๋ฉด ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํฌ๋งท์— ๋งž์ถ”์–ด ๋ฉ”ํŠธ๋ฆญ์„ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. 

์Šคํ”„๋ง์—์„œ ์•ก์ธ„์—์ดํ„ฐ๋ฅผ ํ†ตํ•ด ๋ฉ”ํŠธ๋ฆญ์„ ๋ณด๋ฉด (/actuator/metrics) json ํ˜•ํƒœ๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

๊ทผ๋ฐ ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค๋Š” json ํ˜•ํƒœ๋ฅผ ์•Œ์•„๋ณผ ์ˆ˜ ์—†๊ณ , ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํฌ๋งท๋งŒ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

-> ์ด๋Ÿฐ ๋ฌธ์ œ๋Š” ๋งˆ์ดํฌ๋กœ๋ฏธํ„ฐ๊ฐ€ ํ•ด๊ฒฐํ•ด์ค€๋‹ค. 

 

๋งˆ์ดํฌ๋กœ๋ฏธํ„ฐ๋Š” ํฌ๋งท์— ๋Œ€ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์ฃผ๋Š”๋ฐ ์Šคํ”„๋ง ์•ก์ธ„์—์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋งˆ์ดํฌ๋กœ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , 

๊ฐ๊ฐ์˜ ๋ฉ”ํŠธ๋ฆญ๋“ค์€ ๋‚ด๋ถ€์—์„œ ๋งˆ์ดํฌ๋กœ๋ฏธํ„ฐ ํ‘œ์ค€ ๋ฐฉ์‹์œผ๋กœ ์ธก์ •๋˜๊ณ  ์žˆ๋‹ค. 

๋”ฐ๋ผ์„œ ๊ทธ๋ƒฅ ์–ด๋–ค ๊ตฌํ˜„์ฒด๋ฅผ ์‚ฌ์šฉํ• ์ง€๋งŒ ๊ฒฐ์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

 

 

 build.gradle

implementation 'io.micrometer:micrometer-registry-prometheus'

build.gradle์— ๋งˆ์ดํฌ๋กœ๋ฏธํ„ฐ ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ๊ตฌํ˜„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ์Šคํ”„๋ง ๋ถ€ํŠธ์™€ ์•ก์ธ„์—์ดํ„ฐ๊ฐ€ ์ž๋™์œผ๋กœ ๋งˆ์ดํฌ๋กœ๋ฏธํ„ฐ ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ๊ตฌํ˜„์ฒด๋ฅผ ๋“ฑ๋กํ•ด์„œ ๋™์ž‘ํ•˜๋„๋ก ์„ค์ •ํ•ด์ค€๋‹ค. 

 

gradle refresh ํ•ด์ค€ ๋‹ค์Œ์— ๋‹ค์‹œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ํ•œ ๋‹ค์Œ, localhost:8080/actuator ๋ฅผ ๋ณด๋ฉด 

ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ์•ค๋“œํฌ์ธํŠธ๊ฐ€ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

http://localhost:8080/actuator/prometheus

์ด๋Ÿฐ์‹์œผ๋กœ ๋ชจ๋“  ๋ฉ”ํŠธ๋ฆญ๋“ค์ด ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ํฌ๋งท์œผ๋กœ ๋˜์–ด์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜  ์žˆ๋‹ค. 

 

 

* ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ํฌ๋งท

์•ก์ธ„์—์ดํ„ฐ ๋ฉ”ํŠธ๋ฆญ
ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค

 

์ด๋ ‡๊ฒŒ ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ํฌ๋งท์„ ๋ณด๋ฉด jvm_info ๋กœ . ๋Œ€์‹ ์— _ ํฌ๋งท์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— jvm.info ๊ฐ€ jvm_info ๋กœ ๋ณ€ํ™˜๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

๊ทธ๋ฆฌ๊ณ  http.server.requests๊ฐ€ ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ํฌ๋งท์—์„œ๋Š”  http_server_requests_seconds_count(์š”์ฒญ ์ˆ˜), http_server_request_seconds_sum(์‹œ๊ฐ„ ํ•ฉ, ์š”์ฒญ์ˆ˜์˜ ์‹œ๊ฐ„์„ ํ•ฉํ•จ), http_server_request_seconds_max(์ตœ๋Œ€ ์‹œ๊ฐ„, ์š”์ฒญ ์ค‘ ๊ฐ€์žฅ ์˜ค๋ž˜ ๊ฑธ๋ฆฐ ์š”์ฒญ ์ˆ˜ ) ๋กœ 3๊ฐ€์ง€๋กœ ๋ถ„๋ฆฌ๋œ๋‹ค. 

 

 

 

ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ์„ค์ •

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •์„ ํ•œ ๋‹ค์Œ์—๋Š” ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค๊ฐ€ ์ด ๋ฉ”ํŠธ๋ฆญ์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค. 

 

prometheus.yml

ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ์‹คํ–‰ ํด๋”์— ๋ณด๋ฉด prometheus.yml ์ด ์žˆ๋Š”๋ฐ ์—ฌ๊ธฐ์— 

# ์ถ”๊ฐ€
  - job_name: "spring-actuator"
    metrics_path: '/actuator/prometheus'
    scrape_interval: 1s
    static_configs:
      - targets: ['localhost:8080']

์ด ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. (์ด๋•Œ ๋„์–ด์“ฐ๊ธฐ ์ฃผ์˜..!!!!) 

 

ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ /actuator/prometheus ๋ฅผ ํ˜ธ์ถœํ•ด์„œ ๋ฉ”ํŠธ๋ฆญ์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ˆ˜์ง‘ํ•ด ๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•˜๋Š”๊ฑด๋ฐ 

job_name : ์ˆ˜์ง‘ํ•˜๋Š” ์ด๋ฆ„์œผ๋กœ, ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•˜๋Š” ์ด๋ฆ„์ด๋‹ค. 

metrics_path : ์ˆ˜์ง‘ํ•  ๊ฒฝ๋กœ๋ฅผ ์ง€์ • 

scrape_interval : ์ˆ˜์ง‘ํ•  ์ฃผ๊ธฐ๋ฅผ ์ง€์ • 

targets : ์ˆ˜์ง‘ํ•  ์„œ๋ฒ„์˜ IP, PORT ์ง€์ • 

 

์ด๋ ‡๊ฒŒ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค๊ฐ€ http://localhost:8080/actuator/promethous ๋ฅผ 1์ดˆ์— ํ•œ๋ฒˆ์”ฉ ํ˜ธ์ถœํ•ด์„œ ๋ฉ”ํŠธ๋ฆญ์„ ์ˆ˜์ง‘ํ•ด์˜จ๋‹ค. 

 

โ— ์ฃผ์˜ 

scrape_interval ์„ ์ง€๊ธˆ์€ ์˜ˆ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ 1s ์ฆ‰, 1์ดˆ๋กœ ์„ค์ •ํ•ด ํ™•์ธํ•˜์ง€๋งŒ, ์ˆ˜์ง‘ ์ฃผ๊ธฐ์˜ ๊ธฐ๋ณธ์€ 1m ์ด๋‹ค. 

์ˆ˜์ง‘ ์ฃผ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์งง๊ฒŒ ์„ค์ •๋˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์šด์˜์—์„œ๋Š” 10s ~ 1m ์ •๋„๋ฅผ ๊ถŒ์žฅํ•œ๋‹ค. ( ์ด๊ฒƒ๋„ ๊ถŒ์žฅ์ด๋‹ˆ๊นŒ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ์„ ๊ณ ๋ คํ•ด์„œ ์„ค์ •ํ•˜๊ธฐ) 

 

yml ์„ค์ •์„ ๋๋‚ธ ๋‹ค์Œ์— ์ €์žฅํ•˜๊ณ  ๋‹ค์‹œ ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค. 

 

localhost:9090 ์œผ๋กœ ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ํ™”๋ฉด์—์„œ status -> targets ์„ ๋ณด๋ฉด ์—ฐ๋™๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

http://localhost:9090/metrics 

-> ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ์ž์ฒด์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฉ”ํŠธ๋ฆญ์œผ๋กœ ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค๊ฐ€ ์ž์‹ ์˜ ๋ฉ”ํŠธ๋ฆญ์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค. 

 

http://localhost:9090/spring-actuator

-> ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฉ”ํŠธ๋ฆญ ์ •๋ณด 

 

-> State๊ฐ€ up์ด๋ฉด ์ •์ƒ์ด๊ณ , down ์ด๋ฉด ์—ฐ๋™์ด ์•ˆ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. 

 

 

ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ๋ฐ์ดํ„ฐ ์กฐํšŒ๋Š” ์ € ๊ฒ€์ƒ‰์ฐฝ์— ๋ฉ”ํŠธ๋ฆญ์„ ๊ฒ€์ƒ‰ํ•ด์„œ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค. 

3๏ธโƒฃ ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ๊ธฐ๋ณธ ๊ธฐ๋Šฅ 

 

* ๊ธฐ๋ณธ ์กฐํšŒ 

์œ„์— ๊ธฐ๋ณธ ํ™”๋ฉด์—์„œ http_server_requests_seconds_count ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์‹คํ–‰ํ•ด๋ณด๋ฉด 

 

์ˆ˜์ง‘ํ•˜๊ณ  ์žˆ๋Š” ๋ฉ”ํŠธ๋ฆญ ์ •๋ณด๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ตต์€ ๊ธ€์”จ๋กœ error, exceptioni, instance, job, method, outcome, status, uri๋Š” ๊ฐ๊ฐ ๋ฉ”ํŠธ๋ฆญ ์ •๋ณด๋ฅผ ๊ตฌ๋ถ„ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ํƒœ๊ทธ๋กœ 

๋งˆ์ดํฌ๋กœ๋ฏธํ„ฐ์—์„œ๋Š” ํƒœ๊ทธTag, ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค์—์„œ๋Š” ๋ ˆ์ด๋ธ”Label ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  ๋งจ ์˜ค๋ฅธ์ชฝ์— ์ˆซ์ž๊ฐ€ ๋ฉ”ํŠธ๋ฆญ ๊ฐ’์ด๋‹ค. 

 

๊ทธ๋ฆฌ๊ณ  Graph ํƒญ์„ ํด๋ฆญํ•˜๋ฉด 

๋ฉ”ํŠธ๋ฆญ ๊ฐ’์„ ๊ทธ๋ž˜ํ”„๋กœ ์กฐํšŒํ•  ์ˆ˜ ๋„ ์žˆ๋‹ค. 

 

 

* ํ•„ํ„ฐ

์กฐํšŒํ•  ๋•Œ ๋ ˆ์ด๋ธ”(ํƒœ๊ทธ)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค. 

์ด๋•Œ ํ•„ํ„ฐ๋Š” {} ์ค‘๊ด„ํ˜ธ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค. 

 

= ์ œ๊ณต๋œ ๋ฌธ์ž์—ด๊ณผ ์ •ํ™•ํžˆ ์ผ์น˜ํ•˜๋Š” ๋ ˆ์ด๋ธ” ์„ ํƒ

!= ์ œ๊ณต๋œ ๋ฌธ์ž์—ด๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๋ ˆ์ด๋ธ” ์„ ํƒ

=~ ์ œ๊ณต๋œ ๋ฌธ์ž์—ด๊ณผ ์ •๊ทœ์‹ ์ผ์น˜ํ•˜๋Š” ๋ ˆ์ด๋ธ” ์„ ํƒ

!~ ์ œ๊ณต๋œ ๋ฌธ์ž์—ด๊ณผ ์ •๊ทœ์‹ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๋ ˆ์ด๋ธ” ์„ ํƒ

 

 

http_server_requests_seconds_count{uri="/log", method="GET"}

uri=/log, method= GET ์ธ ์กฐ๊ฑด์œผ๋กœ ์กฐํšŒ 

 

 

http_server_requests_seconds_count{uri!="/actuator/prometheus"}

uri != ๋ฅผ ์‚ฌ์šฉํ•ด์„œ /actuator/prometheus ๋ฅผ ์ œ์™ธํ•œ ์กฐ๊ฑด์œผ๋กœ ์กฐํšŒํ•œ๋‹ค. 

 

 

http_server_requests_seconds_count{method=~"GET|POST"}

 

http_server_requests_seconds_count{uri!~"/actuator.*"}

* ์—ฐ์‚ฐ์ž ์ฟผ๋ฆฌ์™€ ํ•จ์ˆ˜ 

+ (๋ง์…ˆ), - (๋บ„์…ˆ), * (๊ณฑ์…ˆ)  , / (๋ถ„ํ• ) , % (๋ชจ๋“ˆ๋กœ) , ^ (์Šน์ˆ˜/์ง€์ˆ˜) ์—ฐ์‚ฐ์ž ์ง€์› 

 

sum : ํ•ฉ๊ณ„ 

 sum(http_server_requests_seconds_count)

sum by(method, status) (http_server_request_seconds_count)

 

count : ๋ฉ”ํŠธ๋ฆญ ์ž์ฒด ์ˆ˜ ์นด์šดํŠธ 

count(http_server_requests_seconds_count)

 

 

topk : ์ƒ์œ„ 3๊ฐœ ๋ฉ”ํŠธ๋ฆญ 

topk(3, http_server_requests_seconds_count)

 

์˜คํ”„์…‹ ์ˆ˜์ •์ž : ํ˜„์žฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํŠน์ • ๊ณผ๊ฑฐ ์‹œ์  ๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜ 

http_server_requests_seconds_count offset 10m

๋ฒ”์œ„ ๋ฐฑํ„ฐ ์„ ํƒ๊ธฐ  : ๋งˆ์ง€๋ง‰์— [1m], [60s]์™€ ๊ฐ™์ด ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ง€๋‚œ 1๋ถ„๊ฐ„์˜ ๋ชจ๋“  ๊ธฐ๋ก๊ฐ’์„ ์„ ํƒํ•œ๋‹ค. 

http_server_requests_seconds_count[1m]

 

 

 

 

4๏ธโƒฃ ๊ฒŒ์ด์ง€ Gauge, ์นด์šดํ„ฐ Counter 

 

* ๊ฒŒ์ด์ง€ Gauge 

: ๊ฒŒ์ด์ง€๋Š” ์˜ค๋ฅด๊ณ  ๋‚ด๋ฆฌ๊ณ  ํ•˜๋Š” ๊ฐ’์œผ๋กœ CPU ์‚ฌ์šฉ๋Ÿ‰, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰, ์‚ฌ์šฉ์ค‘์ธ ์ปค๋„ฅ์…˜ ์ˆ˜ ๋“ฑ์ด ์žˆ๋‹ค. 

๊ฒŒ์ด์ง€๋Š” ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. 

 

system_cpu_usage

 

 

* ์นด์šดํ„ฐ Counter

: ์นด์šดํ„ฐ๋Š” ๋‹จ์ˆœํ•˜๊ฒŒ ์ฆ๊ฐ€ํ•˜๋Š” ๋‹จ์ผ ๋ˆ„์  ๊ฐ’์œผ๋กœ HTTP ์š”์ฒญ ์ˆ˜, ๋กœ๊ทธ ๋ฐœ์ƒ ์ˆ˜ ๋“ฑ์ด ์žˆ๋‹ค. 

 

 http_server_requests_seconds_count{uri="/log"}

uri= /log HTTP ์š”์ฒญ ๋ฉ”ํŠธ๋ฆญ์„ ๊ทธ๋ž˜ํ”„๋กœ ์กฐํšŒํ•˜๋Š” ๊ฒƒ์ธ๋ฐ ์นด์šดํ„ฐ๋Š” ๊ณ„์† ๋ˆ„์ ํ•ด์„œ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ทธ๋ž˜ํ”„๋ฅผ ๋ณด๋ฉด ๊ณ„์† ์ฆ๊ฐ€ํ•˜๋Š” ๊ทธ๋ž˜ํ”„๋งŒ ๋ณด๊ฒŒ ๋œ๋‹ค. 

์ด ๊ทธ๋ž˜ํ”„๋งŒ ๋ณด๋ฉด ์–ธ์ œ ๊ณ ๊ฐ์˜ ์š”์ฒญ์ด ๋งŽ์•˜๊ณ  ์—†์—ˆ๋Š”์ง€ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ต๋‹ค. 

-> ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด increase(), rate() ๋“ฑ์„ ์ง€์›ํ•œ๋‹ค.

 

 

increase()

: ์ง€์ •ํ•œ ์‹œ๊ฐ„ ๋‹จ์œ„๋ณ„๋กœ ์ฆ๊ฐ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค . 

 

ex) increase(http_server_requests_seconds_count{uri="/log"}[1m])

increase(๋ฉ”ํŠธ๋ฆญ, [์‹œ๊ฐ„]) [์‹œ๊ฐ„] ์„ ์‚ฌ์šฉํ•ด์„œ ๋ฒ”์œ„ ๋ฒกํ„ฐ๋ฅผ ์„ ํƒํ•ด์ค˜์•ผ ํ•œ๋‹ค. 

 

 

rate()

: ๋ฒ”์œ„ ๋ฒกํ„ฐ์—์„œ ์ดˆ๋‹น ํ‰๊ท  ์ฆ๊ฐ€์œจ์„ ๊ณ„์‚ฐํ•œ๋‹ค.

 

increase๊ฐ€ ์ˆซ์ž๋ฅผ ์ง์ ‘ ์นด์šดํŠธํ•˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด rate()๋Š” ์ดˆ๋‹น ํ‰๊ท ์„ ๋‚˜๋ˆ„์–ด์„œ ๊ณ„์‚ฐํ•œ๋‹ค. 

 

 

irate()

: ๋ฒ”์œ„ ๋ฒกํ„ฐ์—์„œ ์ดˆ๋‹น ์ˆœ๊ฐ„ ์ฆ๊ฐ€์œจ์„ ๊ณ„์‚ฐํ•œ๋‹ค. 

 

๐Ÿ‘พ ๊ฒŒ์ด์ง€๋Š” ๊ฐ’์ด ๊ณ„์† ๋ณ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๊ทธ๋ž˜ํ”„๋กœ ํ‘œํ˜„ํ•ด์ฃผ๋ฉด ๋˜์ง€๋งŒ ์นด์šดํ„ฐ๋Š” ๊ณ„์† ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— increase(), rate() ๋“ฑ์„ ์‚ฌ์šฉํ•ด์„œ ํ‘œํ˜„ํ•˜๋ฉด ๋œ๋‹ค. 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90