prometheus和cAdvisor组合

文章目录

  • docker内部署Promethues
    • Prometheus
    • cAdvisor
    • Prometheus和cAdvisor关系
    • 配置

在这里插入图片描述

docker内部署Promethues

Prometheus

Prometheus是一个开源的系统监控和报警工具,由SoundCloud开发并在2012年捐赠给了Cloud Native Computing Foundation (CNCF)。它被广泛用于监控容器化应用程序和分布式系统。Prometheus的设计目标是实时地收集、存储、查询和分析大规模系统的指标数据。

以下是对Prometheus的详细介绍:

  1. 数据模型:
    Prometheus使用一种自定义的数据模型来存储时间序列数据。时间序列是一组由时间戳和对应值组成的数据点,表示某个指标随时间的变化。Prometheus的数据模型是基于标签(labels)的,允许用户对时间序列进行灵活的查询和聚合。标签可以用于标识时间序列,例如,可以为每个时间序列添加"job"标签表示所属的任务,或者添加"instance"标签表示监控的主机实例。

  2. 数据采集:
    Prometheus通过HTTP协议定期从被监控的目标(如应用程序、主机或其他服务)中拉取指标数据。被监控的目标需要暴露一个指定格式的HTTP端点,以供Prometheus采集指标数据。Prometheus还提供了一些客户端库,用于帮助应用程序将自身的指标暴露给Prometheus。

  3. 存储:
    Prometheus使用本地磁盘存储采集的时间序列数据。数据存储采用一种简单的、有损压缩的方式,以最大限度地减少存储空间的占用。用户可以配置数据保留策略,以控制数据的保留时间。

  4. 查询语言:
    Prometheus提供了PromQL(Prometheus Query Language)用于查询和聚合时间序列数据。PromQL支持灵活的过滤、聚合和函数操作,使得用户可以根据需要获取有关系统状态和性能的信息。

  5. 监控和警报:
    Prometheus允许用户定义警报规则,当满足特定条件时触发警报。警报可以通过电子邮件、Slack等方式进行通知。此外,Prometheus还提供了一个简单的警报管理界面,可以查看活动警报和警报历史。

  6. 服务发现:
    Prometheus支持静态和动态的服务发现机制。静态服务发现需要手动配置监控目标列表,而动态服务发现允许Prometheus自动发现和监控新的目标,例如,Docker容器、Kubernetes服务等。

  7. 可视化:
    Prometheus本身不提供可视化界面,但可以与Grafana等可视化工具集成,以创建漂亮的监控仪表盘。

总体而言,Prometheus是一个功能强大且易于使用的监控和警报工具,适用于大规模系统和容器化应用程序。它在容器化生态系统中得到广泛应用,成为云原生应用开发的关键组件之一。

拉取镜像

docker pull prom/prometheus

启动

[root@localhost harbor]# docker run -p 9090:9090 -d --name yprom prom/prometheus

登录Prometheus的web界面

用宿主机的ip+对应端口登录

从容器中拉取yml文件到宿主机中

[root@localhost prom]# docker cp yprom:/etc/prometheus/prometheus.yml .
Successfully copied 2.56kB to /dockf/prom/.
[root@localhost prom]# ls
prometheus.yml

cAdvisor

cAdvisor(Container Advisor)是谷歌开源的一个容器资源使用分析工具,它用于监控和收集关于运行在容器中的应用程序的性能数据。cAdvisor可以与Docker、Kubernetes和其他容器管理工具集成,并提供有关容器资源使用情况的详细信息,包括CPU、内存、磁盘和网络等方面的指标。

