prometheus和cAdvisor组合
文章目录
- docker内部署Promethues
- Prometheus
- cAdvisor
- Prometheus和cAdvisor关系
- 配置

docker内部署Promethues
Prometheus
Prometheus是一个开源的系统监控和报警工具,由SoundCloud开发并在2012年捐赠给了Cloud Native Computing Foundation (CNCF)。它被广泛用于监控容器化应用程序和分布式系统。Prometheus的设计目标是实时地收集、存储、查询和分析大规模系统的指标数据。
以下是对Prometheus的详细介绍:
-
数据模型:
Prometheus使用一种自定义的数据模型来存储时间序列数据。时间序列是一组由时间戳和对应值组成的数据点,表示某个指标随时间的变化。Prometheus的数据模型是基于标签(labels)的,允许用户对时间序列进行灵活的查询和聚合。标签可以用于标识时间序列,例如,可以为每个时间序列添加"job"标签表示所属的任务,或者添加"instance"标签表示监控的主机实例。 -
数据采集:
Prometheus通过HTTP协议定期从被监控的目标(如应用程序、主机或其他服务)中拉取指标数据。被监控的目标需要暴露一个指定格式的HTTP端点,以供Prometheus采集指标数据。Prometheus还提供了一些客户端库,用于帮助应用程序将自身的指标暴露给Prometheus。 -
存储:
Prometheus使用本地磁盘存储采集的时间序列数据。数据存储采用一种简单的、有损压缩的方式,以最大限度地减少存储空间的占用。用户可以配置数据保留策略,以控制数据的保留时间。 -
查询语言:
Prometheus提供了PromQL(Prometheus Query Language)用于查询和聚合时间序列数据。PromQL支持灵活的过滤、聚合和函数操作,使得用户可以根据需要获取有关系统状态和性能的信息。 -
监控和警报:
Prometheus允许用户定义警报规则,当满足特定条件时触发警报。警报可以通过电子邮件、Slack等方式进行通知。此外,Prometheus还提供了一个简单的警报管理界面,可以查看活动警报和警报历史。 -
服务发现:
Prometheus支持静态和动态的服务发现机制。静态服务发现需要手动配置监控目标列表,而动态服务发现允许Prometheus自动发现和监控新的目标,例如,Docker容器、Kubernetes服务等。 -
可视化:
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的一些主要特点和功能:
-
容器监控:cAdvisor可以实时监控运行在容器内部的应用程序的资源使用情况,包括CPU利用率、内存使用量、磁盘I/O等。这些信息对于性能调优和容器资源规划非常有用。
-
系统宿主机监控:除了监控容器内部的指标,cAdvisor还能够收集关于宿主机系统的性能数据,如宿主机的CPU使用率、内存使用量和磁盘空间等。
-
支持多种容器运行时:cAdvisor可以与多种容器运行时,如Docker和containerd等进行集成,因此在不同的容器环境中都能够使用。
-
详细的性能图表:cAdvisor提供了用户友好的Web界面,通过该界面可以查看容器和宿主机的性能指标历史数据,并且以图表的形式展示,帮助用户更直观地了解容器的运行状况。
-
资源限制和配额:cAdvisor允许用户设置容器的资源限制和配额,这对于避免容器资源抢占和优化资源分配非常重要。
-
支持容器组:在Kubernetes等容器编排系统中,多个容器通常组合成为一个Pod。cAdvisor能够识别和监控这样的容器组,并提供有关它们整体性能的信息。
-
API支持:cAdvisor提供了RESTful API,允许用户以编程方式访问收集的容器性能数据,方便进行自动化操作和集成。
官网:https://prometheus.io/docs/guides/cadvisor/
Prometheus和cAdvisor关系
cAdvisor(Container Advisor)和Prometheus是两个在容器监控领域中常常一起使用的工具,它们之间有着密切的关系。让我们更详细地了解它们之间的关系:
-
cAdvisor(Container Advisor):
cAdvisor是谷歌开源的容器资源使用分析工具,用于监控和收集关于运行在容器中的应用程序的性能数据。它是一个单独的容器,能够实时监控每个运行的容器的CPU、内存、磁盘和网络等方面的指标,同时也能监控宿主机的资源使用情况。cAdvisor可以与Docker、Kubernetes和其他容器管理工具集成,为用户提供容器和宿主机的性能数据,帮助用户进行性能调优、资源规划和故障排除。 -
Prometheus:
Prometheus是一种开源的系统监控和警报工具,专门用于收集、存储和查询时间序列数据。它最初由SoundCloud开发,并于2012年开源,成为了云原生生态系统中的重要组成部分。Prometheus的设计目标是为了高效地监控分布式系统,并提供强大的查询和警报功能。‘
cAdvisor和Prometheus通常一起使用来构建完整的容器监控解决方案。其关系可以总结如下: -
数据收集:cAdvisor负责监控容器内部的性能指标和宿主机的资源使用情况,并将这些数据暴露为Prometheus可以理解的格式。
-
Prometheus适配器:Prometheus本身无法直接监控容器内部的指标,因此需要借助适配器来与cAdvisor进行集成。Prometheus适配器(Prometheus Adapter)是一个Kubernetes API Server的扩展,它允许Prometheus查询Kubernetes API,并将查询转换为cAdvisor可以理解的格式,从而获取容器的性能数据。
-
数据存储:Prometheus负责将从cAdvisor收集到的时间序列数据进行存储。Prometheus使用一种称为"TSDB"(Time Series Database)的数据库,这使得它能够高效地存储和查询时间序列数据。
-
数据查询和可视化: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)来确保它们在正确的顺序中启动。
- 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 容器准备就绪后再启动。
- 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 容器准备就绪后再启动。
- 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整体的资源消耗
进入被监控的机器查看详细信息
相关文章:

