์ธํ”„๋ผ

[Grafana] ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์˜ ์‹ค์‹œ๊ฐ„ ์‚ฌ์šฉ๋ฅ ์„ ๊ทธ๋ผํŒŒ๋‚˜๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ธฐ(feat. Cadvisor exporter)

THE NICOLE 2025. 4. 16. 13:45

ํšŒ์‚ฌ์—์„œ ๊ทธ๋ผํŒŒ๋‚˜๋ฅผ  ์‚ฌ์šฉํ•˜์—ฌ ์šด์˜ ์„œ๋ฒ„์˜ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ํ•˜๊ณ  ์žˆ๋‹ค.

 

node exporter๋กœ ์šด์˜ ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ๋งค์ผ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๋ฉ”๋ชจ๋ฆฌ๋‚˜ ๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๊ธ‰์ฆํ–ˆ์„ ๋•Œ ์‹ค์ œ๋กœ ์–ด๋–ค ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์˜ํ–ฅ์„ ์ฃผ๋Š”์ง€ ๋ฐ”๋กœ ์•Œ๊ณ  ์‹ถ์—ˆ๋‹ค. (ํ˜„์žฌ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ๋‹ค)

 

์‹ค์ œ๋กœ ๊ทธ๋ผํŒŒ๋‚˜์—์„œ ํ™•์ธํ•˜๊ธฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ 10%๊ฐ€ ์ฆ๊ฐ€ํ–ˆ๋Š”๋ฐ, ๋„๋Œ€์ฒด ์–ด๋–ค ์นœ๊ตฌ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ 10% ๋จน์€๊ฑฐ์•ผ?! ใ…ก.ใ…ก ์‹ถ์–ด์„œ ์„œ๋ฒ„ ๋กœ๊ทธ๋ฅผ sar ๋“ฑ ๋ช…๋ น์–ด๋กœ ๋’ค์ ธ๋ด๋„ ๋ช…ํ™•ํ•˜์ง€ ์•Š์•˜๊ณ  ์ €๋ฒˆ์ฃผ ๋กœ๊ทธ๋Š” ์ฐพ๊ธฐ๋„ ์–ด๋ ค์› ๋‹ค ใ… ใ…  ์–ด๋ ค์šด ๋””๋ฒ„๊น… .....๐Ÿ’ข

 

๊ทธ๋ž˜์„œ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋„์ปค์˜ ์‚ฌ์šฉ๋Ÿ‰์„ ์ ์žฌํ•˜๊ณ  ๋ชจ๋‹ˆํ„ฐ๋ง ํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค...!

 

์ฐพ์•„๋ณด๋‹ˆ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์˜ ๋ฉ”ํŠธ๋ฆญ์„ ์ถ”์ถœํ•ด์ฃผ๋Š” cadvisor ๋ผ๋Š” ์ต์Šคํฌํ„ฐ๊ฐ€ ์žˆ์—ˆ๊ณ , ๋ฐ”๋กœ ์ ์šฉํ•ด์„œ ๊ทธ๋ผํŒŒ๋‚˜์™€ ์—ฐ๋™ํ•ด๋ดค๋‹ค.

 

cadvisor ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋„์šฐ๊ณ  ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค์— ํƒ€๊ฒŸ์„ ๊ธฐ๋กํ•œ ๋‹ค์Œ, ๊ทธ๋ผํŒŒ๋‚˜์— ํ•ด๋‹น ํ…œํ”Œ๋ฆฟ์„ importํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค. ํ•˜๋‚˜์”ฉ ์ •๋ฆฌํ•ด๋ณด๊ฒ ๋‹ค. 

 

1. cadvisor ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋™

docker run \\
  --volume=/:/rootfs:ro \\
  --volume=/var/run:/var/run:ro \\
  --volume=/sys:/sys:ro \\
  --volume=/var/lib/docker/:/var/lib/docker:ro \\
  --publish=8080:8080 \\
  --detach=true \\
  --name=cadvisor \\
  google/cadvisor:latest

 

 

