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

Posted 毛台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[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 /访问。

以上是关于[k8s]容器化node-expolore(9100)+cadvisor(8080)+prometheus(9090) metric搜集,grafana展示的主要内容,如果未能解决你的问题,请参考以下文章

关于容器化以及 k8s 的一点个人思考

64 k8s + rancher + karmada容器化部署

混合云K8s容器化应用弹性伸缩实战

混合云K8s容器化应用弹性伸缩实战

kubernetes-8:kibana容器化

61 k8s + rancher + karmada容器化部署