分享好友 最新动态首页 最新动态分类 切换频道
Docker 容器监控Cadvisor+Prometheus+Grafana
2024-12-26 23:05

Docker 容器监控Cadvisor+Prometheus+Grafana

监控系统概述

cAdvisor (Container Advisor) :用于收集正在运行的容器资源使用和性能信息。​​stats的问题(存储、展示),谷歌开源的cadvisor诞生了,cadvisor不仅可以搜集一台机器上所有运行的容器信息,还提供基础查询界面和+ Prometheus + grafna搭配使用。

cAdvisor可以对节点机器上的资源及容器进行实时监控和性能数据采集,包括CPU使用情况、内存使用情况、网络吞吐量及文件系统使用情况

Cadvisor使用Go语言开发,利用Linux的cgroups获取容器的资源使用信息,在K8S中集成在Kubelet里作为默认启动项,官方标配。

谷歌开发的容器资源采集信息,cadvisor也用到了k8s当中,采集pod容器信息。

运行cadvisor以docker容器的方式运行,运行起来就可以通过ip 端口进行访问了

docker run -d --volume=/:/rootfs:ro --volume=/var/run:/var/run:ro --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --volume=/dev/disk/:/dev/disk:ro --publish=8080:8080 --detach=true --name=cadvisor google/cadvisor:latest

Cadviosr是Google用来监测单节点的资源信息的监控工具。虽然Docker提供了一些CLI的命令行的功能,但是在一个看图的时代,基本的功能是很难满足人民群众日益增长的物质文化需求,Cadvisor提供了一目了然的单节点多容器的资源监控功能。Google的Kubernetes中也缺省地将其作为单节点的资源监控工具,各个节点缺省会被安装上Cadvisor。在免费的世界里,Cadvisor作为一个很不错的工具,越来越多的引起很多人过渡性的关注。

安装

使用二进制部署

下载二进制: -port=8080 &>>/var/log/cadvisor.log

使用docker部署

