【云原生】Prometheus监控Docker指标并接入Grafana

目录

一、前言

二、docker监控概述

2.1 docker常用监控指标

2.2 docker常用监控工具

三、CAdvisor概述

3.1 CAdvisor是什么

3.2 CAdvisor功能特点

3.3 CAdvisor使用场景

四、CAdvisor对接Prometheus与Grafana

4.1 环境准备

4.2 docker部署CAdvisor

4.2.2 docker部署CAdvisor服务

4.2.3 访问界面

4.2.4 访问metrics

4.3 配置Prometheus

4.3.1 修改Prometheus配置文件

4.3.2 重启Prometheus服务

4.3.3 访问Prometheus控制台

4.4 接入Grafana

4.4.1 Grafana官网找一个模板

4.4.2 Grafana配置dashboard模板

五、写在最后


一、前言

docker的规模化使用已经成为当下的趋势,尤其是云原生技术的发展让docker的重要性得到进一步的提升,使用docker部署一些常规的中间件非常方便,不仅大大降低了环境搭建的成本,也能够在一定程度上节省了不少的资源,但是随之而来,也同时出现另一个问题就是尽管docker部署方便,但是一旦机器上部署的docker容器越来越多,如何对它们进行监控呢,毕竟docker也是要吃机器资源的,本文将通过实际案例来说明下如何解决这个问题。

二、docker监控概述

2.1 docker常用监控指标

 

在监控Docker容器时,以下是一些常用的监控指标:

  • CPU使用率

    • 描述:容器的CPU使用百分比。

    • 用途:监控容器是否超出CPU资源限制,识别高负载问题。

  • 内存使用量

    • 描述:容器使用的内存总量和内存限制。

    • 用途:监控内存使用情况,防止内存泄漏或过度使用。

  • 网络流量

    • 描述:容器的网络流入和流出流量。

    • 用途:检测网络瓶颈或异常流量模式。

  • 磁盘I/O

    • 描述:容器的磁盘读写操作量。

    • 用途:监控磁盘性能,避免I/O瓶颈。

  • 文件系统使用量

    • 描述:容器文件系统的总使用空间和可用空间。

    • 用途:确保容器有足够的磁盘空间。

  • 容器状态

    • 描述:容器的运行状态(运行中、停止、重启等)。

    • 用途:监控容器的健康状态,识别崩溃或重启事件。

  • 进程数量

    • 描述:容器内部运行的进程数量。

    • 用途:检测进程异常,防止资源耗尽。

  • 容器日志

    • 描述:容器内部应用程序或系统产生的日志信息。

    • 用途:排查应用程序问题,查看错误和警告信息。

  • 运行时间

    • 描述:容器自启动以来的运行时间。

    • 用途:监控容器的稳定性和正常运行时间。

  • 负载平均值

    • 描述:容器的系统负载平均值。

    • 用途:评估系统负载情况,识别潜在的性能问题。

利用上面这些指标,可以帮助运维人员全面了解容器的健康状况和性能表现,从而进行有效的管理和优化。

2.2 docker常用监控工具

目前市面上也陆陆续续出现了不少关于docker的监控方案,下面列举一些docker常用监控工具

  • cAdvisor

    • Google开发的开源项目,用于收集、聚合、分析容器的资源使用和性能数据。

  • Prometheus

    • 开源的系统和服务监控系统,可与Grafana等配合使用,支持Docker容器的监控和告警。

  • Grafana

    • 开源的数据可视化和监控平台,支持多种数据源,可以与Prometheus等监控工具集成,用于实时监控和数据展示。

  • Datadog

    • 云监控和安全平台,提供Docker容器监控功能,支持自定义仪表盘、告警设置等。

  • Sysdig

    • 提供容器和云环境的监控解决方案,支持Docker和Kubernetes集成,提供实时和历史性能数据。

利用这些工具可以帮助管理员监视Docker容器的资源使用情况、性能指标、日志和事件,有助于优化和管理容器化环境。

