๐Ÿ› ๏ธ Prometheus ์ ‘์† ์žฅ์•  ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… ๊ฐ€์ด๋“œ

์ด ๋ฌธ์„œ๋Š” Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด Prometheus ์ ‘์† ๋ถˆ๊ฐ€ ํ˜„์ƒ์„ ํ•ด๊ฒฐํ•˜๋Š” ๊ณผ์ •์˜ **์˜์‹์˜ ํ๋ฆ„(Stream of Consciousness)**๊ณผ ์‹ค์ œ ์‚ฌ์šฉ๋œ ๋ช…๋ น์–ด๋ฅผ ๊ธฐ๋กํ•œ ๊ฐ€์ด๋“œ์ž…๋‹ˆ๋‹ค.


1. ๐Ÿšจ ์ƒํ™ฉ ์ธ์ง€ (The Problem)

์ฆ์ƒ

โ€œ์ด์ „์— http://192.168.1.11/graph ์ฃผ์†Œ๋กœ ์ ‘์†์ด ๋˜์—ˆ๋Š”๋ฐ, ์ง€๊ธˆ์€ ์ ‘์†์ด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.โ€

๊ฐ€์žฅ ๋จผ์ € ๋“  ์ƒ๊ฐ์€ ๋‘ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

  1. Pod๊ฐ€ ์ฃฝ์—ˆ๋‚˜? (Application Down)
  2. Service ์—ฐ๊ฒฐ์ด ๋Š์–ด์กŒ๋‚˜? (Network Configuration Change)

2. ๐Ÿ” ์ดˆ๊ธฐ ์ง„๋‹จ (Initial Check)

์šฐ์„  ํ˜„์žฌ ๋‚ด๊ฐ€ ์žˆ๋Š” default ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ์ƒํ™ฉ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

kubectl get po,svc

๊ฒฐ๊ณผ ํ™•์ธ

  • nginx, nfs, redis ๋“ฑ์€ ๋ณด์ด์ง€๋งŒ Prometheus ๊ด€๋ จ Pod๋‚˜ Service๊ฐ€ ์ „ํ˜€ ๋ณด์ด์ง€ ์•Š์Œ.
  • โ€œ์‚ญ์ œ๋˜์—ˆ๊ฑฐ๋‚˜, ๋‹ค๋ฅธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค(monitoring ๋“ฑ)์— ๊ฒฉ๋ฆฌ๋˜์–ด ์žˆ์„ ๊ฒƒ์ด๋‹ค.โ€๋ผ๊ณ  ๊ฐ€์„ค ์ˆ˜๋ฆฝ.

์‚ฌ๋ผ์ง„ Prometheus๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ๋„ค์ž„์ŠคํŽ˜์ด์Šค(-A)๋ฅผ ๋’ค์ง€๊ณ , ์ด์ „์— ์ ‘์†ํ–ˆ๋˜ IP(192.168.1.11)๋‚˜ ์ด๋ฆ„(prometheus)์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

kubectl get po,svc,ingress -A -o wide | grep -E 'prometheus|192.168.1.11'

๋ฐœ๊ฒฌ ๋ฐ ๋ถ„์„ (Analysis)

๊ฒฐ๊ณผ์—์„œ ๋‹ค์Œ ์ •๋ณด๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค:

  1. monitoring ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— Pod๋“ค์ด ์ •์ƒ(Running) ์ƒํƒœ์ž„. โ†’ ์ฃฝ์ง€ ์•Š์•˜์Œ.
  2. service/prometheus-server๊ฐ€ ์กด์žฌํ•˜์ง€๋งŒ TYPE์ด ClusterIP๋กœ ์„ค์ •๋˜์–ด ์žˆ์Œ.
  3. EXTERNAL-IP ํ•ญ๋ชฉ์ด <none>์ž„.

๐Ÿ’ก ์˜์‹์˜ ํ๋ฆ„: ์›์ธ ๋„์ถœ

โ€œ์•„ํ•˜, Pod๋Š” ์‚ด์•„์žˆ๋Š”๋ฐ Service Type์ด ClusterIP๋ผ์„œ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ž ๊ฒจ์žˆ๊ตฌ๋‚˜. ์™ธ๋ถ€ IP(192.168.1.11)๋ฅผ ํ• ๋‹น๋ฐ›์œผ๋ ค๋ฉด Type์„ LoadBalancer๋กœ ๋ฐ”๊ฟ”์•ผ ํ•ด.โ€


4. ๐Ÿ”ง ํ•ด๊ฒฐ ์กฐ์น˜ (Resolution)

์›์ธ์„ ์ฐพ์•˜์œผ๋‹ˆ, ์„œ๋น„์Šค ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜์—ฌ ์™ธ๋ถ€ ๋ฌธ์„ ์—ด์–ด์ค๋‹ˆ๋‹ค. ๊ตณ์ด yaml ํŒŒ์ผ์„ ์—ด์–ด์„œ ์ˆ˜์ •ํ•˜๊ณ  ์ ์šฉํ•  ํ•„์š” ์—†์ด patch ๋ช…๋ น์–ด๋กœ ์ฆ‰์‹œ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

kubectl patch svc prometheus-server -n monitoring -p '{"spec": {"type": "LoadBalancer"}}'

๋ช…๋ น์–ด ์„ค๋ช…

  • -n monitoring: monitoring ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ํƒ€๊ฒŸํŒ….
  • -p '{"spec": {"type": "LoadBalancer"}}': ์„œ๋น„์Šค ์ŠคํŽ™ ์ค‘ type๋งŒ ์ฝ• ์ง‘์–ด์„œ LoadBalancer๋กœ ๋ฎ์–ด์“ฐ๊ธฐ.

5. โœ… ๊ฒ€์ฆ (Verification)

๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ ์šฉ๋˜์–ด IP๋ฅผ ์ž˜ ๋ฐ›์•„์™”๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

kubectl get svc prometheus-server -n monitoring -o wide

์ตœ์ข… ๊ฒฐ๊ณผ

NAME                TYPE           EXTERNAL-IP    PORT(S)
prometheus-server   LoadBalancer   192.168.1.11   80:32633/TCP

EXTERNAL-IP์— 192.168.1.11์ด ๋‹ค์‹œ ํ• ๋‹น๋œ ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ ‘์†์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ“ ์š”์•ฝ (Summary)

  1. ์ƒํ™ฉ: Prometheus ์ ‘์† ๋ถˆ๊ฐ€.
  2. ์›์ธ: ์„œ๋น„์Šค ํƒ€์ž…์ด ClusterIP๋กœ ์„ค์ •๋˜์–ด ์™ธ๋ถ€ IP ํ• ๋‹น์ด ํ•ด์ œ๋จ.
  3. ํ•ด๊ฒฐ: kubectl patch๋ฅผ ํ†ตํ•ด LoadBalancer๋กœ ๋ณ€๊ฒฝ.
  4. ๊ตํ›ˆ: ๋ฆฌ์†Œ์Šค๊ฐ€ ์•ˆ ๋ณด์ผ ๋• ๋‹นํ™ฉํ•˜์ง€ ๋ง๊ณ  -A (All Namespaces) ์˜ต์…˜์„ ์ผœ์ž.