docker run -d --volume=/:/rootfs:ro --volume=/var/run:/var/run:ro --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --volume=/dev/disk/:/dev/disk:ro --publish=8080:8080 --detach=true --name=cadvisor google/cadvisor:latest[root@localhost ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESafd8196a70d8 google/cadvisor:latest "/usr/bin/cadvisor -…" 4 minutes ago Up 4 minutes 0.0.0.0:8080->8080/tcp 注意:在Ret Hat,CentOS, Fedora 等发行版上需要传递如下参数,因为 SELinux 加强了安全策略:--privileged=true 启动后访问:的主要功能,总结起来主要两点:

展示 Host 和容器两个层次的监控数据展示历史变化数据

由于 cAdvisor 提供的操作界面略显简陋,而且需要在不同页面之间跳转,并且只能监控一个 host,这不免会让人质疑它的实用性。但 cAdvisor 的一个亮点是它可以将监控到的数据导出给第三方工具,由这些工具进一步加工处理。

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

下图为cAdvisor的web界面,数据实时刷新但是不能存储。

Docker container详细信息

整体使用状况

CPU详细状况

内存详细状况

Network

FileSystem和Subcontainer

Cad实际上暴露的普罗米修斯的指标,也就是要被普罗米修斯监控,那么暴露出来的指标要符合普罗米修斯的指标格式,下面是要搭建监控系统,普罗米修斯在任何机器部署也行,主要能够从advisor里面获取数据即可

可以看到这就是cad暴露的指标,这些指标可以被普罗米修斯识别认可的。如果时其他格式就识别不了不能存储,这些指标由指标名称和标签,也就是key value的形式体现的。标签越多监控的维度越多。

Prometheus(普罗米修斯)

随着容器技术的迅速发展,Kubernetes 已然成为大家追捧的容器集群管理系统。Prometheus 作为生态圈 Cloud Native Computing Foundation(简称:CNCF)中的重要一员,其活跃度仅次于 Kubernetes, 现已广泛用于 Kubernetes 集群的监控系统中。Prometheus 简介 Prometheus 是一套开源的系统监控报警框架。它启发于 Google 的 borgmon 监控系统,由工作在 SoundCloud 的 google 前员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式发布。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,成为受欢迎度仅次于 Kubernetes 的项目。 作为新一代的监控框架,Prometheus 具有以下特点:     强大的多维度数据模型:

时间序列数据通过 metric 名和键值对来区分。所有的 metrics 都可以设置任意的多维标签。数据模型更随意,不需要刻意设置为以点分隔的字符串。可以对数据模型进行聚合,切割和切片操作。支持双精度浮点类型,标签可以设为全 unicode。

灵活而强大的查询语句(PromQL):在同一个查询语句,可以对多个 metrics 进行乘法、加法、连接、取分数位等操作。     易于管理: Prometheus server 是一个单独的二进制文件,可直接在本地工作,不依赖于分布式存储。     高效:平均每个采样点仅占 3.5 bytes,且一个 Prometheus server 可以处理数百万的 metrics。     使用 pull 模式采集时间序列数据,这样不仅有利于本机测试而且可以避免有问题的服务器推送坏的 metrics。     可以采用 push gateway 的方式把时间序列数据推送至 Prometheus server 端。     可以通过服务发现或者静态配置去获取监控的 targets。     有多种可视化图形界面。     易于伸缩。 需要指出的是,由于数据采集可能会有丢失,所以 Prometheus 不适用对采集数据要 100% 准确的情形。但如果用于记录时间序列数据,Prometheus 具有很大的查询优势,此外,Prometheus 适用于微服务的体系架构 Prometheus 组成及架构 Prometheus 生态圈中包含了多个组件,其中许多组件是可选的:

Prometheus Server: 用于收集和存储时间序列数据。Client Library: 客户端库,为需要监控的服务生成相应的 metrics 并暴露给 Prometheus server。当 Prometheus server 来 pull 时,直接返回实时状态的 metrics。Push Gateway: 主要用于短期的 jobs。由于这类 jobs 存在时间较短,可能在 Prometheus 来 pull 之前就消失了。为此,这次 jobs 可以直接向 Prometheus server 端推送它们的 metrics。这种方式主要用于服务层面的 metrics,对于机器层面的 metrices,需要使用 node exporter。Exporters: 用于暴露已有的第三方服务的 metrics 给 Prometheus。Alertmanager: 从 Prometheus server 端接收到 alerts 后,会进行去除重复数据,分组,并路由到对收的接受方式,发出报警。常见的接收方式有:电子邮件,pagerduty,OpsGenie, webhook 等。一些其他的工具。

Prometheus 架构图

cadvisor 与 Prometheus 集成

主要内容:

cadvisor 与 Prometheus 集成在 Prometheus 中查看容器的 CPU,内存,网络流量等信息

数据的采集从agent采集,也即是cadvisor存储的数据采集起来,通过普罗米修斯的简单UI查看里面的数据

Step1:启动简单启动容器和端口就可以

[root@localhost ~]# docker run -d --name=prometheus -p 9090:9090 prom/prometheus9bb7d60a70269a8c314794ff822dfec25d7c9230e1f5a19e5553cbf6f2a3c6e7[root@localhost ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES9bb7d60a7026 prom/prometheus "/bin/prometheus --c…" 10 seconds ago Up 6 seconds 0.0.0.0:9090->9090/tcp prometheusafd8196a70d8 google/cadvisor:latest "/usr/bin/cadvisor -…" 18 minutes ago Up 18 minutes 0.0.0.0:8080->8080/tcp cadvisor

Step2: 修改 Prometheus 配置信息,添加 cadvisor 访问地址:

现在要实现通过普罗米修斯收集cad采集的数据,现在部署的这两个组件时没有任何关系的,即普罗米修斯还没有去采集cad的数据。

被监控端有两个概念,一个时job分组,比如web服务器是一组,mysql是一组,这样在使用promql的时候就可以筛选分组。

[root@localhost ~]# docker exec -it prometheus sh/prometheus $ vi /etc/prometheus/prometheus.yml scrape_configs: - job_name: 'prometheus' # metrics_path defaults to '/metrics' # scheme defaults to ' static_configs: - targets: ['localhost:9090'] - job_name: 'webserver' basic_auth: username: prometheus password: 123456 static_configs: - targets: ['192.168.179.99:9100'] - job_name: 'docker' static_configs: - targets: ['192.168.179.99:8080','192.168.179.100:8080']#这样就添加了被监控端

如果要添加多个

- targets: ['192.168.179.99:8080','xxx.xxx.xxx.xxx']

Step3: 重新加载配置,访问 ​​~]# docker restart prometheusPrometheus

