[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 /访问。

原文地址:https://www.cnblogs.com/iiiiher/p/8252623.html

时间: 2024-11-10 15:57:52

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

kubernetes实战(九):k8s集群动态存储管理GlusterFS及容器化GlusterFS扩容

1.准备工作 所有节点安装GFS客户端 yum install glusterfs glusterfs-fuse -y 如果不是所有节点要部署GFS管理服务,就在需要部署的节点上打上标签 [[email protected] ~]# kubectl label node k8s-node01 storagenode=glusterfs node/k8s-node01 labeled [[email protected]-master01 ~]# kubectl label node k8s-no

Docker+Kubernetes(k8s)微服务容器化实践

Docker+Kubernetes(k8s)微服务容器化实践网盘地址:https://pan.baidu.com/s/1uVkMsKgfzsJcShlnuLk3ZQ 密码:1i7q备用地址(腾讯微云):https://share.weiyun.com/5ZcsfIX 密码:udrifz Docker官方支持Kubernetes, Kubernetes是容器编排最大赢家,Kubernetes 以其高效.简便.高水平的可移植性等优势占领了绝大部分市场,江湖一哥地位毋庸置疑,脱胎于谷歌的成熟的Borg

Kubernetes 集群的两种部署过程(daemon部署和容器化部署)以及glusterfs的应用!

ClusterIp:通过VIP来访问, NodePort: 需要自己搭建负载据衡器 LoadBalancer:仅仅用于特定的云提供商 和 Google Container Engine https://www.nginx.com/blog/load-balancing-kubernetes-services-nginx-plus/ port:相当于服务端口(对及集群内客户访问) targetPort: 相当于pods端口 nodePort: 宿主机端口(也是服务端口,只不过是对集群外客户访问)

docker stack 部署容器监控方案(cAdvisor、Prometheus、Grafana)

=============================================== 2018/7/8_第1次修改                       ccb_warlock =============================================== 最近正式业务终于开始上容器,虽然前期通过swarm解决了服务部署和扩展等问题,但是针对容器监控方面缺乏经验甚至是无从入手,因为没有监控数据我根本不知道目前给的资源限制是否合理,业务量激增的时候资源是否可以支撑负

容器化微服务

本文是<Java Rest Service实战>的容器化服务章节实验记录.使用的基础环境ubuntu 16.04 LTS,实验中的集群都在一个虚拟机上,其实质是伪集群,但对于了解搭建的基本方法已经满足基本要求了. 一.构建Zookeeper容器集群 1. 定义Dockerfile FROM index.tenxcloud.com/docker_library/java MAINTAINER HaHa#事先下载好zookeeper COPY zookeeper-3.4.8.tar.gz /tmp

JENKINS管道部署容器化初探

目标服务器安装docker参考官方文档 https://docs.docker.com/install/linux/docker-ce/centos/ (可选)在目标服务器上安装docker私服 https://docs.docker.com/registry/ 目标服务器启动jenkinsdocker镜像容器 https://hub.docker.com/r/jenkinsci/blueocean/ 创建dockerfile进行后端编译环境的镜像搭建 参考官方教程:https://jenkin

极简容器化交付 | 部署组件分析

之前给大家讲了构建镜像的原理,那么有了镜像之后,我们怎么样能将它快速的部署到kuberentes集群上呢? 早期,大家都习惯于使用kubernetes接口,或者cli命令行来完成这些操作,但是yaml文件语法的复杂性.大量容器和kuernetes的概念,让人难以理解,无疑成为容器化交付路上的又不障碍. 为了解决这些问题,华为云容器服务推出了向导式镜像部署,通过一步步引导.对复杂概念的屏蔽或抽象,在一定程度上降低了用户首次部署镜像的难度,但是灵活度相对较差,对于经常变更版本的场景,还是需要使用原生

helm的使用和redis、mq等公共组件的容器化实践

Helm的使用 1. Helm简介: 1. Helm的概念   Helm是Kubernetes的一个包管理工具,用来简化Kubernetes应用的部署和管理.可以把Helm比作CentOS的yum工具.  Helm有如下几个基本概念: Chart: 是Helm管理的安装包,里面包含需要部署的安装包资源.可以把Chart比作CentOS yum使用的rpm文件.每个Chart包含下面两部分: 包的基本描述文件Chart.yaml 放在templates目录中的一个或多个Kubernetes man

K8s容器编排

K8s容器编排 Kubernetes具有完备的集群管理能力: 包括多层次的安全防护和准入机制 多租户应用支撑能力 透明的服务注册和服务发现机制 内建智能负载均衡器 强大的故障发现和自我修复能力 服务滚动升级和在线扩容能力 可扩展的资源自动调度机制 以及多粒度的资源管理能力 Pod是在K8s集群中运行部署应用或服务的最小单元,它是可以支持多容器的.Pod的设计理念是支持多个容器在一个Pod中共享网络地址和文件系统,可以通过进程间通信和文件共享这种简单高效的方式组合完成服务.Pod对多容器的支持是K