三、CAdvisor概述

3.1 CAdvisor是什么

cAdvisor(Container Advisor)是一个由Google开发的开源项目,专为监控Docker容器而设计。它提供了容器级别的资源使用情况和性能指标,帮助用户深入了解每个运行中的容器的运行状态和资源消耗情况。

3.2 CAdvisor功能特点

CAdvisor具有下面的功能特点:

  • 资源使用情况监控

    • cAdvisor能够监控CPU、内存、磁盘和网络的使用情况,并提供实时的性能指标。

  • 容器级别视角

    • 与传统的宿主机监控工具不同,cAdvisor专注于每个独立容器的监控,提供更精细化的数据。

  • 跨平台支持

    • 支持多种容器运行时,如Docker和Kubernetes等,以及多种操作系统。

  • 轻量级和易集成

    • 作为一个轻量级的容器内部监控工具,cAdvisor可以与其他监控系统集成,如Prometheus和Grafana,实现更复杂的监控和报告。

  • Web界面和API支持

    • 通过Web界面和API,用户可以直观地查看和管理监控数据,支持数据的导出和自定义查询。

3.3 CAdvisor使用场景

cAdvisor广泛应用于容器化环境中,特别是Docker和Kubernetes集群中,用于实时监控和性能优化,其功能和特性使其在以下场景中特别有用:

  • 性能调优

    • 通过监控资源使用情况,帮助用户识别和解决性能瓶颈,优化容器应用的性能。

  • 资源管理

    • 确保容器在资源限制下正常运行,避免资源竞争和耗尽问题,提高整体资源利用率。

  • 容器健康检查

    • 监控容器的运行状态和行为,及时发现和处理异常情况,保证容器的可靠性和稳定性。

  • 集成与监控系统

    • cAdvisor作为一个轻量级的容器内部监控工具,能够与其他监控系统(如Prometheus和Grafana)集成,支持更复杂的监控需求和定制报告。

  • 实时监控和报告

    • 通过Web界面和API直观地查看和管理监控数据,支持数据的导出和自定义查询,帮助用户实时了解容器的运行状况和性能表现。

总体来说,cAdvisor为用户提供了深入了解和有效管理容器的能力,是现代容器化部署中不可或缺的重要组成部分。

四、CAdvisor对接Prometheus与Grafana

4.1 环境准备

  • prometheus服务;

    • 参考相关的资料提前部署prometheus;

  • grafana服务;

    • 参考相关的资料提前部署grafana;

  • docker环境;

    • 提前安装docker,可以再在docker中部署几个服务;

4.2 docker部署CAdvisor

为了能够获取到docker容器的运行状态,用户可以通过docker的stats命令获取到当前主机上运行的容器统计指标信息,有点像linux的top命令信息展示,通过这个命令可以查看容器的cpu利用率,内存使用量,网络IO以及磁盘IO等信息。

docker stats

除了使用命令外,还可以通过docker提供的HTTP api查看容器详细统计的监控信息。

4.2.2 docker部署CAdvisor服务

CAdvisor是Google开源的一款用于展示和分析容器运行状态的可视化工具,通过在主机上运行CAdvisor,用户可以轻松获取到当前主机上容器的运行统计信息,并以图表的形式向用户呈现。

执行如下的docker命令安装CAdvisor

docker run -d \
--name=cadvisor \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 \
google/cadvisor:latest

4.2.3 访问界面

容器启动成功后,可以在浏览器通过:IP:8080进行访问,效果如下

往下翻也可以看到一些更详细的图形化指标信息

4.2.4 访问metrics

CAdvisor也暴露了metrics的指标端点,可以在访问的url上添加/metrics查看,如下:

不难理解,既然暴露出了metrics的端点指标接口,就可以通过Prometheus接入之后进行监控

4.3 配置Prometheus

4.3.1 修改Prometheus配置文件

找到Prometheus的yml配置文件,在job的配置中添加CAdvisor的配置job信息,如下:  

