๐๐ผ ์์ฝ
HTTP POST ์์ฒญ ํน์ ํ๋ก์ธ์ค ์๊ทธ๋(kill) ๋ช ๋ น์ผ๋ก ์ฌ์์ ์์ด reload๊ฐ ๊ฐ๋ฅํ๋ค.
- HTTP POST ๋ฐฉ์
- curl -X POST http://localhost:9090/-/reload
- ํ๋ก๋ฉํ ์ฐ์ค ์ค์ ์์ Lifecycle ์ต์ ์ด ํ์ฑํ ๋์ด์์ด์ผ ํ๋ค.
- ํ๋ก์ธ์ค ์๊ทธ๋
- kill -SIGHUP [PID]
- kill -1 [PID]
(๋ ๋ช ๋ น ๋์ผํจ) - ps -ef | grep [process ์ด๋ฆ]
ํด๋น ๋ช ๋ น์ผ๋ก PID ํ์ธ ๊ฐ๋ฅ
- kill -SIGHUP [PID]
๐ ํ๋ก๋ฉํ ์ฐ์ค config reload
๐กํ๋ก๋ฉํ ์ฐ์ค ๊ตฌ์ฑ/์ด์ ์ค ๊ฐ์ ๋์์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์๋ role๋ฅผ ์ถ๊ฐํ๋ ๋ฑ ํ๋ก๋ฉํ ์ฐ์ค ์ค์ ์ ๋ณ๊ฒฝํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์กด์ฌํ๋ค. ๋ณธ์ธ์ ๊ฒฝ์ฐ ํ์ฌ ์ปจํ ์ด๋๋ก ๋์์ค์ ์์ด config ํ์ผ์ ์์ ํ๊ณ ์ฌ์์์ ํ๊ฒ๋๋ฉด ์ปจํ ์ด๋ ๋ด๋ถ์ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง๋ค.
์ด๋ ์ปจํ ์ด๋๋ก ์ด์์ค์ธ ํ๋ก๋ฉํ ์ฐ์ค๋ฅผ ์ฌ์์ ํ์ง์๊ณ config ํ์ผ์ ์ ๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ ํ๋ฒ ์ฐพ์๋ณด์๋ค.
ํ์ฌ prometheus.yaml ํ์ผ์ ๋ค์ ํญ๋ชฉ์ ์ถ๊ฐํ์๋ค.

๊ทธ๋ฆฌ๊ณ volume ์ต์ ์ผ๋ก ์ปจํ ์ด๋ ๋ด๋ถ config ํ์ผ ๋ํ ๋ด์ฉ์ด ์์ ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.

๊ทธ๋ฌ๋ ์ค์ ์์งํ๋ targets์ ํ์ธํ๋ฉด, ์์ง ์ ์ฉ๋์ง ์์๋ค.

์ด์ config ํ์ผ์ ์ ์ฉ์ํค๋ ๋ ๊ฐ์ง ๋ฐฉ์์ ์ฐพ์๋ณด์๋ค.
- ๋ฌผ๋ก ์ค์ ๋ฐ ๋ฉํธ๋ฆญ ๊ฐ์ ์ปจํ ์ด๋ ์ธ๋ถ๋ก ์ ์ฅ๋๊ฒ ๋ ๊ตฌ์ฑํ์ฌ ์ปจํ ์ด๋๋ฅผ ์ฌ์์ํด๋ ๋ชจ๋ํฐ๋ง ๋ด์ญ์ด ์ฌ๋ผ์ง๋ค๊ฑฐ๋ ํ๋ ๋ฌธ์ ๋ ๋ฐ์ํ์ง ์๋๋ค.
- ๊ทผ๋ฐ ์ฌ์์ ์์ด config ์ ์ ์ฉ์ํค๋ ๋ฐฉ๋ฒ์ด ๊ถ๊ธํ์ฌ ํ๋ฒ ์ฐพ์๋ณด์๋ค.
1. HTTP POST ์์ฒญ
FAQ | Prometheus
FAQ | Prometheus
An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.
prometheus.io
prometheus ๊ณต์ ๋ฌธ์๋ฅผ ์ฐพ์๋ณด๋, HTTP POST๋ฅผ ํตํด ์ค์ ์ ์ฉ(config reload)์ด ๊ฐ๋ฅํ๋ค๊ณ ํ๋ค!
Prometheus Lifecycle API๋ก ๋ค์๊ณผ ๊ฐ์ด ์ค์ ์ ์ ์ฉ์ํฌ ์ ์๋ค.
curl -X POST http://localhost:9090/-/reload
1.1 ํ ์คํธ ์งํ
๊ทธ๋ฌ๋, ๋ณธ์ธ์ด ์คํํ๋๋ Lifecycle API is not enabled
๋ผ ๋ํ๋๋ฉฐ ์คํ๋์ง ์๋๋ค.