2. ๊ทธ๋ผํŒŒ๋‚˜ ์„ค์ • ํŒŒ์ผ์— ํƒ€๊ฒŸ ์ถ”๊ฐ€

ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค๋ฅผ ๋„์ปค๋กœ ๋„์› ๊ธฐ ๋•Œ๋ฌธ์— docker ์ปจํ…Œ์ด๋„ˆ ์•ˆ์œผ๋กœ ๋“ค์–ด๊ฐ€์„œ prometheus.yml์— ํƒ€๊ฒŸ์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์ถ”๊ฐ€ํ•˜๊ณ  ์žฌ์‹œ์ž‘ํ•ด์ค€๋‹ค. 

docker exec -it prometheus bash
vi /opt/bitnami/prometheus/conf/prometheus.yml
scrape_configs:
  - job_name: 'cadvisor'
    static_configs:
      - targets: ['{์„œ๋ฒ„์•„์ดํ”ผ}:{ํฌํŠธ}']
docker restart prometheus

 

 

์ „์ฒด prometheus.yml ์ฐธ๊ณ 

# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["192.168.2.54:9090"]

  # add10
  - job_name: "cadvisor_1"
    static_configs:
      - targets: ["192.168.2.54:8080"]
      
  # add11
  - job_name: "cadvisor_2"
    static_configs:
      - targets: ["192.168.2.55:8081"]

  # add12
  - job_name: "cadvisor_3"
    static_configs:
      - targets: ["192.168.2.53:8080"]

  # add13
  - job_name: "cadvisor_4"
    static_configs:
      - targets: ["192.168.2.52:8080"]
      
  # add14
  - job_name: "cadvisor_5"
    static_configs:
      - targets: ["192.168.2.51:8080"]

 

 

prometheus UI (http://{ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์ŠคURL}:9090/) ์— ๋“ค์–ด๊ฐ€์„œ Graph๋กœ ๋“ค์–ด๊ฐ€๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฉ”ํŠธ๋ฆญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฒ€์ƒ‰๋„ ๊ฐ€๋Šฅ.

 

 

3. ๊ทธ๋ผํŒŒ๋‚˜ ์—ฐ๋™

 

cadvisor exporter ํ…œํ”Œ๋ฆฟ์€ ์•„๋ž˜ ๋Œ€์‹œ๋ณด๋“œ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ–ˆ๋‹ค. ํ…œํ”Œ๋ฆฟ ID ๋Š” 14282์ด๊ณ , import ๋กœ ์ถ”๊ฐ€ํ–ˆ๋‹ค. 

https://grafana.com/grafana/dashboards/14282-cadvisor-exporter/

 

Cadvisor exporter | Grafana Labs

Simple set of several graphs. Just for getting Cadvisor’s metrics only Set includes: CPU Usage by containerMemory UsageMemory CachedReceived Network TrafficSent Network Traffic And a table with info: LabelWorking dirServiceRegistry ImageInstanceNameRunni

grafana.com

 

 

๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰์€ ์—†์–ด์„œ ์ง์ ‘ ๋ฉ”ํŠธ๋ฆญ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ชจ๋‹ˆํ„ฐ๋ง UI๋ฅผ ์™„์„ฑํ–ˆ๋‹ค. 

 

WOW..!

 

์‹ค์‹œ๊ฐ„์œผ๋กœ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๋“ค์˜ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ‘œ์‹œ๋œ๋‹ค. 

์ด์ œ ํŠน์ • ์‹œ๊ฐ„์— ์–ด๋–ค ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ด์ƒ์ƒํƒœ์— ์žˆ์—ˆ๋Š”์ง€ ์›์ธ์„ ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค. (๊ฐ๊ฒฉ๐Ÿ˜ญ)

๋””๋ฒ„๊น…์ด ํ•œ๊ฒฐ ์‰ฌ์›Œ์งˆ ๊ฒƒ ๊ฐ™๋‹ค. 

 

๋™๋ฃŒ๋“ค๋„ ๋„ˆ๋ฌด ์ข‹๋‹ค๋ฉฐ ์ข‹์•„ํ–ˆ๋‹คใ…Žใ…Žใ…Ž

 

Cadvisor exporter ์™„์ „ ์ถ”์ฒœ~~