指標多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
定義多列,經過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)
展現歷史變化數據json
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 經過: 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 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 /訪問。