ํด๋น API๊ฐ ํ์ฑํ ๋์ง ์์๋ค๋ ๊ฒ์ธ๋ฐ, ๋ค์๊ณผ ๊ฐ์ด docker compose๋ฅผ ์์ ํ์ฌ ํ์ฑํ์ํจ๋ค.

# docker-compose.yaml
command:
- --config.file=/etc/prometheus/prometheus.yml
- --storage.tsdb.path=/prometheus
- --web.enable-lifecycle
๊ทธ๋ฆฌ๊ณ ์ ์ฉ์ ๋ค์ ํ ์คํธํด๋ณด๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ด Test ์ด๋ฆ์ target์ ์์ฑํ ๋ค api๋ฅผ ํธ์ถํด๋ณด๊ฒ ๋ค.

1.2 ์ ์ฉ ์ด์

1.3 ์ ์ฉ ์ดํ

HTTP POST ํธ์ถ๋ก prometheus ์ฌ์์ ์์ด config ์ ์ฉ์ ์๋ฃํ์๋ค!!
2. ํ๋ก์ธ์ค SIGHUP ์๊ทธ๋
๋ค์์ ์๊ทธ๋(kill) ๋ช ๋ น์ผ๋ก ์ค์ ํ์ผ์ ๋ค์ ๋ก๋ํ๋ ๋ฐฉ๋ฒ์ ํ์ธํด๋ณด๊ฒ ๋ค.
์ ์ฉ ํ์ธ์ ์ํด ๋ค์๊ณผ ๊ฐ์ด target์ Test2 ๋ก ์์ ํ์๋ค.
- job_name: 'Test2'
file_sd_configs:
- files:
- IDC_win_targets.json
refresh_interval: 5m
์ดํ ๋ค์ ๋ช ๋ น์ ํตํด ์ค์ ์ ์ ์ฉ์์ผ๋ณด๊ฒ ๋ค.
kill -SIGHUP [PID]
kill -1 [PID]

(๋ณธ์ธ์ ๊ฒฝ์ฐ ์ปจํ ์ด๋ ๋ด๋ถ๋ก ์ ๊ทผํ์ฌ ์งํํ์ฌ pid๊ฐ 1๋ก ๊ตฌ์ฑ๋์ด ์๋ค.)
์คํ ๊ฒฐ๊ณผ ๋ค์๊ณผ ๊ฐ์ด ์ ์์ ์ผ๋ก target์ด Test2๋ก ๊ฐฑ์ ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค!