以下是cAdvisor的一些主要特点和功能:

  1. 容器监控:cAdvisor可以实时监控运行在容器内部的应用程序的资源使用情况,包括CPU利用率、内存使用量、磁盘I/O等。这些信息对于性能调优和容器资源规划非常有用。

  2. 系统宿主机监控:除了监控容器内部的指标,cAdvisor还能够收集关于宿主机系统的性能数据,如宿主机的CPU使用率、内存使用量和磁盘空间等。

  3. 支持多种容器运行时:cAdvisor可以与多种容器运行时,如Docker和containerd等进行集成,因此在不同的容器环境中都能够使用。

  4. 详细的性能图表:cAdvisor提供了用户友好的Web界面,通过该界面可以查看容器和宿主机的性能指标历史数据,并且以图表的形式展示,帮助用户更直观地了解容器的运行状况。

  5. 资源限制和配额:cAdvisor允许用户设置容器的资源限制和配额,这对于避免容器资源抢占和优化资源分配非常重要。

  6. 支持容器组:在Kubernetes等容器编排系统中,多个容器通常组合成为一个Pod。cAdvisor能够识别和监控这样的容器组,并提供有关它们整体性能的信息。

  7. API支持:cAdvisor提供了RESTful API,允许用户以编程方式访问收集的容器性能数据,方便进行自动化操作和集成。

官网:https://prometheus.io/docs/guides/cadvisor/

Prometheus和cAdvisor关系

cAdvisor(Container Advisor)和Prometheus是两个在容器监控领域中常常一起使用的工具,它们之间有着密切的关系。让我们更详细地了解它们之间的关系:

  1. cAdvisor(Container Advisor):
    cAdvisor是谷歌开源的容器资源使用分析工具,用于监控和收集关于运行在容器中的应用程序的性能数据。它是一个单独的容器,能够实时监控每个运行的容器的CPU、内存、磁盘和网络等方面的指标,同时也能监控宿主机的资源使用情况。cAdvisor可以与Docker、Kubernetes和其他容器管理工具集成,为用户提供容器和宿主机的性能数据,帮助用户进行性能调优、资源规划和故障排除。

  2. Prometheus:
    Prometheus是一种开源的系统监控和警报工具,专门用于收集、存储和查询时间序列数据。它最初由SoundCloud开发,并于2012年开源,成为了云原生生态系统中的重要组成部分。Prometheus的设计目标是为了高效地监控分布式系统,并提供强大的查询和警报功能。‘
    cAdvisor和Prometheus通常一起使用来构建完整的容器监控解决方案。其关系可以总结如下:

  3. 数据收集:cAdvisor负责监控容器内部的性能指标和宿主机的资源使用情况,并将这些数据暴露为Prometheus可以理解的格式。

  4. Prometheus适配器:Prometheus本身无法直接监控容器内部的指标,因此需要借助适配器来与cAdvisor进行集成。Prometheus适配器(Prometheus Adapter)是一个Kubernetes API Server的扩展,它允许Prometheus查询Kubernetes API,并将查询转换为cAdvisor可以理解的格式,从而获取容器的性能数据。

  5. 数据存储:Prometheus负责将从cAdvisor收集到的时间序列数据进行存储。Prometheus使用一种称为"TSDB"(Time Series Database)的数据库,这使得它能够高效地存储和查询时间序列数据。

  6. 数据查询和可视化:Prometheus提供了强大的查询语言和灵活的数据可视化工具,让用户能够从存储的性能数据中提取有用信息,并创建仪表盘或图表,帮助用户更好地理解和分析容器和宿主机的运行情况。

总结:cAdvisor和Prometheus的结合为容器环境提供了全面的监控和性能分析能力。cAdvisor负责收集容器的性能数据,而Prometheus则负责存储、查询和展示这些数据,帮助用户监控和管理容器化应用。这种集成使得在Kubernetes集群中实现全面的容器监控变得更加容易和高效。

配置

查看本机的8080端口是否使用

[root@localhost prom]# netstat -anpult|grep 8080

编辑Prometheus.yml主配置文件,添加监控的容器cAdvisor为目标容器

[root@localhost prom]# cat prometheus.yml |egrep -v "#|^$"
global:
alerting:alertmanagers:- static_configs:- targets:
rule_files:
scrape_configs:- job_name: "prometheus"static_configs:- targets: ["localhost:9090"]scrape_configs:- job_name: cadvisorscrape_interval: 5sstatic_configs:- targets:- cadvisor:8080
  • 使用docker compose 启动 Promethues、cadvisor、redis容器