- job_name: "cadvisor"scrape_interval: 10smetrics_path: '/metrics'static_configs:- targets: ["公网IP:8080"]

 

4.3.2 重启Prometheus服务

4.3.3 访问Prometheus控制台

浏览器访问Prometheus的监控页面,可以看到CAdvisor就接入进来了

也可以通过链接点进去进一步查看监控的指标信息,和上面看到效果是一致的

4.4 接入Grafana

如何将上述的指标信息更好的呈现出来呢,可以通过在Grafana上配置dashboard,从而以更直观的方式展现,下面看具体的操作步骤;

4.4.1 Grafana官网找一个模板

登录到Grafana官网,搜索docker,找一个关于docker的dashboard,拷贝模板ID,下面会用到:

Grafana dashboards | Grafana Labs

比如这里我拷贝的是11600这个模板ID

4.4.2 Grafana配置dashboard模板

添加导入一个模板

跳转到下面的界面之后,拷贝上面的ID到下面的框中

点击右侧的load按钮,跳转到下面的页面之后,选择本机的Prometheus

最后点击Import按钮进行加载,来到下面的监控页面

这个页面上清楚展示了主机上的容器信息,比如运行中的容器数量,具体某个容器的内存占用情况等,一目了然的可以直观的看到各类关于容器的指标信息。

 

五、写在最后

本文通过操作实践详细接受了使用prometheus监控docker的完整流程,如果正好你的项目中有使用到docker进行服务部署需要做监控的时,可以作为参考,本文到此结束感谢观看。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/867858.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java探索之旅】初识多态_概念_实现条件

文章目录 📑前言一、多态1.1 概念1.2 多态的实现条件 🌤️全篇总结 📑前言 多态作为面向对象编程中的重要概念,为我们提供了一种灵活而强大的编程方式。通过多态,同一种操作可以应用于不同的对象,并根据对象…

el-table 树形数据与懒加载 二级数据不展示

返回的数据中 children和hasChildren只能有一个,不能同时存在,否则加载数据会失败

零基础STM32单片机编程入门(八)定时器PWM输入实战含源码视频

文章目录 一.概要二.PWM输入框架图三.CubeMX配置一个PWM输入例程1.硬件准备2.创建工程3.调试 四.CubeMX工程源代码下载五.讲解视频链接地址六.小结 一.概要 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用单…

手把手搭建微信机器人,帮你雇一个24小时在线的个人 AI 助理(上)

上一篇,带领大家薅了一台腾讯云服务器:玩转云服务:手把手带你薅一台腾讯云服务器,公网 IP。 基于这台服务器,今天我们一起动手捏一个基于 LLM 的微信机器人。 0. 前置准备 除了自己常用的微信账号以外,还…

盘点8款国内顶尖局域网监控软件(2024年国产局域网监控软件排名)

局域网监控软件对于企业网络管理至关重要,它们可以帮助IT部门维护网络安全,优化网络性能,同时监控和控制内部员工的网络使用行为。以下是八款备受推崇的局域网监控软件,每一款都有其独特的优势和适用场景。 1.安企神软件 试用版领…

VSCode远程服务器如何上传下载文件(超方便!)

方法一: 1、在VSCode应用商店安装SFTP插件 2、然后就可以直接把文件拖进VSCode即可,如下图所示: 这里的目录是我远程服务器上的目录,可以直接将要上传的文件直接拖进需要的文件夹 3、如果要从远程服务器上下载文件到本地&#x…

安装Gradle

官网文档 https://gradle.org/ 腾讯下载镜像:https://mirrors.cloud.tencent.com/gradle/ 文档:https://docs.gradle.org/current/userguide/userguide.html 命令行文档:https://docs.gradle.org/current/userguide/command_line_interface.…

Java高级重点知识点-21-IO、字节流、字符流、IO异常处理、Properties中的load()方法

文章目录 IOIO的分类 字节流字节输出流【OutputStream】字节输入流【InputStream】图片复制 字符流字符输入流【FileReader】字符输出流【FileWriter】 IO异常的处理(扩展知识)Properties属性集(java.util) IO Java中I/O操作主要是指使用 java.io 包下的…

