[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部署示例进一步理解容器化编排技术的强大
概念 Kubernetes,也称为K8s,生产级别的容器编排系统,是一个用于自动化部署.扩展和管理容器化应用程序的开源系统.K8s是一个go语言开发,docker也是go语言开发,可见go语言的是未来 ...
- Spring Boot 项目转容器化 K8S 部署实用经验分享
转载自:https://cloud.tencent.com/developer/article/1477003 我们知道 Kubernetes 是 Google 开源的容器集群管理系统,它构建在目前流 ...
- 容器监控告警方案(cAdvisor + nodeExporter + alertmanager + prometheus +grafana)
一.prometheus基本架构 Prometheus 是一套开源的系统监控报警框架.它启发于 Google 的 borgmon 监控系统,由工作在 SoundCloud 的 google 前员工在 ...
- docker stack 部署容器监控方案(cAdvisor、Prometheus、Grafana)
=============================================== 2018/7/8_第1次修改 ccb_warlock === ...
- K8s容器资源限制
在K8s中定义Pod中运行容器有两个维度的限制: 1. 资源需求:即运行Pod的节点必须满足运行Pod的最基本需求才能运行Pod. 如: Pod运行至少需要2G内存,1核CPU 2. 资源限额: ...
- 国内最具影响力科技创投媒体36Kr的容器化之路
本文由1月19日晚36Kr运维开发工程师田翰明在Rancher技术交流群的技术分享整理而成.微信搜索rancher2,添加Rancher小助手为好友,加入技术群,实时参加下一次分享~ 田翰明,36Kr ...
- 容器化时代我们应当选择Kubernetes
前天发的文章<基于Kubernetes 构建.NET Core 的技术体系>,有同学问.NET Core上有Spring Cloud类似的平台吗? .NET Core出现这么久了,这个为云 ...
- 1. 容器化部署一套云服务 第一讲 Jenkins(Docker + Jenkins + Yii2 + 云服务器))
容器化部署一套云服务系列 1. 容器化部署一套云服务之Jenkins 一.购买服务器 服务器
- 【运维技术】JENKINS管道部署容器化初探
目标服务器安装docker参考官方文档 https://docs.docker.com/install/linux/docker-ce/centos/ (可选)在目标服务器上安装docker私服 ht ...
随机推荐
- C#.NET常见问题(FAQ)-interface接口如何理解
个人把interface理解为一种比较特殊的判断技巧,不是常规的变量类型比如判断字符串,判断数组,而是判断类的实例是否拥有某些属性或者方法(比如有十个女的穿一样的衣服,头上盖住,让新郎去猜哪一个是他的 ...
- 强大的json工具:fastJson
fastJson FastJSON是一个很好的java开源json工具类库,相比其他同类的json类库,它的速度的确是fast,最快!但是文档做得不好,在应用前不得不亲测一些功能. 实际上其他 ...
- STL - Unorderedset - 自定义哈希函数
1. hash工具类 hashval.hpp #ifndef _Core_HashVal_H_ #define _Core_HashVal_H_ #include <functional> ...
- MVC第一次访问比较慢的解决方案
一.NGen优化 %WINDIR%\Microsoft.NET\Framework64\v4.0.30319\ngen install EntityFramework.Core.dll %WINDIR ...
- List(T)类的方法
List<T>.Clear 方法 List<T>.RemoveAll 方法 http://msdn.microsoft.com/zh-cn/library/s6hkc2c4(v ...
- Android bluetooth介绍(三): 蓝牙扫描(scan)设备分析
关键词:蓝牙blueZ A2DP.SINK.sink_connect.sink_disconnect.sink_suspend.sink_resume.sink_is_connected.sink_ ...
- 〖Linux〗录像桌面视频同时录音
1. 安装依赖的包 sudo apt-get install -y ffmpeg oss-compat alsa-oss 2. 录制桌面视频并录音 aoss ffmpeg -f oss -i /dev ...
- html中文乱码问题的解决
当我试着用html写代码的时候,发现直接保存的文件用浏览器打开时中文显示是乱码的,所以我找了一些解决方法,可是原因不太明白,所以我也就不解释了,能够自己找找原因,以下提供解决方法: 在写的html的第 ...
- 【SPSS】软件介绍
SPSS软件是美国斯坦福大学三位学生1968年研制开发的统计软件,SPSS是Statistical Package for Social Science(社会科学软件统计包)的缩写,2000年SPSS ...
- urlparse模块(专门用来解析URL格式)
# -*- coding: utf-8 -*- #python 27 #xiaodeng #urlparse模块(专门用来解析URL格式) #URL格式: #protocol ://hostname[ ...