需要机器安装docker-compose

新建一个docker-compose.yml文件

version: '3.2'
services:prometheus:image: prom/prometheus:latestcontainer_name: prometheusports:- 9090:9090command:- --config.file=/etc/prometheus/prometheus.ymlvolumes:- ./prometheus.yml:/etc/prometheus/prometheus.yml:rodepends_on:- cadvisorcadvisor:image: gcr.io/cadvisor/cadvisor:latestcontainer_name: cadvisorports:- 8080:8080volumes:- /:/rootfs:ro- /var/run:/var/run:rw- /sys:/sys:ro- /var/lib/docker/:/var/lib/docker:rodepends_on:- redisredis:image: redis:latestcontainer_name: redisports:- 6379:6379

cadvisor:
image: gcr.io/cadvisor/cadvisor:latest

这里是从谷歌拉取的镜像可能拉取不到

上述是一个Docker Compose文件的示例,用于定义三个服务:prometheus、cadvisor和redis。这些服务将在Docker容器中运行,并通过依赖关系(depends_on)来确保它们在正确的顺序中启动。

  1. Prometheus Service:
  • 使用 prom/prometheus:latest 镜像创建一个名为 “prometheus” 的容器。
  • 该容器将监听宿主机的9090端口,并将其映射到容器内部的9090端口,因此可以通过宿主机的9090端口访问Prometheus的Web界面。
  • 使用 --config.file=/etc/prometheus/prometheus.yml 命令参数,指定Prometheus的配置文件路径。
  • 将宿主机当前目录下的 prometheus.yml 文件挂载为容器内部的 /etc/prometheus/prometheus.yml 文件,并且设置为只读模式(ro)。这样,Prometheus将使用该配置文件进行监控设置。
  • 依赖于 cadvisor 服务,在启动时会等待 cadvisor 容器准备就绪后再启动。
  1. cAdvisor Service:
  • 使用 gcr.io/cadvisor/cadvisor:latest 镜像创建一个名为 “cadvisor” 的容器。
  • 该容器将监听宿主机的8080端口,并将其映射到容器内部的8080端口,因此可以通过宿主机的8080端口访问 cAdvisor 的Web界面。
  • 使用多个 - /:/rootfs:ro- /var/run:/var/run:rw- /sys:/sys:ro- /var/lib/docker/:/var/lib/docker:ro 挂载宿主机的文件系统和资源目录,以便 cAdvisor 可以监控宿主机和容器的性能数据。
  • 依赖于 redis 服务,在启动时会等待 redis 容器准备就绪后再启动。
  1. Redis Service:
  • 使用 redis:latest 镜像创建一个名为 “redis” 的容器。
  • 该容器将监听宿主机的6379端口,并将其映射到容器内部的6379端口,因此可以通过宿主机的6379端口访问 Redis 服务。

注意:在实际使用中,如果你将上述内容保存为 docker-compose.yml 文件,并在相同目录下运行 docker-compose up 命令,Docker Compose将会根据文件中的定义启动这三个服务,并根据依赖关系确保它们的启动顺序正确。这样,你将在宿主机的9090端口访问到 Prometheus,8080端口访问到 cAdvisor,以及6379端口访问到 Redis。

为什么cAdvios可以获取其他容器的信息?

cadvisor:image: gcr.io/cadvisor/cadvisor:latestcontainer_name: cadvisorports:- 8080:8080volumes:- /:/rootfs:ro- /var/run:/var/run:rw- /sys:/sys:ro- /var/lib/docker/:/var/lib/docker:ro

数据卷:/var/lib/docker/:/var/lib/docker:ro这就是为什么可以查看信息

启动

[root@localhost prom]# docker compose up -d
[+] Running 3/3✔ Container redis       Started                                           ✔ Container cadvisor    Started                                           ✔ Container prometheus  Started      