prometheus和cAdvisor组合
文章目录 docker内部署PromethuesPrometheuscAdvisorPrometheus和cAdvisor关系配置 docker内部署Promethues Prometheus Prometheus是一个开源的系统监控和报警工具,由SoundCloud开发并在2012年捐赠给了Cloud Native Computing Foundation (CNCF)。它被广泛用于监…...

计算机网络(2) --- 网络套接字UDP
计算机网络(1) --- 网络介绍_哈里沃克的博客-CSDN博客https://blog.csdn.net/m0_63488627/article/details/131967378?spm1001.2014.3001.5501 目录 1.端口号 2.TCP与UDP协议 1.TCP协议介绍 1.TCP协议 2.UDP协议 3.理解 2.网络字节序 发送逻辑…...

Idea 结合docker-compose 发布项目
Idea 结合docker-compose 发布项目 这里写目录标题 Idea 结合docker-compose 发布项目Docker 开启远程访问功能 添加相应端口配置IDEA 链接Docker配置项目 docker-compose.yml本地还需要安装 dockerwin11 安装本地Docker 可能存在问题 Linux内核不是最新 Docker 开启远程访问功…...
django
django学习 初识Django1.安装django2.创建项目2.1 在终端2.2 Pycharm 3. 创建app4.快速上手4.1 再写一个页面4.2 templates模板4.3 静态文件4.3.1 static目录4.3.2 引用静态文件 5.模板语法案例:伪联通新闻中心6.请求和响应案例:用户登录7.数据库操作7.1…...
c++游戏框架
游戏类 class Sprite { public:Sprite(int x, int y, int w, int h, const char* imagePath);~Sprite();void render(SDL_Renderer* renderer);void move(int x, int y); private:SDL_Texture* texture_;SDL_Rect rect_; }; 物理引擎类 class PhysicsEngine { public:Physi…...

v-model绑定checkbox无法动态更新视图
在vue2中使用v-model绑定checkbox <input type"checkbox" v-model"isChecked" :valueisChecked change"handleCheckboxChange" />监听change事件,并在change事件中做一些特殊处理,比如用户在登录时有没有阅读过隐私…...

原生html—摆脱ps、excel 在线绘制财务表格加水印(html绘制表格js加水印)
文章目录 ⭐前言⭐html标签💖table表格的属性💖实现财务报表 ⭐结束 ⭐前言 大家好,我是yma16,本文分享原生html——绘制表格报表加水印。 背景:解决没有ps的情况下使用前端html制作表格报表。 html介绍 HTML…...

微信小程序配置上传多个u-upload上传
微信小程序配置上传多个u-upload上传 使用的是uView框架 微信小程序配置上传多个u-upload上传图片 场景需求:根据PC端配置项追加图片配置 小程序根据配置的图片数量,图片名称,进行上传图片 难度在于 我们不知道用户会追加多少个图片配置字段 …...
python使用win32com库实现对Excel的操作
使用win32com库实现对Excel的操作 1. 引言 在日常工作中,我们经常需要对Excel文件进行操作,例如读取和写入数据、格式化和样式、插入和删除等。而使用Python的win32com库,我们可以通过代码来实现对Excel的自动化操作,提高工作效…...
<Maven>项目依赖导入Maven本地仓库命令
项目工程pom.xml文件打开:查看报错的依赖, 将jar包放在D盘(或者其它路径都可)根目录下,在windows黑窗口执行以下命令; 举例:jar包名称: 1.api-1.0-SNAPSHOT102.jar 2.coms-cache-1.0-SNAPSHOT.jar 命令: mvn install:install-fi…...

爬虫006_python中的运算符_算术运算符_赋值运算符_复合赋值运算符_比较运算符_逻辑运算符_逻辑运算符性能提升---python工作笔记024
首先看加减乘除 然后看这里的 // 是取整数部分,不是四舍五入 然后%这个是取余数 然后**是,几次方那种 指数...

CPU Architecture Methodologies
MMU MMU(Memory Management Unit) 负责将逻辑地址转化为物理地址对于现代处理器来说,一般每个core都有自己的 MMU页表等数据结构保存在 TLB NUMA Non-uniform memory access (NUMA) is a computer memory design used in multiprocessing, where the memory access…...

Spring的@Scheduled
Spring的Scheduled的默认线程池数量为1,也就是说定时任务是单线程执行的。这意味着最多同时只有一个任务在执行。当一个任务还在执行时,其他任务会等待其完成,然后按照其预定的执行策略依次执行。 测试代码: 启动类上加注解Enab…...
IP隧道技术原理
简介 IP隧道技术是一种将一个协议的数据包封装在另一个协议的数据包中进行传输的技术。在网络通信中,不同的网络协议之间可能存在不兼容的情况,这时候就需要使用IP隧道技术来解决这个问题。 原理 IP隧道技术的原理是将一个协议的数据包封装在另一个协议…...

Docker私有仓库
Docker私有仓库 Docker官方的Docker hub(https://hub.docker.com)是一个用于管理公共镜像的仓库,我们可以从上面拉取镜像到本地,也可以把我们自己的镜像推送上去。但是,有时候我们的服务器无法访问互联网,…...
LLM微调 | Prefix-Tuning, Prompt-Tuning, P-tuning, P-tuning-v2
🔥 下面我只是分析讲解下这些方法的原理以及具体代码是怎么实现的,不对效果进行评价,毕竟不同任务不同数据集效果差别还是挺大的。 文章目录 0、hard prompt & soft prompt区别1、Prefix-Tuning2、Prompt-Tuning3、P-tuning4、P-tuning-v25、来看看adapter,lora,pref…...
Ansible 的脚本 --- playbook 剧本
目录 playbook 剧本 playbooks 本身由以下各部分组成 定义、引用变量 指定远程主机sudo切换用户 when条件判断 迭代 Templates 模块 1.先准备一个以 .j2 为后缀的 template 模板文件,设置引用的变量 2.修改主机清单文件,使用主机变量定义一个变…...
CSP-J模拟赛 / 买文具
限制条件 时间限制: 1000 ms, 空间限制: 256 MB 输入文件: pen.in, 输出文件:pen.out 题目描述 开学啦,为了准备新学期的课程学习,小贝到商店买文具。小贝买完文具回家,告诉妈妈说她买了钢笔、圆珠笔和铅笔总共x支,…...
leecode算法--每日一题1
二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 前提条件必须满足: 目标数组必须是有序数组 所以…...

LViT:语言与视觉Transformer在医学图像分割
论文链接:https://arxiv.org/abs/2206.14718 代码链接:GitHub - HUANGLIZI/LViT: This repo is the official implementation of "LViT: Language meets Vision Transformer in Medical Image Segmentation" (IEEE Transactions on Medical I…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...