[k8s]容器化node-expolore(9100)+cadvisor(8080)+prometheus(9090) metric蒐集,grafana展現

Prometheus 的核心,多維數據模型

傳統監控工具統計數據方式

指標多node

- 需求1,統計app1-3,的(總)內存,則定義3個指標

container.memory_usage_bytes.webapp*     - 獲取值
    container.memory_usage_bytes.webapp1 - 定義指標,蒐集app1
    container.memory_usage_bytes.webapp2 - 定義指標,蒐集app2
    container.memory_usage_bytes.webapp3 - 定義指標,蒐集app3
例如: Graphite函數
sum(container.memory_usage_bytes.webapp*)- 求app1-3總佔內容


- 需求2: 對比一下某一組容器在生產環境和測試環境中對內存使用的不一樣

container.memory_usage_bytes.webapp1.test
container.memory_usage_bytes.webapp1.prod

Prometheus多維數據模型

定義多列,經過PromQL來組合數據,聚合能力超強悍.web

好比對於前面 webapp1 的三條取樣數據,轉換成 Prometheus 多維數據將變成:

後面三列 container_name、image、env 就是數據的三個維度。docker

若是不一樣 env(prod、test、dev),不一樣 image(mycom/webapp:1.二、mycom/webapp:1.3)的容器,它們的內存使用數據中標註了這三個維度信息,那麼將能知足不少業務需求,好比:

1.計算 webapp2 的平均內存使用狀況
avg(container_memory_usage_bytes{container_name=「webapp2」})

2.計算運行 mycom/webapp:1.3 鏡像的全部容器內存使用總量:
sum(container_memory_usage_bytes{image=「mycom/webapp:1.3」})

3.統計不一樣運行環境中 webapp 容器內存使用總量:
sum(container_memory_usage_bytes{container_name=~「webapp」}) by (env)

容器指標數據收集利器 cAdvisor

  • 展現 Host 和容器兩個層次的監控數據。
  • 展現歷史變化數據json

  • cAdvisor 的一個亮點是它能夠將監控到的數據導出給第三方工具,由這些工具進一步加工處理。
  • cAdvisor 定位爲一個監控數據收集器,收集和導出數據是它的強項,而非展現數據。api

- 運行cadvisor蒐集容器指標
docker run \
  -v=/:/rootfs:ro \
  -v=/var/run:/var/run:rw \
  -v=/sys:/sys:ro \
  -v=/dev/disk/:/dev/disk:ro \
  -v=/var/lib/docker/:/var/lib/docker:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  google/cadvisor

訪問: http://192.168.14.11:8080/metrics
app

其本質上也是一個容器的metric api對接代碼集.webapp

node-expolore(9100)+cadvisor(8080)+prometheus(9090) metric蒐集,grafana展現

- 運行node-expolore容器監聽9100
經過: http://192.168.14.11:9100/metrics可訪問

docker run -d -p 9100:9100 \
  -v "/proc:/host/proc" \
  -v "/sys:/host/sys" \
  -v "/:/rootfs" \
  --net=host \
  prom/node-exporter \
  --path.procfs /host/proc \
  --path.sysfs /host/sys \
  --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"


- 運行cadvisor,監聽8080
經過: http://192.168.14.11:8080/metrics可訪問

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

- 運行prometheus
經過: http://192.168.14.11:9090/metrics可訪問

docker run -d -p 9090:9090 \
  -v /root/prometheus.yml:/etc/prometheus/prometheus.yml \
  --name prometheus \
  --net=host \
  prom/prometheus


- 運行grafana容器
docker run -d -i -p 3000:3000 \
  -e "GF_SERVER_ROOT_URL=http://192.168.14.11"  \
  -e "GF_SECURITY_ADMIN_PASSWORD=admin"  \
  --net=host \
  grafana/grafana

添加數據源
https://grafana.com/dashboards?dataSource=prometheus&search=docker 有不少docker的dashboard

好比下載 Docker and system monitoring,獲得一個 json 文件,而後點擊 Grafana 左上角菜單 Dashboards -> Import。

獲得以下效果圖:

docker安裝普羅

- 直接啓動
docker run --name prometheus -d -p 9090:9090 quay.io/prometheus/prometheus


- 須要預置配置文件
docker run -p 9090:9090 -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml \
       -v /tmp/prometheus-data:/prometheus-data \
       prom/prometheus

- 訪問
http://localhost:9090 /訪問。
相關文章
相關標籤/搜索