Prometheus
Prometheus
CNCF ํ๋ก์ ํธ ์ค ํ๋๋ก ์์คํ ๊ณผ ์๋น์ค๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ๋๊ตฌ์ด๋ค.
Kubernetes ๋ชจ๋ํฐ๋ง ๋๊ตฌ์ ๊ฑฐ์ ํ์ค์ด๋ค.
Prometheus architecture
Prometheus๋ Service Discovery, Jobs/Exporters, Pushgateway, Prometheus Server, Alertmanageer ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
๊ฐ Prometheus ์ปดํฌ๋ํธ์ ๋ํด ์์๋ณด์.
Service discovery
Prometheus๋ *Service Discovery์ ์ฐ๋ํ์ฌ Pod๊ฐ ์ญ์ ๋๊ฑฐ๋ ์ถ๊ฐ๋๋ ๋ฑ ๋ณ๊ฒฝ์ฌํญ์ด ๋ฐ์ํ๋ฉด ์๋์ผ๋ก ํ์งํ์ฌ ๋ฉํธ๋ฆญ์ ์์งํ๋ค.
์ฟ ๋ฒ๋คํฐ์ค Service Discovery๋ CoreDNS์ ์๋น์ค Domain Name์ ๋ฑ๋กํ๊ณ , ๋๋กํ ์๋น์ค ๋ชฉ๋ก๊ณผ IP, ํฌํธ๋ฅผ ์ฐพ์์ฃผ๋ ์ญํ ์ ํ๋ค.
Jobs/exporters
Jobs/exporters๋ ์ค์ ๋ก ๋ฉํธ๋ฆญ์ ์์งํ๋ ํ๋ก์ธ์ค์ด๋ค.
๋ฉํธ๋ฆญ ์์ง ๊ณผ์ ์ exporter๊ฐ ๋ฉํธ๋ฆญ์ ์์งํ๊ณ /metrics ๋ผ๋ HTTP endpoint๋ฅผ ์ ๊ณตํ๋ค. Prometheus Server๋ exporter์์ ์ ๊ณตํ๋ ์๋ํฌ์ธํธ๋ก ์ ์ํ์ฌ Pulling ๋ฐฉ์์ผ๋ก ๋ฉํธ๋ฆญ์ ์์งํ๋ค. ๊ทธ๋ฆฌ๊ณ , ์๊ฐํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์งํ ๋ฉํธ๋ฆญ์ ์กฐํํ๊ณ ํ ์ด๋ธ์ด๋ ๊ทธ๋ํ ํํ๋ก ์๊ฐํํ ์ ์๋ค.
Pushgateway
Pushgateway๋ Push ๋ฐฉ์์ผ๋ก ๋ฉํธ๋ฆญ์ ์์งํด์ผ ํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ค.
์์ง ์์ด์ ํธ๊ฐ ๋ฉํธ๋ฆญ์ Pushgateway์ Pushํ๋ฉด, Prometheus๊ฐ Pushgateway์์ ๋ฉํธ๋ฆญ์ Pulling ํ๋ ๋ฐฉ์์ด๋ค.
Prometheus server
Prometheus server๋ Retrieval, TSDB, HTTP server ๋ชจ๋๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
Retrieval์ Service discovery์์ ๋ชจ๋ํฐ๋ง ๋์ ๋ชฉ๋ก์ ๊ฐ์ ธ์์ ๋ชจ๋ํฐ๋ง ๋์์ผ๋ก ๋ถํฐ ๋ฉํธ๋ฆญ์ ์์งํ๊ณ TSDB (์๊ณ์ด DB)์ ์ ์ฅํ๋ ์ญํ ์ ํ๋ค. TSDB์ ์ ์ฅํ ๋ฉํธ๋ฆญ์ HTTP server๋ฅผ ํตํด PromQL๋ก ๋ฉํธ๋ฆญ์ ์กฐํํ ์ ์๋ค.
Alertmanager
Prometheus server๋ก ๋ถํฐ Alert๋ฅผ ์ ๋ฌ ๋ฐ์ ์ ์ ํ ํ์์ผ๋ก ๋ณ๊ฒฝํ๊ณ , ๋ณ๊ฒฝํ Alert๋ฅผ ์ด๋ฉ์ผ ๋ฑ์ผ๋ก ์ ์กํด์ฃผ๋ ์ญํ ์ ํ๋ค.
Prometheus Data & Model
Data Model
Prometheus ๋ฉํธ๋ฆญ์ ๋ผ๋ฒจ๊ณผ ๋ฐ์ดํฐ ํํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ๋ฉํธ๋ฆญ์ ๋ง๋ค ์ ์๋ค.
๋ค์์ ๋ฉํธ๋ฆญ์ ๋ฐ์ดํฐ ๋ชจ๋ธ ํฌ๋งท์ด๋ค.
๋ค์์ http_requests_total ๋ฉํธ๋ฆญ์ ๋ฐ์ดํฐ ๋ชจ๋ธ ์ ์ ์์์ด๋ค.
Simple Model | http_requests_total 5m |
---|---|
Model with label | http_requests_total {method="GET"} 5m |
Model with label and filter | http_requests_total {job=~".*", method="GET"} 5m |
Metric Typpes
Promethues๋ 4๊ฐ์ง ๋ฉํธ๋ฆญ ํ์ (Counter, Gauage, Histogram, Summary)์ ์ ์ํ์ฌ ์ ์ฅํ๋ค.
Counter | Gauge | Histogram | Summary |
---|---|---|---|
๋์ ๊ฐ์, ํฌ๊ธฐ | ํ์ฌ ๊ฐ, ์ฆ๊ฐ/๊ฐ์ ๊ฐ | ํน์ ๊ธฐ๊ฐ ์ง๊ณ(๋ฒํท๋ณ) | ํน์ ๊ธฐ๊ฐ ์ง๊ณ(๋ฒํท๋ณ X) |
request count, error count | memory usage, queue size | response size | response time |
Prometheus Configuration
Prometheus server ์ค์ ์ prometheus.yaml ํ์ผ๋ก ์ ์ํ๋ค.
๋ฉํธ๋ฆญ ์์ง ๊ฐ๊ฒฉ, Alert ์ค์ , ๋ฉํธ๋ฆญ ์ง๊ณ ๊ท์น, ์ด๋ค exporter๋ก ๋ถํฐ ๋ฉํธ๋ฆญ์ ์์งํ ์ง ๋ฑ์ ์ ์ํ๋ค.
PromQL
PromQL์ Prometheus Query Language ์ด๋ค. PromQL์ ์ด์ฉํ์ฌ Prometheus server ์์ ๋ฉํธ๋ฆญ์ ํํฐ๋ง, ์ถ์ถ, ์กฐํ๋ฅผ ํ ์ ์๋ค.
String, Scalar, Instant Vector, Range Vector๋ก ๋ฉํธ๋ฆญ์ ์กฐํํ ์ ์๋ค.
์ฐธ๊ณ ์๋ฃ
Last updated