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

Prometheus 的核心,多维数据模型

传统监控工具统计数据方式

指标多

- 需求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来组合数据,聚合能力超强悍.

比如对于前面 webapp1 的三条取样数据,转换成 Prometheus 多维数据将变成:

后面三列 container_name、image、env 就是数据的三个维度。

如果不同 env(prod、test、dev),不同 image(mycom/webapp:1.2、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 和容器两个层次的监控数据。

  • 展示历史变化数据

  • cAdvisor 的一个亮点是它可以将监控到的数据导出给第三方工具,由这些工具进一步加工处理。

  • cAdvisor 定位为一个监控数据收集器,收集和导出数据是它的强项,而非展示数据。

- 运行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

其本质上也是一个容器的metric api对接代码集.

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 /访问。
posted @ 2018-01-09 17:29  _毛台  阅读(989)  评论(0编辑  收藏  举报