指标多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 /访问。