Ver3.0 ๐ Grafana๋ก ์์คํ ์ํ ์๊ฐํ

๐ Grafana๋ก ์์คํ ์ํ ์๊ฐํ
๋ฐ์ดํฐ๋ฅผ ์๋ฆ๋ค์ด ๋์๋ณด๋๋ก ๋ณ์ ์ํค๋ ๋ง๋ฒ ๊ฐ์ ์ด์ผ๊ธฐ
์๋
! ๐ ํน์ ์๋ฒ๊ฐ ์ธ์ ํฐ์ง์ง ๋ชฐ๋ผ์ ๋ฐค์ ์ค์น๊ณ ์์ง ์์? ์๋๋ฉด ์์คํ
๋ชจ๋ํฐ๋ง ํ๋ฉด์ด ๋๋ฌด ๋ณต์กํด์ ๋ญ๊ฐ ๋ญ์ง ๋ชจ๋ฅด๊ฒ ๋ค๊ณ ? ๊ทธ๋ ๋ค๋ฉด ์ค๋ ์ด์ผ๊ธฐํ Grafana๊ฐ ๋์ ๊ตฌ์ธ์ฃผ๊ฐ ๋ ๊ฑฐ์ผ!
Grafana๋ ์ฝ๊ฒ ๋งํด์ ๋ฐ์ดํฐ ์๊ฐํ์ ๋ํ์์ด๋ผ๊ณ ํ ์ ์์ด. ๋ณต์กํ ์์คํ
๋ฉํธ๋ฆญ๋ค์ ํ๋์ ๋ค์ด์ค๋ ๋ฉ์ง ๋์๋ณด๋๋ก ๋ง๋ค์ด์ฃผ๋ ์คํ์์ค ํ๋ซํผ์ด์ง. ๋ง์น ์๋ฆฌ์ฌ๊ฐ ์ฌ๋ฃ๋ฅผ ๊ฐ์ง๊ณ ๊ทผ์ฌํ ์๋ฆฌ๋ฅผ ๋ง๋ค๋ฏ์ด, Grafana๋ ๋์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ ์ํ ๊ฐ์ ๋์๋ณด๋๋ฅผ ๋ง๋ค์ด์ค! ๐จ
๐ฏ Grafana๊ฐ ๋ญ๊ธธ๋ ์ด๋ ๊ฒ ๋๋ฆฌ์ผ?
Grafana๋ 2014๋
์ Torkel รdegaard๋ผ๋ ๊ฐ๋ฐ์๊ฐ ๋ง๋ ์คํ์์ค ํ๋ก์ ํธ์ผ. ์๋๋ Kibana์ ํฌํฌ(fork) ํ๋ก์ ํธ๋ก ์์ํ๋๋ฐ, ์ง๊ธ์ ์์ ํ ๋
๋ฆฝ์ ์ธ ํ๋ซํผ์ผ๋ก ์ฑ์ฅํ์ง. ๐
๊ฐ์ฅ ํฐ ํน์ง์ ๋ค์ํ ๋ฐ์ดํฐ ์์ค๋ฅผ ์ง์ํ๋ค๋ ๊ฑฐ์ผ. Prometheus, InfluxDB, Elasticsearch, MySQL, PostgreSQL ๋ฑ๋ฑ... ๊ฑฐ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชจ๋ํฐ๋ง ์์คํ
์ ์ฐ๊ฒฐํ ์ ์์ด. ๋ง์น ๋ง๋ฅ ์ด๋ํฐ ๊ฐ์ ์กด์ฌ์ง!
๐ก Grafana์ ํต์ฌ ๊ฐ์
1. ์ ์ฐ์ฑ: ์ด๋ค ๋ฐ์ดํฐ ์์ค๋ ์ฐ๊ฒฐ ๊ฐ๋ฅ
2. ์ง๊ด์ฑ: ๋๋๊ทธ ์ค ๋๋กญ์ผ๋ก ๋์๋ณด๋ ๊ตฌ์ฑ
3. ํ์ฅ์ฑ: ํ๋ฌ๊ทธ์ธ์ผ๋ก ๋ฌดํ ํ์ฅ
4. ์ปค๋ฎค๋ํฐ: ์์ฒ ๊ฐ์ ๊ณต์ ๋์๋ณด๋ ํ
ํ๋ฆฟ
5. ๋ฌด๋ฃ: ์คํ์์ค๋ผ์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์์ ๋ฌด๋ฃ!
ํนํ DevOps ํ๊ฒฝ์์ Grafana๋ ๊ฑฐ์ ํ์ ๋๊ตฌ๊ฐ ๋์ด. ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ๋ชจ๋ํฐ๋ง, ๋ง์ดํฌ๋ก์๋น์ค ์ฑ๋ฅ ์ถ์ , ์ธํ๋ผ ์ํ ํ์ธ ๋ฑ... ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ํ๊ฒฝ์์ ๋น ์ง ์ ์๋ ์กด์ฌ์ง. โ๏ธ
๐ ๏ธ Grafana ์ค์นํ๊ธฐ - ์๊ฐ๋ณด๋ค ์ฌ์!
์, ์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก Grafana๋ฅผ ์ค์นํด๋ณผ๊น? ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋๋ฐ, ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ค์ ์๊ฐํด์ค๊ฒ!
๐ฆ ๋ฐฉ๋ฒ 1: Docker๋ก ์ค์นํ๊ธฐ (๊ฐ์ฅ ์ถ์ฒ!)
Docker๊ฐ ์ค์น๋์ด ์๋ค๋ฉด ์ ๋ง ๊ฐ๋จํด. ๋จ ํ ์ค์ ๋ช ๋ น์ด๋ก ๋๋๊ฑฐ๋ !
docker run -d -p 3000:3000 --name=grafana grafana/grafana
์ด ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด Grafana๊ฐ 3000๋ฒ ํฌํธ์์ ์คํ๋ผ. ๋ธ๋ผ์ฐ์ ์์ http://localhost:3000์ผ๋ก ์ ์ํ๋ฉด ๋ฐ๋ก ๋ก๊ทธ์ธ ํ๋ฉด์ด ๋ํ๋! ๊ธฐ๋ณธ ๊ณ์ ์ admin/admin์ด์ผ. ๐
๐ง ๋ฐฉ๋ฒ 2: Linux์ ์ง์ ์ค์นํ๊ธฐ
Ubuntu/Debian ๊ณ์ด์ด๋ผ๋ฉด ์ด๋ ๊ฒ ์ค์นํ ์ ์์ด:
sudo apt-get install -y software-properties-common
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo apt-get update
sudo apt-get install grafana
์ค์น๊ฐ ๋๋๋ฉด ์๋น์ค๋ฅผ ์์ํด์ค:
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
๐ก ํ๋ก ํ!
Docker Compose๋ฅผ ์ฌ์ฉํ๋ฉด Grafana์ Prometheus๋ฅผ ํ ๋ฒ์ ์ค์นํ ์ ์์ด. ์ค์ ํ๋ก๋์ ํ๊ฒฝ์์๋ ์ด ๋ฐฉ๋ฒ์ ๋ง์ด ์ฌ์ฉํ์ง. ๋์ค์ ์ค์ ํ์ผ๋ง ๊ด๋ฆฌํ๋ฉด ๋๋๊น ํจ์ฌ ํธ๋ฆฌํด!
๐ช ๋ฐฉ๋ฒ 3: Windows์ ์ค์นํ๊ธฐ
Windows ์ฌ์ฉ์๋ผ๋ฉด ๊ณต์ ์น์ฌ์ดํธ์์ MSI ์ค์น ํ์ผ์ ๋ค์ด๋ก๋ํด์ ์ค์นํ๋ฉด ๋ผ. ์ผ๋ฐ ํ๋ก๊ทธ๋จ ์ค์นํ๋ฏ์ด Next๋ง ๋๋ฅด๋ฉด ๋!
โ ๏ธ ์ฃผ์์ฌํญ
์ฒ์ ์ค์นํ๋ฉด ๊ธฐ๋ณธ ํฌํธ๊ฐ 3000๋ฒ์ด์ผ. ๋ง์ฝ ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด๋ฏธ 3000๋ฒ ํฌํธ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด ์ถฉ๋์ด ๋ ์ ์์ด. ์ด๋ด ๋๋ ์ค์ ํ์ผ(/etc/grafana/grafana.ini)์์ ํฌํธ๋ฅผ ๋ณ๊ฒฝํด์ฃผ๋ฉด ๋ผ!
๐จ ์ฒซ ๋์๋ณด๋ ๋ง๋ค๊ธฐ - ์์ ์ํ์ ์์
์, ์ด์ Grafana๊ฐ ์ค์น๋์ผ๋ ๋ณธ๊ฒฉ์ ์ผ๋ก ๋์๋ณด๋๋ฅผ ๋ง๋ค์ด๋ณผ๊น? ์ฒ์์๋ ์ข ๋ง๋งํ ์ ์๋๋ฐ, ์ฒ์ฒํ ๋ฐ๋ผ์ค๋ฉด ๊ธ๋ฐฉ ์ต์ํด์ง ๊ฑฐ์ผ! ๐ฏ
๋์๋ณด๋๋ฅผ ๋ง๋ค๊ธฐ ์ ์ ๋จผ์ ๋ฐ์ดํฐ ์์ค๋ฅผ ์ฐ๊ฒฐํด์ผ ํด. ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด ์๊ฐํํ ๊ฒ ์์ผ๋๊น! ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ Prometheus๋ฅผ ์๋ก ๋ค์ด๋ณผ๊ฒ.
๐ Prometheus ์ฐ๊ฒฐ ๋จ๊ณ
Step 1: ์ข์ธก ๋ฉ๋ด์์ Configuration(โ๏ธ) โ Data Sources ํด๋ฆญ
Step 2: "Add data source" ๋ฒํผ ํด๋ฆญ
Step 3: Prometheus ์ ํ
Step 4: URL ์
๋ ฅ (์: http://localhost:9090)
Step 5: "Save & Test" ๋ฒํผ์ผ๋ก ์ฐ๊ฒฐ ํ์ธ
์ด๋ก์์ผ๋ก "Data source is working"์ด ๋จ๋ฉด ์ฑ๊ณต! ๐
์ด์ ์ง์ง ์ฌ๋ฏธ์๋ ๋ถ๋ถ์ด์ผ! ์ข์ธก ๋ฉ๋ด์์ "+" ์์ด์ฝ์ ํด๋ฆญํ๊ณ "Dashboard"๋ฅผ ์ ํํด. ๊ทธ๋ฌ๋ฉด ๋น ์บ๋ฒ์ค๊ฐ ๋ํ๋๋๋ฐ, ์ฌ๊ธฐ์ ๋๋ง์ ์ํ์ ๊ทธ๋ ค๋๊ฐ๋ ๊ฑฐ์ง! ๐จ
๐ฏ ํจ๋(Panel) ์ถ๊ฐํ๊ธฐ
ํจ๋์ ๋์๋ณด๋์ ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์์ผ. ๊ฐ ํจ๋์ ํ๋์ ์ฐจํธ๋ ๊ทธ๋ํ๋ฅผ ํ์ํ์ง.
1. "Add panel" ํด๋ฆญ
2. "Add a new panel" ์ ํ
3. ์ฟผ๋ฆฌ ์์ฑ: ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ค์ง ์ ์
4. ์๊ฐํ ํ์
์ ํ: ๊ทธ๋ํ, ๊ฒ์ด์ง, ํ
์ด๋ธ ๋ฑ
5. ํจ๋ ์ ๋ชฉ๊ณผ ์ค๋ช
์ถ๊ฐ
6. "Apply" ๋ฒํผ์ผ๋ก ์ ์ฅ
์ฟผ๋ฆฌ๋ Grafana์๊ฒ "์ด ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ค!"๋ผ๊ณ ๋งํ๋ ๋ฐฉ๋ฒ์ด์ผ. ๋ฐ์ดํฐ ์์ค๋ง๋ค ์ฟผ๋ฆฌ ์ธ์ด๊ฐ ๋ค๋ฅธ๋ฐ, Prometheus์ ๊ฒฝ์ฐ PromQL์ ์ฌ์ฉํด. ๋ช ๊ฐ์ง ์ ์ฉํ ์์ ๋ฅผ ๋ณด์ฌ์ค๊ฒ!
# CPU ์ฌ์ฉ๋ฅ ์กฐํ
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
# ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ฅ ์กฐํ
(node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100
# ๋์คํฌ ์ฌ์ฉ๋ฅ ์กฐํ
100 - ((node_filesystem_avail_bytes / node_filesystem_size_bytes) * 100)
๐ก ์ฟผ๋ฆฌ ์์ฑ ํ
์ฒ์์๋ ์ฟผ๋ฆฌ ์์ฑ์ด ์ด๋ ค์ธ ์ ์์ด. ๊ทธ๋ด ๋ Grafana์ "Query Inspector" ๊ธฐ๋ฅ์ ํ์ฉํด๋ด. ์ค์ ๋ก ์ด๋ค ๋ฐ์ดํฐ๊ฐ ๋ฐํ๋๋์ง ํ์ธํ ์ ์์ด์ ๋๋ฒ๊น ์ ์์ฒญ ์ ์ฉํด! ๐
๐ฅ ์ค์ ํ์ฉ - ์ง์ง ๋ชจ๋ํฐ๋ง ์์ํ๊ธฐ
์ด๋ก ์ ์ด์ ์ถฉ๋ถํด! ์ค์ ๋ก ์ด๋ป๊ฒ ํ์ฉํ๋์ง ๊ตฌ์ฒด์ ์ธ ์์ ๋ค์ ์ดํด๋ณด์. ์ฌ๊ธฐ์๋ถํฐ๊ฐ ์ง์ง ์ฌ๋ฏธ์๋ ๋ถ๋ถ์ด์ผ! ๐
๊ฐ์ฅ ๊ธฐ๋ณธ์ด๋ฉด์๋ ์ค์ํ ๋์๋ณด๋์ผ. CPU, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ, ๋คํธ์ํฌ ์ํ๋ฅผ ํ๋์ ๋ณผ ์ ์์ด์ผ ํ๊ฑฐ๋ !
๐ ํ์ ํจ๋ ๊ตฌ์ฑ
1. CPU ์ฌ์ฉ๋ฅ (Time Series)
- ์ ์ฒด CPU ์ฌ์ฉ๋ฅ ์ถ์ด
- ์ฝ์ด๋ณ ์ฌ์ฉ๋ฅ ๋ถํฌ
- ์๊ณ๊ฐ ์ค์ ์ผ๋ก 80% ์ด์ ์ ๊ฒฝ๊ณ
2. ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ฅ (Gauge + Time Series)
- ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ฅ ์ Gauge๋ก ํ์
- ์๊ฐ๋ณ ์ถ์ด๋ฅผ Time Series๋ก ํ์
- ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋๋ ํจ๊ป ๋ชจ๋ํฐ๋ง
3. ๋์คํฌ I/O (Bar Chart)
- ์ฝ๊ธฐ/์ฐ๊ธฐ ์๋
- ํํฐ์
๋ณ ์ฌ์ฉ๋ฅ
- IOPS(์ด๋น ์
์ถ๋ ฅ ์์
์)
4. ๋คํธ์ํฌ ํธ๋ํฝ (Time Series)
- ์ธ๋ฐ์ด๋/์์๋ฐ์ด๋ ํธ๋ํฝ
- ํจํท ์์ค๋ฅ
- ์ฐ๊ฒฐ ์
โ ์ค๋ฌด ํ
๋์๋ณด๋๋ฅผ ๋ง๋ค ๋๋ ์ ๋ณด์ ์ฐ์ ์์๋ฅผ ๊ณ ๋ คํด์ผ ํด. ๊ฐ์ฅ ์ค์ํ ๋ฉํธ๋ฆญ์ ์๋จ์, ์์ธํ ์ ๋ณด๋ ํ๋จ์ ๋ฐฐ์นํ๋ ๊ฒ ์ข์. ๊ทธ๋ฆฌ๊ณ ์์ ์ฝ๋ฉ์ ์ผ๊ด์ฑ ์๊ฒ ์ฌ์ฉํ๋ฉด ์ง๊ด์ฑ์ด ํจ์ฌ ์ข์์ ธ!
์๋ฅผ ๋ค์ด ์ด๋ก์์ ์ ์, ๋
ธ๋์์ ์ฃผ์, ๋นจ๊ฐ์์ ์ํ ์ด๋ฐ ์์ผ๋ก ๋ง์ด์ผ. ๐ฆ
์์ฆ ๋๋ถ๋ถ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ปจํ ์ด๋๋ก ๋ฐฐํฌ๋์์? Docker ์ปจํ ์ด๋๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ๊ฑด ํ์์ผ!
# Docker ๋ฉํธ๋ฆญ์ ์์งํ๊ธฐ ์ํ cAdvisor ์คํ
docker run -d \
--name=cadvisor \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 \
gcr.io/cadvisor/cadvisor:latest
cAdvisor๋ฅผ ์คํํ๋ฉด ์ปจํ ์ด๋๋ณ ๋ฆฌ์์ค ์ฌ์ฉ๋์ ์์งํ ์ ์์ด. ์ด ๋ฐ์ดํฐ๋ฅผ Prometheus๋ก ์คํฌ๋ํํ๊ณ , Grafana๋ก ์๊ฐํํ๋ฉด ์๋ฒฝํ ์ปจํ ์ด๋ ๋ชจ๋ํฐ๋ง ์์คํ ์ด ์์ฑ๋ผ! ๐ฏ
๐ ์ปจํ ์ด๋ ๋์๋ณด๋ ๊ตฌ์ฑ ์์
์ปจํ ์ด๋ ์ CPU ์ฌ์ฉ๋ฅ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ๋คํธ์ํฌ I/O ๋์คํฌ I/O ์ฌ์์ ํ์
๊ฐ ์ปจํ ์ด๋์ ์ํ๋ฅผ ์ค์๊ฐ์ผ๋ก ์ถ์ ํ๊ณ , ๋น์ ์์ ์ธ ๋์์ด ๊ฐ์ง๋๋ฉด ์ฆ์ ์๋ฆผ์ ๋ฐ์ ์ ์์ด. ํนํ ๋ฉ๋ชจ๋ฆฌ ๋์๋ CPU ์คํ์ดํฌ ๊ฐ์ ๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ ์ ์์ง!
Kubernetes๋ฅผ ์ฌ์ฉํ๋ค๋ฉด Grafana๋ ๊ฑฐ์ ํ์์ผ. ํด๋ฌ์คํฐ์ ๋ณต์กํ ์ํ๋ฅผ ์ดํดํ๋ ๋ฐ ์์ฒญ๋ ๋์์ด ๋๊ฑฐ๋ !
โ๏ธ K8s ๋ชจ๋ํฐ๋ง ๋ ์ด์ด
ํด๋ฌ์คํฐ ๋ ๋ฒจ:
- ๋
ธ๋ ์ํ ๋ฐ ๋ฆฌ์์ค
- ์ ์ฒด Pod ์ ๋ฐ ์ํ
- ๋ค์์คํ์ด์ค๋ณ ๋ฆฌ์์ค ์ฌ์ฉ๋
๋
ธ๋ ๋ ๋ฒจ:
- ๊ฐ ๋
ธ๋์ CPU/๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ฅ
- ๋์คํฌ ๋ฐ ๋คํธ์ํฌ ์ํ
- ์คํ ์ค์ธ Pod ๋ชฉ๋ก
Pod ๋ ๋ฒจ:
- ์ปจํ
์ด๋ ์ํ
- ๋ก๊ทธ ๋ฐ ์ด๋ฒคํธ
- ๋ฆฌ์์ค ์์ฒญ/์ ํ ๋๋น ์ค์ ์ฌ์ฉ๋
์ ํ๋ฆฌ์ผ์ด์
๋ ๋ฒจ:
- ์๋ต ์๊ฐ
- ์๋ฌ์จ
- ์ฒ๋ฆฌ๋(Throughput)
Kubernetes ๋ชจ๋ํฐ๋ง์๋ ๋ณดํต Prometheus Operator์ ํจ๊ป ์ฌ์ฉํด. ์ด๋ฏธ ์ ๋ง๋ค์ด์ง ๋์๋ณด๋ ํ ํ๋ฆฟ๋ค์ด ๋ง์์, ์ฒ์๋ถํฐ ๋ง๋ค ํ์ ์์ด ๊ฐ์ ธ๋ค ์ฐ๋ฉด ๋ผ! ๐
๐ก ์ถ์ฒ ๋์๋ณด๋ ID
Grafana ๊ณต์ ์ฌ์ดํธ(grafana.com/grafana/dashboards)์์ ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋ง๋ ๋์๋ณด๋๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ด. ์ธ๊ธฐ ์๋ K8s ๋์๋ณด๋ ID๋ค:
315 - Kubernetes cluster monitoring
6417 - Kubernetes Cluster (Prometheus)
8588 - Kubernetes Deployment Statefulset Daemonset metrics
๋์๋ณด๋ Import ๊ธฐ๋ฅ์ผ๋ก ID๋ง ์
๋ ฅํ๋ฉด ๋ฐ๋ก ์ฌ์ฉํ ์ ์์ด!
๐จ ๋์๋ณด๋ ๋์์ธ ๋ฒ ์คํธ ํ๋ํฐ์ค
๊ธฐ๋ฅ๋ ์ค์ํ์ง๋ง, ๋ณด๊ธฐ ์ข์ ๋ก์ด ๋จน๊ธฐ๋ ์ข๋ค๊ณ ํ์์? ๋์๋ณด๋ ๋์์ธ๋ ์์ฒญ ์ค์ํด! ๐
๐ F-ํจํด ๋ ์ด์์
์ฌ๋๋ค์ ๋ณดํต ์ผ์ชฝ ์์์ ์์ํด์ F์ ํํ๋ก ํ๋ฉด์ ์ค์บํด. ๊ทธ๋์:
1. ์ต์๋จ: ๊ฐ์ฅ ์ค์ํ KPI (ํต์ฌ ์ฑ๊ณผ ์งํ)
2. ์ผ์ชฝ ์๋จ: ์ค์๊ฐ ์ํ ํ์
3. ์ค์: ์๊ณ์ด ๊ทธ๋ํ
4. ํ๋จ: ์์ธ ํ
์ด๋ธ์ด๋ ๋ก๊ทธ
์ด๋ ๊ฒ ๋ฐฐ์นํ๋ฉด ์์ฐ์ค๋ฝ๊ฒ ์์ ์ด ํ๋ฅด๋ฉด์ ์ ๋ณด๋ฅผ ํ์
ํ ์ ์์ด!
์์์ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ผ. ํ์ง๋ง ๋๋ฌด ๋ง์ ์์ ์ฌ์ฉํ๋ฉด ์คํ๋ ค ํผ๋์ค๋ฌ์์ ธ.
| ์ํ | ๊ถ์ฅ ์์ | ์ฌ์ฉ ์์ |
|---|---|---|
| ์ ์ | ์ด๋ก์ (#4CAF50) | ์์คํ ๊ฐ๋ ์ค, ์ ์ ๋ฒ์ ๋ด |
| ์ฃผ์ | ๋ ธ๋์ (#FFC107) | ์๊ณ๊ฐ ๊ทผ์ , ํ์ธ ํ์ |
| ๊ฒฝ๊ณ | ์ฃผํฉ์ (#FF9800) | ๋น์ ์ ์งํ, ์กฐ์น ๊ถ์ฅ |
| ์ํ | ๋นจ๊ฐ์ (#F44336) | ์ฌ๊ฐํ ๋ฌธ์ , ์ฆ์ ์กฐ์น ํ์ |
| ์ ๋ณด | ํ๋์ (#2196F3) | ์ผ๋ฐ ์ ๋ณด, ์ค๋ฆฝ์ ๋ฐ์ดํฐ |
โ ๏ธ ์๋งน ์ฌ์ฉ์ ๊ณ ๋ คํ๊ธฐ
์ ์ธ๊ณ ๋จ์ฑ์ ์ฝ 8%, ์ฌ์ฑ์ ์ฝ 0.5%๊ฐ ์๋งน์ด์ผ. ๋นจ๊ฐ-์ด๋ก ์๋งน์ด ๊ฐ์ฅ ํํ๋ฐ, ์ด๋ค์ ์ํด ์์๋ง์ผ๋ก ์ ๋ณด๋ฅผ ์ ๋ฌํ์ง ๋ง๊ณ ์์ด์ฝ์ด๋ ํ ์คํธ๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ ์ข์. ์ ๊ทผ์ฑ๋ ์ค์ํ๋๊น! โฟ
์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ด๋ค ์ฐจํธ๋ก ํํํ ์ง๋ ์ค์ํด. ์๋ชป๋ ์ฐจํธ๋ฅผ ์ ํํ๋ฉด ์คํ๋ ค ์ ๋ณด ์ ๋ฌ์ด ์ด๋ ค์์ ธ.
๐ ์ฐจํธ ์ ํ ๊ธฐ์ค
Time Series (์๊ณ์ด ๊ทธ๋ํ):
- ์๊ฐ์ ๋ฐ๋ฅธ ๋ณํ๋ฅผ ๋ณด์ฌ์ค ๋
- CPU, ๋ฉ๋ชจ๋ฆฌ, ํธ๋ํฝ ๋ฑ ์ฐ์์ ์ธ ๋ฐ์ดํฐ
- ์ฌ๋ฌ ๋ฉํธ๋ฆญ์ ๋น๊ตํ ๋
Gauge (๊ฒ์ด์ง):
- ํ์ฌ ์ํ๋ฅผ ํ๋์ ๋ณด์ฌ์ค ๋
- ๋ฐฑ๋ถ์จ์ด๋ ๋น์จ ๋ฐ์ดํฐ
- ์๊ณ๊ฐ์ด ๋ช
ํํ ๊ฒฝ์ฐ
Stat (ํต๊ณ):
- ๋จ์ผ ์ซ์๋ฅผ ๊ฐ์กฐํ ๋
- KPI๋ ์ค์ ์งํ
- ์ ์ผ ๋๋น ์ฆ๊ฐ๋ฅ ํ์
Bar Chart (๋ง๋ ๊ทธ๋ํ):
- ํญ๋ชฉ ๊ฐ ๋น๊ต
- ์์๋ ๋ถํฌ ํ์
- ์นดํ
๊ณ ๋ฆฌ๋ณ ๋ฐ์ดํฐ
Pie Chart (์ ๊ทธ๋ํ):
- ์ ์ฒด ๋๋น ๋น์จ
- ๊ตฌ์ฑ ์์ ๋ถ์
- ๋จ, ํญ๋ชฉ์ด 5๊ฐ ์ดํ์ผ ๋๋ง!
Table (ํ
์ด๋ธ):
- ์์ธํ ์์น ๋ฐ์ดํฐ
- ์ฌ๋ฌ ์์ฑ์ ๋์์ ํ์
- ์ ๋ ฌ์ด๋ ํํฐ๋ง์ด ํ์ํ ๊ฒฝ์ฐ
โ ํ๋ก ๋์์ด๋์ ์กฐ์ธ
๋์๋ณด๋๋ "ํ๋์ ํ์ "์ด ํต์ฌ์ด์ผ. ๋๋ฌด ๋ง์ ์ ๋ณด๋ฅผ ํ ํ๋ฉด์ ๋ฃ์ผ๋ ค๊ณ ํ์ง ๋ง. ์ฐจ๋ผ๋ฆฌ ์ฌ๋ฌ ๊ฐ์ ๋์๋ณด๋๋ก ๋๋๋ ๊ฒ ๋์. ๊ทธ๋ฆฌ๊ณ ํญ์ ์ค์ ์ฌ์ฉ์์ ํผ๋๋ฐฑ์ ๋ฐ์์ ๊ฐ์ ํด๋๊ฐ๋ ๊ฒ ์ค์ํด!
๐ ์๋ฆผ(Alert) ์ค์ ํ๊ธฐ - ์ ์๋ ๋์์๋ ์์ฌ
๋์๋ณด๋๋ฅผ ๋ง๋ค์๋ค๊ณ ๋์ด ์๋์ผ. 24์๊ฐ ๋ชจ๋ํฐ๋ฅผ ์ง์ผ๋ณผ ์ ์์์? ๊ทธ๋์ ์๋ฆผ ๊ธฐ๋ฅ์ด ํ์ํด! ๐จ
Grafana๋ ๋ค์ํ ์๋ฆผ ์ฑ๋์ ์ง์ํด. ์ด๋ฉ์ผ, Slack, Discord, PagerDuty, Webhook ๋ฑ๋ฑ... ๋์ ํ์ด ์ฌ์ฉํ๋ ๋๊ตฌ์ ์ฐ๋ํ ์ ์์ด!
๐ฌ Slack ์๋ฆผ ์ค์ ์์
Step 1: Slack์์ Incoming Webhook URL ์์ฑ
Step 2: Grafana์์ Alerting โ Notification channels
Step 3: "New channel" ํด๋ฆญ
Step 4: Type์ "Slack"์ผ๋ก ์ ํ
Step 5: Webhook URL ์
๋ ฅ
Step 6: ์ฑ๋๋ช
์
๋ ฅ (์: #monitoring)
Step 7: "Test" ๋ฒํผ์ผ๋ก ํ
์คํธ ๋ฉ์์ง ์ ์ก
Step 8: Save!
์ด์ ์ด๋ค ์ํฉ์์ ์๋ฆผ์ ๋ณด๋ผ์ง ์ ์ํด์ผ ํด. ์๋ฆผ ๊ท์น์ ํจ๋ ๋จ์๋ก ์ค์ ํ ์ ์์ด.
# CPU ์ฌ์ฉ๋ฅ ์ด 80% ์ด์์ผ ๋ ์๋ฆผ
WHEN avg() OF query(A, 5m, now) IS ABOVE 80
# ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ฅ ์ด 90% ์ด์์ด๊ณ 5๋ถ ์ด์ ์ง์๋ ๋
WHEN avg() OF query(A, 5m, now) IS ABOVE 90
FOR 5m
# ๋์คํฌ ์ฌ์ ๊ณต๊ฐ์ด 10GB ๋ฏธ๋ง์ผ ๋
WHEN last() OF query(A, 5m, now) IS BELOW 10000000000
โ ๏ธ ์๋ฆผ ํผ๋ก๋ ์ฃผ์!
๋๋ฌด ๋ฏผ๊ฐํ ์๊ณ๊ฐ์ ์ค์ ํ๋ฉด ์๋ฆผ์ด ํญํ์ฒ๋ผ ์์์ ธ. ์ด๊ฑธ "Alert Fatigue"(์๋ฆผ ํผ๋ก)๋ผ๊ณ ํ๋๋ฐ, ์ ๋ง ์ค์ํ ์๋ฆผ๋ ๋ฌด์ํ๊ฒ ๋๋ ๋ถ์์ฉ์ด ์์ด.
ํด๊ฒฐ์ฑ
:
1. ์๊ณ๊ฐ์ ์ ์ ํ ์ค์ (๋๋ฌด ๋ฎ์ง ์๊ฒ)
2. ์ผ์ ์๊ฐ ์ง์๋ ๋๋ง ์๋ฆผ (FOR ์กฐ๊ฑด ํ์ฉ)
3. ์๋ฆผ ๋น๋ ์ ํ (๊ฐ์ ์๋ฆผ์ 1์๊ฐ์ 1๋ฒ๋ง)
4. ์ฌ๊ฐ๋ ๋ ๋ฒจ ๊ตฌ๋ถ (Warning vs Critical)
๐ฏ ํจ๊ณผ์ ์ธ ์๋ฆผ ์ ๋ต
1. ๊ณ์ธตํ๋ ์๋ฆผ:
- Info: ๋ก๊ทธ๋ก๋ง ๊ธฐ๋ก
- Warning: Slack ๋ฉ์์ง
- Critical: Slack + ์ด๋ฉ์ผ + SMS
2. ์ปจํ
์คํธ ํฌํจ:
์๋ฆผ ๋ฉ์์ง์ ๋ค์ ์ ๋ณด๋ฅผ ํฌํจ์์ผ:
- ์ด๋ค ์๋ฒ/์๋น์ค์์ ๋ฐ์ํ๋์ง
- ํ์ฌ ๊ฐ๊ณผ ์๊ณ๊ฐ
- ๋์๋ณด๋ ๋งํฌ
- ์์ ์์ธ ๋ฐ ์กฐ์น ๋ฐฉ๋ฒ
3. ์์ค์ปฌ๋ ์ด์
์ ์ฑ
:
- 5๋ถ ๋ด ์๋ต ์์ผ๋ฉด โ ํ ๋ฆฌ๋์๊ฒ ์๋ฆผ
- 15๋ถ ๋ด ์๋ต ์์ผ๋ฉด โ ๋งค๋์ ์๊ฒ ์๋ฆผ
- 30๋ถ ๋ด ์๋ต ์์ผ๋ฉด โ ์จ์ฝ ๋ด๋น์์๊ฒ ์ ํ
๐ก ์๋ฆผ ๋ฉ์์ง ํ ํ๋ฆฟ ์์
์ข์ ์:
๐ด [CRITICAL] Production API Server CPU ์ฌ์ฉ๋ฅ 95%
์๋ฒ: api-prod-01
ํ์ฌ๊ฐ: 95.3% (์๊ณ๊ฐ: 80%)
์ง์์๊ฐ: 7๋ถ
๋์๋ณด๋: https://grafana.example.com/d/api-monitoring
์กฐ์น: ํ๋ก์ธ์ค ํ์ธ ๋ฐ ์ค์ผ์ผ ์์ ๊ฒํ
๋์ ์:
Alert: High CPU
(์ด๋ค ์๋ฒ์ธ์ง, ์ผ๋ง๋ ๋์์ง, ๋ญ ํด์ผ ํ๋์ง ์ ์ ์์)
๐ง ๊ณ ๊ธ ๊ธฐ๋ฅ ํ์ฉํ๊ธฐ
๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์ต์ํด์ก๋ค๋ฉด ์ด์ ๊ณ ๊ธ ๊ธฐ๋ฅ๋ค์ ํ์ฉํด๋ณผ ์ฐจ๋ก์ผ! ์ด๊ฒ๋ค์ ์ ํ์ฉํ๋ฉด ์ง์ง ํ๋กํ์ ๋ํ ๋์๋ณด๋๋ฅผ ๋ง๋ค ์ ์์ด. ๐
Variables๋ ๋์๋ณด๋๋ฅผ ๋์ ์ผ๋ก ๋ง๋ค์ด์ฃผ๋ ๋ง๋ฒ ๊ฐ์ ๊ธฐ๋ฅ์ด์ผ. ์๋ฅผ ๋ค์ด, ์๋ฒ๋ฅผ ์ ํํ๋ฉด ํด๋น ์๋ฒ์ ๋ฉํธ๋ฆญ๋ง ๋ณด์ฌ์ฃผ๋ ์์ผ๋ก ๋ง์ด์ผ!
๐ Variable ํ์
Query Variable:
๋ฐ์ดํฐ ์์ค์์ ๊ฐ์ ๊ฐ์ ธ์. ์๋ฅผ ๋ค์ด ๋ชจ๋ ์๋ฒ ๋ชฉ๋ก์ ์๋์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์์ด.
label_values(node_uname_info, instance)
Custom Variable:
์ง์ ๊ฐ์ ์
๋ ฅํด. ํ๊ฒฝ(dev, staging, prod) ๊ฐ์ ๊ณ ์ ๋ ๊ฐ๋ค์ ์ ์ฉํด.
dev,staging,production
Interval Variable:
์๊ฐ ๊ฐ๊ฒฉ์ ๋์ ์ผ๋ก ์กฐ์ ํ ์ ์์ด. ๋ฐ์ดํฐ ํฌ์ธํธ ์๋ฅผ ์ต์ ํํ๋ ๋ฐ ์ข์.
1m,5m,10m,30m,1h
Data Source Variable:
์ฌ๋ฌ ๋ฐ์ดํฐ ์์ค๋ฅผ ์ ํํ ์ ์์ด. ๋ฉํฐ ํด๋ฌ์คํฐ ํ๊ฒฝ์์ ์ ์ฉํด.
Variables๋ฅผ ์ฟผ๋ฆฌ์์ ์ฌ์ฉํ ๋๋ $๋ณ์๋ช ํ์์ผ๋ก ์ฐธ์กฐํด:
# ์ ํํ ์๋ฒ์ CPU ์ฌ์ฉ๋ฅ
100 - (avg(rate(node_cpu_seconds_total{instance="$server",mode="idle"}[5m])) * 100)
# ์ ํํ ๋ค์์คํ์ด์ค์ Pod ์
count(kube_pod_info{namespace="$namespace"})
Transformations๋ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ๊ณตํ๋ ๊ธฐ๋ฅ์ด์ผ. ๋ฐ์ดํฐ๋ฅผ ์ํ๋ ํํ๋ก ๋ฐ๊ฟ ์ ์์ด!
๐จ ์ ์ฉํ Transformation๋ค
Merge: ์ฌ๋ฌ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ํ๋๋ก ํฉ์น๊ธฐ
Filter by name: ํน์ ํ๋๋ง ์ ํํ๊ธฐ
Organize fields: ํ๋ ์์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ด๋ฆ ๋ฐ๊พธ๊ธฐ
Add field from calculation: ๊ณ์ฐ๋ ํ๋ ์ถ๊ฐ (์: ํฉ๊ณ, ํ๊ท )
Filter data by values: ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ง ํ์
Sort by: ํน์ ํ๋๋ก ์ ๋ ฌ
Group by: ๋ฐ์ดํฐ ๊ทธ๋ฃนํ ๋ฐ ์ง๊ณ
Annotations๋ ๊ทธ๋ํ์ ์ด๋ฒคํธ๋ฅผ ํ์ํ๋ ๊ธฐ๋ฅ์ด์ผ. ๋ฐฐํฌ ์์ , ์ฅ์ ๋ฐ์ ์์ ๋ฑ์ ํ์ํ๋ฉด ๋ฐ์ดํฐ ๋ถ์์ด ํจ์ฌ ์ฌ์์ ธ!
๐ Annotation ํ์ฉ ์์
๋ฐฐํฌ ์ด๋ฒคํธ:
์ ๋ฒ์ ๋ฐฐํฌ ์์ ์ ํ์ํด์, ์ฑ๋ฅ ๋ณํ๊ฐ ๋ฐฐํฌ์ ๊ด๋ จ ์๋์ง ํ์ธ
์ฅ์ ์ด๋ฒคํธ:
๊ณผ๊ฑฐ ์ฅ์ ๋ฐ์ ์์ ์ ํ์ํด์, ํจํด ๋ถ์
์ค์ผ์ผ๋ง ์ด๋ฒคํธ:
์คํ ์ค์ผ์ผ๋ง์ด ๋ฐ์ํ ์์ ์ ํ์ํด์, ๋ฆฌ์์ค ์ฌ์ฉ ํจํด ํ์
์ธ๋ถ ์ด๋ฒคํธ:
๋ง์ผํ
์บ ํ์ธ, ์ด๋ฒคํธ ์์ ์์ ๋ฑ์ ํ์ํด์ ํธ๋ํฝ ๋ณํ ์์ธ ๋ถ์
์ฌ๋ฌ ๋์๋ณด๋๋ฅผ ์ฐ๊ฒฐํด์ ๋๋ฆด๋ค์ด(drill-down) ๋ถ์์ ํ ์ ์์ด. ์ ์ฒด ๊ฐ์์์ ์์ํด์ ์ ์ ์์ธํ ์ ๋ณด๋ก ๋ค์ด๊ฐ๋ ๊ฑฐ์ง!
# ํจ๋์์ ๋ค๋ฅธ ๋์๋ณด๋๋ก ๋งํฌ ์ค์
/d/detailed-dashboard?var-server=$server&from=$__from&to=$__to
์ด๋ ๊ฒ ํ๋ฉด ํน์ ์๋ฒ๋ฅผ ํด๋ฆญํ์ ๋ ํด๋น ์๋ฒ์ ์์ธ ๋์๋ณด๋๋ก ์ด๋ํ๋ฉด์, ๊ฐ์ ์๊ฐ ๋ฒ์๋ฅผ ์ ์งํ ์ ์์ด. ์ ๋ง ํธ๋ฆฌํ์ง? ๐
โ ์ค์ ํ: ๋์๋ณด๋ ๊ณ์ธต ๊ตฌ์กฐ
๋์๋ณด๋๋ฅผ 3๋จ๊ณ๋ก ๊ตฌ์ฑํ๋ฉด ํจ๊ณผ์ ์ด์ผ:
Level 1 - Overview: ์ ์ฒด ์์คํ
์ํ ํ๋์ ๋ณด๊ธฐ
Level 2 - Service: ํน์ ์๋น์ค๋ ์ปดํฌ๋ํธ ์์ธ ์ ๋ณด
Level 3 - Deep Dive: ๊ฐ๋ณ ์ธ์คํด์ค๋ ๋ฉํธ๋ฆญ ์ฌ์ธต ๋ถ์
๊ฐ ๋ ๋ฒจ์์ ๋ค์ ๋ ๋ฒจ๋ก ์์ฐ์ค๋ฝ๊ฒ ์ด๋ํ ์ ์๋๋ก ๋งํฌ๋ฅผ ์ค์ ํด์ค!
๐ ์ค๋ฌด์์ ์์ฃผ ๋ง๋๋ ๋ฌธ์ ๋ค๊ณผ ํด๊ฒฐ๋ฒ
์ด๋ก ์ ์๋ฒฝํด๋ ์ค์ ์์๋ ์์์น ๋ชปํ ๋ฌธ์ ๋ค์ด ์๊ธฐ๊ธฐ ๋ง๋ จ์ด์ผ. ๋ด๊ฐ ๊ฒช์๋ (๊ทธ๋ฆฌ๊ณ ๋ง์ ์ฌ๋๋ค์ด ๊ฒช๋) ๋ฌธ์ ๋ค๊ณผ ํด๊ฒฐ๋ฒ์ ๊ณต์ ํ ๊ฒ! ๐ช
โ ๏ธ ๋ฌธ์ : ๋์๋ณด๋๊ฐ ๋๋ฌด ๋๋ ค์!
๋์๋ณด๋์ ํจ๋์ด ๋๋ฌด ๋ง๊ฑฐ๋, ์ฟผ๋ฆฌ๊ฐ ๋ณต์กํ๋ฉด ๋ก๋ฉ์ด ์์ฒญ ๋๋ ค์ง ์ ์์ด.
๐ ํด๊ฒฐ ๋ฐฉ๋ฒ
1. ์ฟผ๋ฆฌ ์ต์ ํ:
- ๋ถํ์ํ ๋ ์ด๋ธ ์ ๊ฑฐ
- ์ง๊ณ ํจ์ ํ์ฉ (avg, sum ๋ฑ)
- ์๊ฐ ๋ฒ์๋ฅผ ์ ์ ํ ์ ํ
2. ํจ๋ ์ ์ค์ด๊ธฐ:
- ํ ํ๋ฉด์ 15๊ฐ ์ดํ์ ํจ๋ ๊ถ์ฅ
- ๋น์ทํ ๋ฉํธ๋ฆญ์ ํ๋์ ํจ๋์ ํตํฉ
- ๋ ์ค์ํ ์ ๋ณด๋ ๋ณ๋ ๋์๋ณด๋๋ก ๋ถ๋ฆฌ
3. ์บ์ฑ ํ์ฉ:
- Query caching ํ์ฑํ
- ์ ์ ํ refresh interval ์ค์ (5์ด๋ณด๋ค๋ 30์ด)
- ์๊ฐ ๋ฒ์๋ฅผ ๋ณ์๋ก ๋ง๋ค์ด ์ฌ์ฌ์ฉ
4. ๋ฐ์ดํฐ ์์ค ์ต์ ํ:
- Prometheus์ ๊ฒฝ์ฐ recording rules ์ฌ์ฉ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ค ํ์ธ
- ๋ถํ์ํ ๋ฉํธ๋ฆญ ์์ง ์ค๋จ
ํ์ฌ์์ ์ฌ์ฉํ๋ค๋ฉด ๋ณด์์ ํ์์ผ. ๋ชจ๋ ์ฌ๋์ด ๋ชจ๋ ๋์๋ณด๋๋ฅผ ๋ณผ ํ์๋ ์์ผ๋๊น!
๐ก๏ธ ๊ถํ ๊ด๋ฆฌ ๋ฒ ์คํธ ํ๋ํฐ์ค
Organization ํ์ฉ:
ํ์ด๋ ํ๋ก์ ํธ๋ณ๋ก Organization์ ๋ถ๋ฆฌํด. ์์ ํ ๋
๋ฆฝ๋ ํ๊ฒฝ์ ๋ง๋ค ์ ์์ด.
Team ๊ธฐ๋ฐ ๊ถํ:
๊ฐ์ธ์ด ์๋ ํ ๋จ์๋ก ๊ถํ์ ๋ถ์ฌํด. ์ฌ๋์ด ๋ฐ๋์ด๋ ๊ถํ ๊ด๋ฆฌ๊ฐ ์ฌ์์ ธ.
Folder ๊ถํ:
๋์๋ณด๋๋ฅผ ํด๋๋ก ๊ตฌ์กฐํํ๊ณ , ํด๋ ๋จ์๋ก ๊ถํ์ ์ค์ ํด.
Read-only ์ฌ์ฉ์:
๋๋ถ๋ถ์ ์ฌ์ฉ์๋ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ์ค์ ํ๊ณ , ํธ์ง ๊ถํ์ ์ต์ํ์ผ๋ก ์ ํํด.
๋์๋ณด๋๋ฅผ ์ด์ฌํ ๋ง๋ค์๋๋ฐ ๋ ์๊ฐ๋ฉด ์ ๋ง ์ฌํ์์? ๋ฐฑ์ ์ ํ์์ผ!
๐ฆ ๋์๋ณด๋ ๋ฐฑ์ ์ ๋ต
1. JSON ํ์ผ๋ก Export:
๊ฐ ๋์๋ณด๋๋ฅผ JSON ํ์ผ๋ก ์ ์ฅํด์ Git์ ์ปค๋ฐ
2. API๋ฅผ ์ด์ฉํ ์๋ ๋ฐฑ์
:
# ๋ชจ๋ ๋์๋ณด๋ ๋ฐฑ์
์คํฌ๋ฆฝํธ
#!/bin/bash
GRAFANA_URL="http://localhost:3000"
API_KEY="your-api-key"
curl -H "Authorization: Bearer $API_KEY" \
"$GRAFANA_URL/api/search?type=dash-db" | \
jq -r '.[] | .uid' | \
while read uid; do
curl -H "Authorization: Bearer $API_KEY" \
"$GRAFANA_URL/api/dashboards/uid/$uid" > "backup_$uid.json"
done
3. Grafana์ Provisioning ๊ธฐ๋ฅ:
YAML ํ์ผ๋ก ๋์๋ณด๋๋ฅผ ์ ์ํ๊ณ , Git์ผ๋ก ๊ด๋ฆฌ. Infrastructure as Code ๋ฐฉ์!
4. ์ ๊ธฐ์ ์ธ ์ค๋
์ท:
์ค์ํ ๋ณ๊ฒฝ ์ ์๋ ํญ์ ์ค๋
์ท์ ์์ฑํด. Grafana Cloud๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ ๋ฐฑ์
๋ ๊ฐ๋ฅํด.
โ ๏ธ ์์ฃผ ๋ฐ์ํ๋ ์ฐ๊ฒฐ ์ค๋ฅ๋ค
"Connection refused":
โ ๋ฐ์ดํฐ ์์ค๊ฐ ์คํ ์ค์ธ์ง ํ์ธ
โ ๋ฐฉํ๋ฒฝ ์ค์ ํ์ธ
โ ๋คํธ์ํฌ ์ฐ๊ฒฐ ํ์ธ
"Unauthorized":
โ ์ธ์ฆ ์ ๋ณด ํ์ธ (API ํค, ๋น๋ฐ๋ฒํธ)
โ ๊ถํ ์ค์ ํ์ธ
"Timeout":
โ ์ฟผ๋ฆฌ๊ฐ ๋๋ฌด ๋ณต์กํ๊ฑฐ๋ ๋ฐ์ดํฐ๊ฐ ๋๋ฌด ๋ง์
โ ์๊ฐ ๋ฒ์ ์ค์ด๊ธฐ
โ ์ฟผ๋ฆฌ ์ต์ ํ
"No data":
โ ์ฟผ๋ฆฌ ๋ฌธ๋ฒ ํ์ธ
โ ๋ฐ์ดํฐ๊ฐ ์ค์ ๋ก ์กด์ฌํ๋์ง ํ์ธ
โ ์๊ฐ ๋ฒ์ ํ์ธ (๊ณผ๊ฑฐ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ณ ์๋์ง)
๐ ์ฌ๋ฅ๋ท์์ Grafana ์ ๋ฌธ๊ฐ ์ฐพ๊ธฐ
ํผ์์ Grafana๋ฅผ ๋ง์คํฐํ๊ธฐ ์ด๋ ต๋ค๋ฉด? ๊ฑฑ์ ๋ง! ์ฌ๋ฅ๋ท์๋ Grafana์ ๋ชจ๋ํฐ๋ง ์์คํ
๊ตฌ์ถ ์ ๋ฌธ๊ฐ๋ค์ด ๋ง์. ๐ฏ
์ค์ ํ๋ก๋์
ํ๊ฒฝ์์ ๋๊ท๋ชจ ์์คํ
์ ๋ชจ๋ํฐ๋งํด๋ณธ ๊ฒฝํ์ด ์๋ ์ ๋ฌธ๊ฐ๋ค์ด ๋์ ์ํฉ์ ๋ง๋ ๋ง์ถคํ ๋์๋ณด๋๋ฅผ ๋ง๋ค์ด์ค ์ ์์ด. ํนํ ์ฒ์ ์์ํ๋ ๋จ๊ณ์์ ์ฌ๋ฐ๋ฅธ ๋ฐฉํฅ์ ์ก๋ ๊ฒ ์ค์ํ๋ฐ, ์ ๋ฌธ๊ฐ์ ์กฐ์ธ์ ๋ฐ์ผ๋ฉด ์ํ์ฐฉ์ค๋ฅผ ํฌ๊ฒ ์ค์ผ ์ ์์ง!
๐ผ ์ฌ๋ฅ๋ท์์ ๋ฐ์ ์ ์๋ ๋์
โ
Grafana ์ค์น ๋ฐ ์ด๊ธฐ ์ค์
โ
๋ง์ถคํ ๋์๋ณด๋ ๋์์ธ ๋ฐ ๊ตฌ์ถ
โ
์๋ฆผ ์์คํ
์ค๊ณ ๋ฐ ๊ตฌํ
โ
์ฑ๋ฅ ์ต์ ํ ์ปจ์คํ
โ
๋ชจ๋ํฐ๋ง ์ํคํ
์ฒ ์ค๊ณ
โ
ํ ๊ต์ก ๋ฐ ์ํฌ์ต
โ
ํธ๋ฌ๋ธ์ํ
๋ฐ ๊ธฐ์ ์ง์
ํนํ DevOps ์์ง๋์ด๋ SRE(Site Reliability Engineer) ์ ๋ฌธ๊ฐ๋ค์ด ์ค์ ๊ฒฝํ์ ๋ฐํ์ผ๋ก ํ ๋ ธํ์ฐ๋ฅผ ๊ณต์ ํด์ค ์ ์์ด. ์ฑ ์ด๋ ๋ฌธ์๋ก๋ ๋ฐฐ์ธ ์ ์๋ ์ค๋ฌด ํ๋ค์ ์ป์ ์ ์๋ ์ข์ ๊ธฐํ์ง! ๐
๐ Grafana์ ๋ฏธ๋์ ํธ๋ ๋
Grafana๋ ๊ณ์ ์งํํ๊ณ ์์ด. ์ต์ ํธ๋ ๋๋ฅผ ์์๋๋ฉด ์์ผ๋ก ์ด๋ค ๋ฐฉํฅ์ผ๋ก ๋ฐ์ ํ ์ง ์์ธกํ ์ ์์ง!
๐ Grafana์ ์ต์ ๊ธฐ๋ฅ๋ค
1. Grafana Loki:
๋ก๊ทธ ์ง๊ณ ์์คํ
. Prometheus์ฒ๋ผ ๋ ์ด๋ธ ๊ธฐ๋ฐ์ผ๋ก ๋ก๊ทธ๋ฅผ ์ฟผ๋ฆฌํ ์ ์์ด. ๋ก๊ทธ์ ๋ฉํธ๋ฆญ์ ํ ๊ณณ์์ ๋ณผ ์ ์๋ค๋ ๊ฒ ํฐ ์ฅ์ !
2. Grafana Tempo:
๋ถ์ฐ ์ถ์ (Distributed Tracing) ์์คํ
. ๋ง์ดํฌ๋ก์๋น์ค ํ๊ฒฝ์์ ์์ฒญ์ ์ ์ฒด ํ๋ฆ์ ์ถ์ ํ ์ ์์ด.
3. Grafana Mimir:
๋๊ท๋ชจ Prometheus ๋ฉํธ๋ฆญ์ ์ํ ์ฅ๊ธฐ ์ ์ฅ์. ์๋ฐฑ๋ง ๊ฐ์ ์๊ณ์ด ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ณ ์ฟผ๋ฆฌํ ์ ์์ด.
4. Machine Learning ํตํฉ:
์ด์ ํ์ง(Anomaly Detection)์ ์์ธก ๋ถ์ ๊ธฐ๋ฅ์ด ๊ฐํ๋๊ณ ์์ด. AI๊ฐ ์๋์ผ๋ก ๋ฌธ์ ๋ฅผ ์ฐพ์๋ด๋ ์๋๊ฐ ์ค๊ณ ์์ง!
5. Grafana Cloud:
์์ ๊ด๋ฆฌํ ์๋น์ค. ์ค์น๋ ๊ด๋ฆฌ ๊ฑฑ์ ์์ด ๋ฐ๋ก ์ฌ์ฉํ ์ ์์ด. ๋ฌด๋ฃ ํฐ์ด๋ ์ ๊ณตํด!
ํ๋์ ์ธ ๋ชจ๋ํฐ๋ง์ ๋จ์ํ ๋ฉํธ๋ฆญ๋ง ๋ณด๋ ๊ฒ ์๋์ผ. ์ธ ๊ฐ์ง ์์๋ฅผ ํตํฉํด์ ๋ด์ผ ํด:
๐๏ธ Observability์ 3 Pillars
1. Metrics (๋ฉํธ๋ฆญ):
์ซ์๋ก ํํ๋๋ ์์คํ
์ํ. CPU, ๋ฉ๋ชจ๋ฆฌ, ์๋ต ์๊ฐ ๋ฑ
โ Prometheus + Grafana
2. Logs (๋ก๊ทธ):
์์คํ
์์ ๋ฐ์ํ๋ ์ด๋ฒคํธ์ ๊ธฐ๋ก
โ Loki + Grafana
3. Traces (์ถ์ ):
์์ฒญ์ด ์์คํ
์ ํต๊ณผํ๋ ์ ์ฒด ๊ฒฝ๋ก
โ Tempo + Grafana
์ด ์ธ ๊ฐ์ง๋ฅผ Grafana ํ๋๋ก ํตํฉํด์ ๋ณผ ์ ์๋ค๋ ๊ฒ ์์ฒญ๋ ์ฅ์ ์ด์ผ! ๐ฏ
Kubernetes์ ํด๋ผ์ฐ๋ ํ๊ฒฝ์ด ๋์ธ๊ฐ ๋๋ฉด์, Grafana์ ์ญํ ๋ ๋ ์ค์ํด์ง๊ณ ์์ด.
โ๏ธ ํด๋ผ์ฐ๋ ํ๊ฒฝ ๋ชจ๋ํฐ๋ง ํธ๋ ๋
๋ฉํฐ ํด๋ฌ์คํฐ ๋ชจ๋ํฐ๋ง:
์ฌ๋ฌ Kubernetes ํด๋ฌ์คํฐ๋ฅผ ํ๋์ ๋์๋ณด๋์์ ๊ด๋ฆฌ
์๋น์ค ๋ฉ์ ํตํฉ:
Istio, Linkerd ๊ฐ์ ์๋น์ค ๋ฉ์์ ํตํฉํด์ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ ํต์ ๋ชจ๋ํฐ๋ง
๋น์ฉ ์ต์ ํ:
ํด๋ผ์ฐ๋ ๋ฆฌ์์ค ์ฌ์ฉ๋๊ณผ ๋น์ฉ์ ์ค์๊ฐ์ผ๋ก ์ถ์
GitOps ํตํฉ:
๋์๋ณด๋ ์ค์ ์ Git์ผ๋ก ๊ด๋ฆฌํ๊ณ , CI/CD ํ์ดํ๋ผ์ธ๊ณผ ํตํฉ
๐ก ์ค์ ํ๋ก์ ํธ ์์
์ด๋ก ๋ง ๋ฐฐ์ฐ๋ฉด ์ฌ๋ฏธ์์์? ์ค์ ๋ก ๋ง๋ค์ด๋ณผ ์ ์๋ ํ๋ก์ ํธ ์์ ๋ฅผ ์๊ฐํ ๊ฒ! ๐ ๏ธ
์ง์ ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด๋ NAS๊ฐ ์๋ค๋ฉด ์๋ฒฝํ ์ฐ์ต ๋์์ด์ผ!
๐ ๊ตฌ์ถ ๋จ๊ณ
Step 1: Node Exporter ์ค์น (์์คํ
๋ฉํธ๋ฆญ ์์ง)
Step 2: Prometheus ์ค์น ๋ฐ ์ค์
Step 3: Grafana ์ค์น
Step 4: ๊ธฐ๋ณธ ์์คํ
๋์๋ณด๋ ๊ตฌ์ฑ
Step 5: ๋์คํฌ ๊ณต๊ฐ ์๋ฆผ ์ค์
Step 6: ๋ชจ๋ฐ์ผ์์๋ ๋ณผ ์ ์๋๋ก ์ต์ ํ
# Node Exporter ์ค์น (Ubuntu/Debian)
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
tar xvfz node_exporter-1.6.1.linux-amd64.tar.gz
cd node_exporter-1.6.1.linux-amd64
./node_exporter &
# Prometheus ์ค์ (prometheus.yml)
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
์์ ์ด ๋ง๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ํฐ๋งํด๋ณด์!
๐ ๋ชจ๋ํฐ๋งํ ์ฃผ์ ๋ฉํธ๋ฆญ
์ ํ๋ฆฌ์ผ์ด์
๋ฉํธ๋ฆญ:
- ์์ฒญ ์ (RPS: Requests Per Second)
- ์๋ต ์๊ฐ (ํ๊ท , P50, P95, P99)
- ์๋ฌ์จ
- ํ์ฑ ์ฌ์ฉ์ ์
์ธํ๋ผ ๋ฉํธ๋ฆญ:
- ์๋ฒ ๋ฆฌ์์ค ์ฌ์ฉ๋
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์
- ์บ์ ํํธ์จ
- ํ ๊ธธ์ด
๋น์ฆ๋์ค ๋ฉํธ๋ฆญ:
- ์ ๊ท ๊ฐ์
์ ์
- ์ ํ์จ
- ๋งค์ถ
- ์ฌ์ฉ์ ํ๋ ํจํด
์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฉํธ๋ฆญ์ ์ถ๊ฐํ๋ ค๋ฉด ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ผ:
# Python Flask ์์
from prometheus_flask_exporter import PrometheusMetrics
app = Flask(__name__)
metrics = PrometheusMetrics(app)
@app.route('/api/users')
@metrics.counter('api_users_requests', 'Number of requests to /api/users')
def get_users():
# ์ฌ์ฉ์ ๋ชฉ๋ก ๋ฐํ
return jsonify(users)
# Node.js Express ์์
const promClient = require('prom-client');
const register = new promClient.Registry();
const httpRequestDuration = new promClient.Histogram({
name: 'http_request_duration_seconds',
help: 'Duration of HTTP requests in seconds',
labelNames: ['method', 'route', 'status_code']
});
register.registerMetric(httpRequestDuration);
์ฌ๋ฌ ์๋น์ค๊ฐ ์๋ก ํต์ ํ๋ ๋ณต์กํ ํ๊ฒฝ์ ๋ชจ๋ํฐ๋งํด๋ณด์!
๐ ์๋น์ค ๊ฐ ์์กด์ฑ ์๊ฐํ
๋ง์ดํฌ๋ก์๋น์ค ํ๊ฒฝ์์๋ ์๋น์ค ๊ฐ ์์กด์ฑ์ ํ์
ํ๋ ๊ฒ ์ค์ํด. Grafana์์๋:
1. Service Graph: ์๋น์ค ๊ฐ ํธ์ถ ๊ด๊ณ๋ฅผ ๊ทธ๋ํ๋ก ํ์
2. Trace View: ๊ฐ๋ณ ์์ฒญ์ ์ ์ฒด ํ๋ฆ ์ถ์
3. Dependency Map: ์๋น์ค ์์กด์ฑ ๋งต
4. Error Tracking: ์ด๋ ์๋น์ค์์ ์๋ฌ๊ฐ ๋ฐ์ํ๋์ง ์ถ์
โ ํ๋ก ํ: Golden Signals
Google SRE ํ์ด ์ ์ํ "Golden Signals"๋ฅผ ๋ชจ๋ํฐ๋งํ๋ฉด ์์คํ
์ํ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํ์
ํ ์ ์์ด:
1. Latency (์ง์ฐ์๊ฐ): ์์ฒญ ์ฒ๋ฆฌ ์๊ฐ
2. Traffic (ํธ๋ํฝ): ์์คํ
์ ๊ฐํด์ง๋ ๋ถํ
3. Errors (์๋ฌ): ์คํจํ ์์ฒญ์ ๋น์จ
4. Saturation (ํฌํ๋): ๋ฆฌ์์ค ์ฌ์ฉ๋ฅ
์ด ๋ค ๊ฐ์ง๋ง ์ ๋ชจ๋ํฐ๋งํด๋ ๋๋ถ๋ถ์ ๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ ์ ์์ด! ๐ฏ
๐ ํ์ต ๋ฆฌ์์ค์ ์ปค๋ฎค๋ํฐ
Grafana๋ฅผ ๋ ๊น์ด ๋ฐฐ์ฐ๊ณ ์ถ๋ค๋ฉด? ์ด๋ฐ ๋ฆฌ์์ค๋ค์ ํ์ฉํด๋ด! ๐
๐ ์ถ์ฒ ํ์ต ์๋ฃ
๊ณต์ ๋ฌธ์:
grafana.com/docs - ๊ฐ์ฅ ์ ํํ๊ณ ์ต์ ์ ๋ณด
Grafana Labs YouTube:
๊ณต์ ํํ ๋ฆฌ์ผ ์์๋ค. ์ค์ ํ๋ฉด์ ๋ณด๋ฉด์ ๋ฐฐ์ธ ์ ์์ด
Grafana Community:
community.grafana.com - ์ง๋ฌธํ๊ณ ๋ต๋ณ ๋ฐ์ ์ ์๋ ํฌ๋ผ
GitHub:
github.com/grafana/grafana - ์์ค ์ฝ๋์ ์ด์ ํธ๋์ปค
Grafana Play:
play.grafana.org - ์ค์น ์์ด ๋ฐ๋ก ํ
์คํธํด๋ณผ ์ ์๋ ๋ฐ๋ชจ ํ๊ฒฝ
๐ฅ ์ปค๋ฎค๋ํฐ ์ฐธ์ฌํ๊ธฐ
Slack:
Grafana ๊ณต์ Slack ์ฑ๋์์ ์ค์๊ฐ์ผ๋ก ์ง๋ฌธํ๊ณ ๋ต๋ณ ๋ฐ๊ธฐ
Reddit:
r/grafana - ๋ค๋ฅธ ์ฌ์ฉ์๋ค์ ๊ฒฝํ๊ณผ ํ ๊ณต์
Stack Overflow:
[grafana] ํ๊ทธ๋ก ๊ฒ์ํ๋ฉด ๋ง์ Q&A๋ฅผ ์ฐพ์ ์ ์์ด
Meetup:
์ง์ญ๋ณ Grafana/Prometheus ๋ฐ์
์ ์ฐธ์ฌํด์ ๋คํธ์ํน
๐ก ํ์ต ํ
Grafana๋ฅผ ๋ฐฐ์ฐ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ์ง์ ๋ง๋ค์ด๋ณด๋ ๊ฒ์ด์ผ! ์์ ํ๋ก์ ํธ๋ถํฐ ์์ํด์ ์ ์ ๋ณต์กํ ๋์๋ณด๋๋ฅผ ๋ง๋ค์ด๋ด. ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋ง๋ ๋์๋ณด๋๋ฅผ Importํด์ ์ด๋ป๊ฒ ๊ตฌ์ฑํ๋์ง ๋ถ์ํด๋ณด๋ ๊ฒ๋ ํฐ ๋์์ด ๋ผ.
ํนํ ์ฌ๋ฅ๋ท ๊ฐ์ ํ๋ซํผ์์ ์ค๋ฌด ๊ฒฝํ์ด ํ๋ถํ ์ ๋ฌธ๊ฐ์๊ฒ 1:1 ๋ฉํ ๋ง์ ๋ฐ์ผ๋ฉด ํ์ต ์๋๊ฐ ํจ์ฌ ๋นจ๋ผ์ง ๊ฑฐ์ผ! ๐
๐ฌ ๋ง๋ฌด๋ฆฌํ๋ฉฐ
์, ์ฌ๊ธฐ๊น์ง ์ฝ์๋ค๋ฉด ์ ๋ง ๋๋จํด! ๐ Grafana์ ๋ํด ๊ฝค ๋ง์ ๊ฑธ ๋ฐฐ์ ์ ๊ฑฐ์ผ.
์ฒ์์๋ ๋ณต์กํด ๋ณด์ผ ์ ์์ง๋ง, ํ๋์ฉ ๋ฐ๋ผ ํ๋ค ๋ณด๋ฉด ์ด๋์ ๋ฉ์ง ๋์๋ณด๋๋ฅผ ๋ง๋ค๊ณ ์๋ ์์ ์ ๋ฐ๊ฒฌํ๊ฒ ๋ ๊ฑฐ์ผ. ์์คํ
๋ชจ๋ํฐ๋ง์ ๋จ์ํ ์ซ์๋ฅผ ๋ณด๋ ๊ฒ ์๋๋ผ, ์์คํ
์ ๊ฑด๊ฐ ์ํ๋ฅผ ์ดํดํ๊ณ ๋ฌธ์ ๋ฅผ ์๋ฐฉํ๋ ๊ฒ์ด์ผ. ๐ฅ
๐ฏ ํต์ฌ ์์ฝ
โ
Grafana๋ ๊ฐ๋ ฅํ๊ณ ์ ์ฐํ ์๊ฐํ ํ๋ซํผ
โ
๋ค์ํ ๋ฐ์ดํฐ ์์ค๋ฅผ ์ง์ํ๊ณ ์ฝ๊ฒ ์ฐ๋ ๊ฐ๋ฅ
โ
์ง๊ด์ ์ธ UI๋ก ๋๊ตฌ๋ ๋์๋ณด๋ ์ ์ ๊ฐ๋ฅ
โ
์๋ฆผ ๊ธฐ๋ฅ์ผ๋ก 24/7 ๋ชจ๋ํฐ๋ง ์๋ํ
โ
์คํ์์ค๋ผ์ ๋ฌด๋ฃ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
โ
ํ๋ฐํ ์ปค๋ฎค๋ํฐ์ ํ๋ถํ ํ๋ฌ๊ทธ์ธ
โ
ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ํ๊ฒฝ์ ์ต์ ํ
โ
์ง์์ ์ผ๋ก ๋ฐ์ ํ๋ ์ํ๊ณ
DevOps์ SRE ๋ฌธํ๊ฐ ํ์ฐ๋๋ฉด์ Grafana ๊ฐ์ ๋ชจ๋ํฐ๋ง ๋๊ตฌ์ ์ค์์ฑ์ ๊ณ์ ์ปค์ง๊ณ ์์ด. ์ด์ ๋ ๊ฐ๋ฐ์๋ ์ด์์๋ ๋ชจ๋ํฐ๋ง ์์คํ
์ ๋ค๋ฃฐ ์ค ์๋ ๊ฒ ๊ธฐ๋ณธ ์คํฌ์ด ๋์ด๊ฐ๊ณ ์์ง. ๐
ํผ์ ๊ณต๋ถํ๊ธฐ ์ด๋ ต๋ค๋ฉด ์ฌ๋ฅ๋ท์์ ์ ๋ฌธ๊ฐ์ ๋์์ ๋ฐ๋ ๊ฒ๋ ์ข์ ์ ํ์ด์ผ. ์ค๋ฌด ๊ฒฝํ์ด ํ๋ถํ DevOps ์์ง๋์ด๋ค์ด ๋์ ์ํฉ์ ๋ง๋ ๋ง์ถคํ ์๋ฃจ์
์ ์ ๊ณตํด์ค ์ ์๊ฑฐ๋ !
๐ ๋ค์ ๋จ๊ณ
์ด์ ๋ญ ํด์ผ ํ ๊น?
1๋จ๊ณ: Grafana๋ฅผ ์ค์นํ๊ณ ์ฒซ ๋์๋ณด๋ ๋ง๋ค์ด๋ณด๊ธฐ
2๋จ๊ณ: ์์ ์ ํ๋ก์ ํธ๋ ์๋ฒ์ ์ ์ฉํด๋ณด๊ธฐ
3๋จ๊ณ: ์๋ฆผ ์ค์ ํ๊ณ ์ค์ ๋ก ๋ฌธ์ ๊ฐ์งํด๋ณด๊ธฐ
4๋จ๊ณ: ๊ณ ๊ธ ๊ธฐ๋ฅ๋ค ํ๋์ฉ ์๋ํด๋ณด๊ธฐ
5๋จ๊ณ: ์ปค๋ฎค๋ํฐ์ ์ฐธ์ฌํ๊ณ ๊ฒฝํ ๊ณต์ ํ๊ธฐ
๊ฐ์ฅ ์ค์ํ ๊ฑด ์์ํ๋ ๊ฒ์ด์ผ! ์๋ฒฝํ ํ์ ์์ด. ์ผ๋จ ์์ํ๊ณ , ์กฐ๊ธ์ฉ ๊ฐ์ ํด๋๊ฐ๋ฉด ๋ผ. ๐ช
๋ชจ๋ํฐ๋ง์ ์์ ์ด์ ๊ณผํ์ด์ผ. ๋ฐ์ดํฐ๋ฅผ ์๋ฆ๋ต๊ฒ ์๊ฐํํ๋ฉด์๋, ์ค์ฉ์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ์ฐพ์๋ด์ผ ํ๊ฑฐ๋ . Grafana๋ ์ด ๋ ๊ฐ์ง๋ฅผ ๋ชจ๋ ๋ง์กฑ์์ผ์ฃผ๋ ํ๋ฅญํ ๋๊ตฌ์ผ. ๐จ
์ด ๊ธ์ด ๋์ Grafana ์ฌ์ ์ ๋์์ด ๋์์ผ๋ฉด ์ข๊ฒ ์ด. ์ง๋ฌธ์ด ์๊ฑฐ๋ ๋งํ๋ ๋ถ๋ถ์ด ์๋ค๋ฉด ์ธ์ ๋ ์ปค๋ฎค๋ํฐ์ ๋ฌผ์ด๋ด. ๋ชจ๋๊ฐ ์ฒ์์ ์ด๋ณด์์ผ๋๊น, ๋ถ๋๋ฌ์ํ ํ์ ์์ด! ๐
๊ทธ๋ผ ํ๋ณตํ ๋ชจ๋ํฐ๋ง ๋๊ธธ ๋ฐ๋ผ! Happy Monitoring! ๐
๐ ๋ ๋ง์ DevOps ์ง์์ด ํ์ํ๋ค๋ฉด?
์ฌ๋ฅ๋ท์์ ํด๋ผ์ฐ๋, ์ฟ ๋ฒ๋คํฐ์ค, CI/CD, ๋ชจ๋ํฐ๋ง ๋ฑ
๋ค์ํ DevOps ๋ถ์ผ์ ์ ๋ฌธ๊ฐ๋ฅผ ๋ง๋๋ณด์ธ์!
๊ด๋ จ ํค์๋
๋๊ธ ์์ฑ
์ด ๊ธ์ ๋ํ ์ฌ๋ฌ๋ถ์ ์๊ฐ์ ๋ค๋ ค์ฃผ์ธ์
๋ก๊ทธ์ธ์ด ํ์ํฉ๋๋ค
๋๊ธ์ ์์ฑํ๋ ค๋ฉด ๋จผ์ ๋ก๊ทธ์ธํด์ฃผ์ธ์.
๋๊ธ 0
์ง์์ธ์ ์ฒ - ์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
- ์ ์๊ถ ๋ฐ ์์ ๊ถ: ๋ณธ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ๋ ์ AI ๊ธฐ์ ๋ก ์์ฑ๋์์ผ๋ฉฐ, ๋ํ๋ฏผ๊ตญ ์ ์๊ถ๋ฒ ๋ฐ ๊ตญ์ ์ ์๊ถ ํ์ฝ์ ์ํด ๋ณดํธ๋ฉ๋๋ค.
- AI ์์ฑ ์ปจํ ์ธ ์ ๋ฒ์ ์ง์: ๋ณธ AI ์์ฑ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ์ง์ ์ฐฝ์๋ฌผ๋ก ์ธ์ ๋๋ฉฐ, ๊ด๋ จ ๋ฒ๊ท์ ๋ฐ๋ผ ์ ์๊ถ ๋ณดํธ๋ฅผ ๋ฐ์ต๋๋ค.
- ์ฌ์ฉ ์ ํ: ์ฌ๋ฅ๋ท์ ๋ช ์์ ์๋ฉด ๋์ ์์ด ๋ณธ ์ปจํ ์ธ ๋ฅผ ๋ณต์ , ์์ , ๋ฐฐํฌ, ๋๋ ์์ ์ ์ผ๋ก ํ์ฉํ๋ ํ์๋ ์๊ฒฉํ ๊ธ์ง๋ฉ๋๋ค.
- ๋ฐ์ดํฐ ์์ง ๊ธ์ง: ๋ณธ ์ปจํ ์ธ ์ ๋ํ ๋ฌด๋จ ์คํฌ๋ํ, ํฌ๋กค๋ง, ๋ฐ ์๋ํ๋ ๋ฐ์ดํฐ ์์ง์ ๋ฒ์ ์ ์ฌ์ ๋์์ด ๋ฉ๋๋ค.
- AI ํ์ต ์ ํ: ์ฌ๋ฅ๋ท์ AI ์์ฑ ์ปจํ ์ธ ๋ฅผ ํ AI ๋ชจ๋ธ ํ์ต์ ๋ฌด๋จ ์ฌ์ฉํ๋ ํ์๋ ๊ธ์ง๋๋ฉฐ, ์ด๋ ์ง์ ์ฌ์ฐ๊ถ ์นจํด๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
์์ง ๋๊ธ์ด ์์ต๋๋ค.