查看信息

docker compose ps

登录宿主机ip+8080端口 》http://192.168.2.99:8080/containers/

在这里插入图片描述

这是docker整体的资源消耗

在这里插入图片描述

进入被监控的机器查看详细信息

在这里插入图片描述

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

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

相关文章

php项目内存飚高处理与优化

公司服务器最近内存占用超过阈值一直报警 经过排查,内存占用很多,剩余很少 free -m 排查代码无太多冗余和缓存 最后和运维一起排查,发现宝塔安装后带的gitlab的进程很吃内存,赶紧停用,并卸载无用的软件 最后内存降下来了

16.Netty源码之ChannelPipeline

highlight: arduino-light 服务编排层:ChannelPipeline协调ChannelHandlerHandler EventLoop可以说是 Netty 的调度中心,负责监听多种事件类型:I/O 事件、信号事件、定时事件等,然而实际的业务处理逻辑则是由 ChannelPipeline 中所定义的 Cha…

Vue-Router基本使用

1 安装: vue2项目要安装vue-router3版本 npm i vue-router3 2 src下创建router目录,router文件夹下创建index.js 在vue.config.js中 配置src路径别名 3 在main.js中引入 4 在app.vue中配置 5 即可看到内容

okhttp原理分析

工程目录图 请点击下面工程名称,跳转到代码的仓库页面,将工程 下载下来 Demo Code 里有详细的注释 01okhttp module里 包含的设计模式:建造者设计模式、责任链设计模式 CustomInject 演示自定义注解 代码:okhttp原理分析、Andro…

掌握Python的X篇_13_Python条件语句实例:判断闰年、成绩评定

前面学习了条件语句以及调试的基本技巧,本篇介绍两个与条件语句有关的实例,对前面的知识又深刻认识。 文章目录 1. 判断闰年1.1 版本11.2 版本21.3 一行代码太长的处理方法 2. 根据成绩评级 1. 判断闰年 用户输入年份,判断该年份是否为闰年…

esp32_arduino的开发库安装笔记

1.1 Arduino软件下载与安装 Arduino官网下载地址:https://www.arduino.cc/en/software。 1.2在线安装 选择文件 - 首选项。 在附加开发板管理器网址中添加以下链接中的一个。 (1)Stable release link: https://raw.githubusercontent.com/espressif/arduino-es…

【Linux后端服务器开发】MAC地址与其他重要协议

目录 一、以太网 二、MAC地址 三、MTU 四、ARP协议 五、DNS系统 六、ICMP协议 七、NAT技术 八、代理服务器 一、以太网 “以太网”不是一种具体的网路,而是一种技术标准:既包含了数据链路层的内容,也包含了一些物理层的内容&#xf…

【ARM Coresight 系列文章 10.3 - ARM Coresight STM 寄存器介绍 及STM DMA 传输介绍】

文章目录 STM Register summarySTM DMA 相关的寄存器DMA TransferBurst requestSingle and burst request STM Register summary STM 的寄存器主要可以分为以下几类: STM DMA 相关的;STM HW Trigger 相关的;系统控制及状态寄存器&#xff1…

Linux系统中的SQL语句

本节主要学习,SQL语句的语句类型,数据库操作,数据表操作,和数据操作等。 文章目录 一、SQL语句类型 DDL DML DCL DQL 二、数据库操作 1.查看 2.创建 默认字符集 指定字符集 3.进入 4.删除 5.更改 库名称 字符集 6…

借助 Mybatis 的动态 SQL 解决传参不确定问题

在上一篇的:Mybatis 操作数据库的基本 CRUD 以及查询操作详析_糊糊涂涂的博客-CSDN博客中介绍了Mybatis使用固定SQL语句操作数据,本篇介绍 Mybatis 一个强大的特性:动态SQL。 动态 SQL 解决什么问题? 那当我们要执行的业务逻辑有…

【Nodejs】Node.js开发环境安装