《侃侃而谈 · 关于接外单的一些事》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

期末成绩发布方式

期末考试结束后,成绩单的发放总是让老师们头疼不已。想象一下,每个学生的成绩都需要老师一个个私信给家长,不仅耗时耗力,而且极易出错。 在传统的成绩单发放方式中,老师往往需要通过电子邮件、短信或者微信等方式&…

【Rust基础入门】Hello Cargo

文章目录 前言Cargo是什么?Cargo的作用查看cargo版本使用cargo创建项目Cargo.toml文件cargo build命令cargo runcargo check为发布构建 总结 前言 在Rust编程中,Cargo扮演着至关重要的角色。它是Rust的包管理器,负责处理许多任务&#xff0c…

【TB作品】51单片机 Proteus仿真 00002仿真-智能台灯色调倒计时光强

实验报告:基于51单片机的智能台灯控制系统 背景 本实验旨在设计一个基于51单片机的智能台灯控制系统,该系统可以通过按键进行手动控制,并能根据环境光强度自动调节台灯亮度。此外,系统还具备倒计时关灯功能。 器件连接 51单片…

软件运维服务方案(Word原件2024)

软件运维服务方案(Word原件) 1. 服务简述 我们提供全面的软件运维服务,确保软件系统的稳定运行。 1.1 服务内容 包括监控、维护、故障排查与优化。 1.2 服务方式 结合远程与现场服务,灵活响应客户需求。 1.3 服务要求 高效响应&am…

双向DFS——AcWing 171. 送礼物

双向DFS 定义 双向深度优先搜索(Bi-directional Depth First Search, BD-DFS)是一种在图或树中寻找两点间路径的算法。与传统的单向DFS不同,BD-DFS同时从起始节点和目标节点出发进行搜索,使用两个DFS过程。一个向前探索从起点到…

从一个(模型设计的)想法到完成模型验证的步骤

从有一个大型语言模型(LLM)设计的想法到完成该想法的验证,可以遵循以下实践步骤: 需求分析: 明确模型的目的和应用场景。确定所需的语言类型、模型大小和性能要求。分析目标用户群体和使用环境。 文献调研&#xff1a…

swiftui中常用组件picker的使用,以及它的可选样式

一个可选项列表就是一个picker组件搞出来的,它有多个样式可以选择,并且可以传递进去一些可选数据,有点像前端页面里面的seleted组件,但是picker组件的样式可以更多。可以看官方英文文档:PickerStyle | Apple Developer…

【对接支付宝支付详细流程】

下面示例使用的是支付宝的网页支付,最终的效果如图: 1.前置条件 对接支付宝你需要了解的知识点 1.加密算法 对称加密和非对称加密,RSA2加密算法,签名验证 2.支付宝平台openid unionId的概念 https://opendocs.alipay.com/pre…

文件管理下:文件函数的学习

前言 Hello,小伙伴们你们的作者君又来了,上次我们简单介绍了文件的坐拥并简单提到了数据的读取,和C语言的默认流的作用,今天我将继续带领大家探索文件的奥秘,大家准别好了吗? 在内容开始之前还是按照惯例&#xff0c…

初识java—jdk17的一些新增特性

文章目录 前言一 : yield关键字二 :var关键字三 :密封类四 :空指针异常:五:接口中的私有方法:六:instanceof关键字 前言 这里介绍jdk17相对于jdk1.8的部分新增特性。 一 &#xff…

QT使用QGraphicsView绘图 重写QGraphicsObject类实现点在QPainterPath路径上移动动画效果

闲谈:眨眼间,2024年就过去了一半了,年前定下的计划一个都没完成,乘着有空,把之前学习的内容和示例先总结了。 目录 导读SVG 转QPainterPath 路径获取QPainterPath指定长度时的坐标。重写QGraphicsObject类 实现点图元Q…