์ด๋ ๊ฒ ์๊ทธ๋์ ํตํด prometheus ํ๋ก์ธ์ค๋ฅผ ์ฌ์ ์ฉํ์ฌ ์ ์ฉ์ํค๋ ๋ฐฉ๋ฒ๊น์ง ์ดํด๋ณด์๋ค.
์๊ทธ๋(kill ๋ช ๋ น)์ ๋ํ ๋ด์ฉ๋ ๋์ค์ ๋ค์ ํ๋ฒ ์ ๋ฆฌํด๋ณด๊ฒ ๋ค.
'DevOps > Monitoring_๋ชจ๋ํฐ๋ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐๐ผ ์์ฝ
HTTP POST ์์ฒญ ํน์ ํ๋ก์ธ์ค ์๊ทธ๋(kill) ๋ช ๋ น์ผ๋ก ์ฌ์์ ์์ด reload๊ฐ ๊ฐ๋ฅํ๋ค.
- HTTP POST ๋ฐฉ์
- curl -X POST http://localhost:9090/-/reload
- ํ๋ก๋ฉํ ์ฐ์ค ์ค์ ์์ Lifecycle ์ต์ ์ด ํ์ฑํ ๋์ด์์ด์ผ ํ๋ค.
- ํ๋ก์ธ์ค ์๊ทธ๋
- kill -SIGHUP [PID]
- kill -1 [PID]
(๋ ๋ช ๋ น ๋์ผํจ) - ps -ef | grep [process ์ด๋ฆ]
ํด๋น ๋ช ๋ น์ผ๋ก PID ํ์ธ ๊ฐ๋ฅ
- kill -SIGHUP [PID]
๐ ํ๋ก๋ฉํ ์ฐ์ค config reload
๐กํ๋ก๋ฉํ ์ฐ์ค ๊ตฌ์ฑ/์ด์ ์ค ๊ฐ์ ๋์์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์๋ role๋ฅผ ์ถ๊ฐํ๋ ๋ฑ ํ๋ก๋ฉํ ์ฐ์ค ์ค์ ์ ๋ณ๊ฒฝํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์กด์ฌํ๋ค. ๋ณธ์ธ์ ๊ฒฝ์ฐ ํ์ฌ ์ปจํ ์ด๋๋ก ๋์์ค์ ์์ด config ํ์ผ์ ์์ ํ๊ณ ์ฌ์์์ ํ๊ฒ๋๋ฉด ์ปจํ ์ด๋ ๋ด๋ถ์ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง๋ค.
์ด๋ ์ปจํ ์ด๋๋ก ์ด์์ค์ธ ํ๋ก๋ฉํ ์ฐ์ค๋ฅผ ์ฌ์์ ํ์ง์๊ณ config ํ์ผ์ ์ ๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ ํ๋ฒ ์ฐพ์๋ณด์๋ค.
ํ์ฌ prometheus.yaml ํ์ผ์ ๋ค์ ํญ๋ชฉ์ ์ถ๊ฐํ์๋ค.

๊ทธ๋ฆฌ๊ณ volume ์ต์ ์ผ๋ก ์ปจํ ์ด๋ ๋ด๋ถ config ํ์ผ ๋ํ ๋ด์ฉ์ด ์์ ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.

๊ทธ๋ฌ๋ ์ค์ ์์งํ๋ targets์ ํ์ธํ๋ฉด, ์์ง ์ ์ฉ๋์ง ์์๋ค.

์ด์ config ํ์ผ์ ์ ์ฉ์ํค๋ ๋ ๊ฐ์ง ๋ฐฉ์์ ์ฐพ์๋ณด์๋ค.
- ๋ฌผ๋ก ์ค์ ๋ฐ ๋ฉํธ๋ฆญ ๊ฐ์ ์ปจํ ์ด๋ ์ธ๋ถ๋ก ์ ์ฅ๋๊ฒ ๋ ๊ตฌ์ฑํ์ฌ ์ปจํ ์ด๋๋ฅผ ์ฌ์์ํด๋ ๋ชจ๋ํฐ๋ง ๋ด์ญ์ด ์ฌ๋ผ์ง๋ค๊ฑฐ๋ ํ๋ ๋ฌธ์ ๋ ๋ฐ์ํ์ง ์๋๋ค.
- ๊ทผ๋ฐ ์ฌ์์ ์์ด config ์ ์ ์ฉ์ํค๋ ๋ฐฉ๋ฒ์ด ๊ถ๊ธํ์ฌ ํ๋ฒ ์ฐพ์๋ณด์๋ค.
1. HTTP POST ์์ฒญ
FAQ | Prometheus
FAQ | Prometheus
An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.
prometheus.io
prometheus ๊ณต์ ๋ฌธ์๋ฅผ ์ฐพ์๋ณด๋, HTTP POST๋ฅผ ํตํด ์ค์ ์ ์ฉ(config reload)์ด ๊ฐ๋ฅํ๋ค๊ณ ํ๋ค!
Prometheus Lifecycle API๋ก ๋ค์๊ณผ ๊ฐ์ด ์ค์ ์ ์ ์ฉ์ํฌ ์ ์๋ค.
curl -X POST http://localhost:9090/-/reload
1.1 ํ ์คํธ ์งํ
๊ทธ๋ฌ๋, ๋ณธ์ธ์ด ์คํํ๋๋ Lifecycle API is not enabled
๋ผ ๋ํ๋๋ฉฐ ์คํ๋์ง ์๋๋ค.