1.版本介绍 在命令窗口中输入 node -v 可以查看版本 0.x 完全不技术 ES64.x 部分支持 ES6 特性5.x 部分支持ES6特性(比4.x多些),属于过渡产品,现在来说应该没有什么理由去用这个了6.x 支持98%的 ES6 特性8.x 支持 ES6 特性 2.No…

vue3如何封装接口

🙂博主:锅盖哒 🙂文章核心:如何封装接口 目录 前言 1.首先,安装并导入axios库。你可以使用npm或yarn来安装: 2.创建一个api.js文件来管理接口封装: 3.在Vue组件中使用封装的接口&#xff1…

安装Python之后 安装库报错 There was an error checking the latest version of pip.

报错代码 & 图片如下 Looking in indexes: https://pypi.tuna.tsicmdnghua.edu.cn/simple WARNING: Retrying (Retry(total4, connectNone, readNone, redirectNone, statusNone)) after connection broken by NewConnectionError(<pip._vendor.urllib3.connection.HT…

Ubuntu 曝Linux漏洞,近 40% 用户受影响

Bleeping Computer 网站披露&#xff0c;Wiz 研究人员 s.Tzadik 和 s.Tamari 发现 Ubuntu 内核中存在两个 Linux 漏洞 CVE-2023-32629 和 CVE-2023-2640&#xff0c;没有特权的本地用户可能利用其在设备上获得更高权限&#xff0c;影响大约 40% 的 Ubuntu 用户。 Ubuntu 是目前…

双重for循环优化

项目中有段代码逻辑是个双重for循环&#xff0c;发现数据量大的时候&#xff0c;直接导致数据接口响应超时&#xff0c;这里记录下不断优化的过程&#xff0c;算是抛砖引玉吧~ Talk is cheap,show me your code&#xff01; 双重for循环优化 1、数据准备2、原始双重for循环3、…

【设计模式——学习笔记】23种设计模式——组合模式Composite(原理讲解+应用场景介绍+案例介绍+Java代码实现)

案例引入 学校院系展示 编写程序展示一个学校院系结构: 需求是这样&#xff0c;要在一个页面中展示出学校的院系组成&#xff0c;一个学校有多个学院&#xff0c;一个学院有多个系 【传统方式】 将学院看做是学校的子类&#xff0c;系是学院的子类&#xff0c;小的组织继承大…

K8s使用Ceph作为后端存储

Ceph概述 部署Ceph集群 Ceph存储使用 Pod使用Ceph持久化数据 Ceph监控 Rook部署Ceph 1❖ Ceph概述 Ceph介绍 Ceph架构 Ceph核心概念 Ceph介绍 Ceph是一个开源的分布式存储系统&#xff0c;具有高扩展性、高性能、高可靠性等特点&#xff0c;提 供良好的性能、可靠性和可扩展…

ROS与STM32通信-rosserial

文章目录 硬件接线 软件STM32CubeMX配置 rosserial移植上位机订阅-下位机发布上位机订阅下位机发布通信 上位机发布-下位机订阅上位机发布下位机订阅通信 硬件 STM32F103c8t6OLED(I2C)USB2TTLStlink 接线 OLED(GPIO模拟I2C) 硬件引脚OLEDSCLPA4OLEDSDAPA5 USART1 硬件引脚…

CSS3 Flexbox

Flex 是 Flexible Box 的缩写&#xff0c;意为弹性盒子布局。 CSS3中一种新的布局模式&#xff1a;W3C在2009年提出的一种布局方案&#xff0c;一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当的行为的布局方式。其目的是提供一种更加有效的方式来对一个容器…

深度学习入门(二):神经网络整体架构

一、前向传播 作用于每一层的输入&#xff0c;通过逐层计算得到输出结果 二、反向传播 作用于网络输出&#xff0c;通过计算梯度由深到浅更新网络参数 三、整体架构 层次结构&#xff1a;逐层变换数据 神经元&#xff1a;数据量、矩阵大小&#xff08;代表输入特征的数量…