Step4: 此时访问 Prometheus 的 graph 页面 ​​------> 普罗米修斯主动去从cadvisor里面去采集(数据收集与存储) ------> grafana展示(从普罗米修斯里面可视化展示)

问题 如果仪表不出数据

时间没有同步,被采集单数据的时间要和监控服务器的时间保持一致或者promql写的有问题,可能普罗米修斯版本和grafana版本不兼容普罗米修斯里面没有数据


最新文章
谷歌SEO中,搜索引擎偏爱的网站,有哪些良好表现迹象?
在如今互联网信息爆炸的时代,网站的可见性和排名对于企业的在线业务目标至关重要。作为一位在SEO领域摸爬滚打多年的从业者,我深知谷歌SEO的重要性及其复杂性。基于我对行业的深刻理解以及丰富的实战经验,我发现搜索引擎偏爱的网站总能在
超逼真美女写真生成指南:用AI工具轻松打造梦幻女友!
限时免费,点击体验最近超火的AI生图神器,坐拥3000美女的大男主就是你! https://ai.sohu.com/pc/generate/textToImg?_trans_=030001_yljdaimn 在当今社交媒体盛行的时代,照片编辑和个性化变得越来越重要。尤其是在展示个人形象时,越来
免费的视频制作软件有哪些 高人气视频制作app合集
目前各种短视频应用给创作者提供广阔平台,能在这里真正展现自己,将个人的才艺分享给全世界,视频制作软件也成为必备工具,可添加背景音乐,添加视频素材及转场特效。简单易用的模式,无需专业技术就能轻松设计,为小伙伴们总结几款。1、
想在WordPress中嵌入YouTube播放列表?按照我们的循序渐进的教程,如何嵌入您的YouTube播放列表与缩略图,不需要代码。
你想在你的WordPress网站上嵌入YouTube播放列表吗?将YouTube播放列表添加到您的博客文章和登陆页面可以增加用户参与度并改善您的搜索引擎优化(SEO)。它也有助于获得更多的订阅者和发展你的频道。嵌入YouTube内容有很多好处:有几种不同的方
百度搜索框提示怎么用
  百度会根据您的输入内容,在搜索框下方实时展示最符合的提示词。您只需用鼠标点击您想要的提示词,或者用键盘上下键选择您想要的提示词并按回车,就会返回该词的查询结果。 您不必再费力地敲打键盘即可轻松地完成查询。  您输入拼音
淘宝商品监管15天是什么意思?原因是什么?(淘宝商品监管能恢复吗)
淘宝平台中的规则非常多,各位淘宝商家们需要遵守规则才行,如果出现了围观的行为,可能会导致店铺被监管哦,那么淘宝商品监管15天是什么意思?下面进行解答。淘宝商品监管15天是什么意思?1、账号被盗是店铺被监管的原因之一。2、商品的宝贝
规则引擎 Aviator&Drools&&Mvel&EasyRules
(2) 支持函数调用和自定义函数(3) 支持正则表达式匹配,类 Ruby 的指向匹配分组、自动类型转换 注:当执行操作时,会自动判断操作数类型并做相应转换,无法转换即抛异常(4) 支持传入变量,支持类似的嵌套变
优化大师软件有哪些 下载量高的优化大师软件排行榜
探索电脑性能优化的秘密!本文带你深入了解备受用户喜爱的优化大师软件,我们将揭示下载量排行榜上前几名的高效工具。无论是系统清理、速度提升还是个性化设置,这些热门软件无所不能。点击链接,一探究竟,让你的设备运行如飞!金山卫士网
更多UC浏览器安卓历史版本(10个)
精彩资讯一刷即有,热门头条轻松掌握。厂商联系方式:客服热线:020-66826682官方网站:https://www.uc.cn/官方微博:@UChttps://weibo.com/iucmobile官方微信:UCofficial客服微信:ucwebkfUC浏览器,一般又称UC手机浏览器,ucweb浏览器,ucw
盈科律师张晴花式炫富获封年度逼王 北大学历合伙人身份造假
  秦巴娱乐1月10日讯作为一名合格的吃瓜群众,不管是娱乐圈、金融圈还是其他什么圈的瓜,我们都要跟上,今天的瓜是律师圈的。说起盈科律师事务所,想必经历过逼死程序员老公这则新闻的人都知道,当事人翟欣欣的代理律师易胜华就是这家律
相关文章
推荐文章
发表评论
0评