ํด๋น API๊ฐ ํ์ฑํ ๋์ง ์์๋ค๋ ๊ฒ์ธ๋ฐ, ๋ค์๊ณผ ๊ฐ์ด docker compose๋ฅผ ์์ ํ์ฌ ํ์ฑํ์ํจ๋ค.

# docker-compose.yaml
command:
- --config.file=/etc/prometheus/prometheus.yml
- --storage.tsdb.path=/prometheus
- --web.enable-lifecycle
๊ทธ๋ฆฌ๊ณ ์ ์ฉ์ ๋ค์ ํ ์คํธํด๋ณด๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ด Test ์ด๋ฆ์ target์ ์์ฑํ ๋ค api๋ฅผ ํธ์ถํด๋ณด๊ฒ ๋ค.

1.2 ์ ์ฉ ์ด์

1.3 ์ ์ฉ ์ดํ

HTTP POST ํธ์ถ๋ก prometheus ์ฌ์์ ์์ด config ์ ์ฉ์ ์๋ฃํ์๋ค!!
2. ํ๋ก์ธ์ค SIGHUP ์๊ทธ๋
๋ค์์ ์๊ทธ๋(kill) ๋ช ๋ น์ผ๋ก ์ค์ ํ์ผ์ ๋ค์ ๋ก๋ํ๋ ๋ฐฉ๋ฒ์ ํ์ธํด๋ณด๊ฒ ๋ค.
์ ์ฉ ํ์ธ์ ์ํด ๋ค์๊ณผ ๊ฐ์ด target์ Test2 ๋ก ์์ ํ์๋ค.
- job_name: 'Test2'
file_sd_configs:
- files:
- IDC_win_targets.json
refresh_interval: 5m
์ดํ ๋ค์ ๋ช ๋ น์ ํตํด ์ค์ ์ ์ ์ฉ์์ผ๋ณด๊ฒ ๋ค.
kill -SIGHUP [PID]
kill -1 [PID]

(๋ณธ์ธ์ ๊ฒฝ์ฐ ์ปจํ ์ด๋ ๋ด๋ถ๋ก ์ ๊ทผํ์ฌ ์งํํ์ฌ pid๊ฐ 1๋ก ๊ตฌ์ฑ๋์ด ์๋ค.)
์คํ ๊ฒฐ๊ณผ ๋ค์๊ณผ ๊ฐ์ด ์ ์์ ์ผ๋ก target์ด Test2๋ก ๊ฐฑ์ ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค!

์ด๋ ๊ฒ ์๊ทธ๋์ ํตํด prometheus ํ๋ก์ธ์ค๋ฅผ ์ฌ์ ์ฉํ์ฌ ์ ์ฉ์ํค๋ ๋ฐฉ๋ฒ๊น์ง ์ดํด๋ณด์๋ค.
์๊ทธ๋(kill ๋ช ๋ น)์ ๋ํ ๋ด์ฉ๋ ๋์ค์ ๋ค์ ํ๋ฒ ์ ๋ฆฌํด๋ณด๊ฒ ๋ค.