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…...

蓝桥杯上岸每日N题 第五期(山)!!!
蓝桥杯上岸每日N题第五期 ❗️ ❗️ ❗️ 同步收录 👇 蓝桥杯Java 省赛B组(初赛)填空题 大家好 我是寸铁💪 冲刺蓝桥杯省一模板大全来啦 🔥 蓝桥杯4月8号就要开始了 🙏 距离蓝桥杯省赛倒数第3天 ❗️ ❗️ ❗️ 还没背熟模…...

IDEA Writing classes... 比较慢
IDEA配置修改如下: 1、File -> Settings… 2、Build,Execution,Deployment -> Compiler Build process heap size 配置为 20483、Build,Execution,Deployment -> Compiler -> ActionScript & Flex C…...

opencv中轮廓相关属性
一、介绍 findContours() :The function retrieves contours from the binary image。 二、代码 void main() {Mat src imread("match00.bmp", IMREAD_GRAYSCALE);Mat mask;threshold(src, mask, 128, 255, cv::THRESH_BINARY_INV);Mat element cv::g…...

Leetcode 144. 二叉树的前序遍历
题目描述 题目链接:https://leetcode.cn/problems/binary-tree-preorder-traversal/description/ 代码实现 class Solution {List<Integer> l new ArrayList<>();public List<Integer> preorderTraversal(TreeNode root) {preoder(root);re…...

医学影像PACS系统源码:多功能服务器和阅片系统
PACS系统是以最新的IT技术为基础,遵循医疗卫生行业IHE/DICOM3.0和HL7标准,开发的多功能服务器和阅片系统。通过简单高性能的阅片功能,支持繁忙时的影像诊断业务,拥有保存影像的院内Web传输及离线影像等功能,同时具有备…...

php 生成连续递增的Excel列索引 可以控制多少列
今天遇到需要生成对应的下拉,下拉的类 需要PHP 输出一个数组 如 A、B、C、D 到Z 列后 Excel 的列就变成 AA 、AB、 AC 依次类推 查询得知 Excel 最大列数 16384 最大行数 1048576 下面演示3000列或行 <?php$idx [idx > 0];for ($i …...

Openstack等私有云
1 OpenStack 计算:部署管理虚拟机存储:块存储 Cinder 和 对象存储 Swift网路:管理网络身份:管理用户和权限镜像:管理镜像用于快速部署新的虚拟机仪表盘:Web界面 2 RAID 如果使用的软件已经在多个硬件设备…...

MySQL 8.0详细安装配置教程
一. 前言 MySQL是目前最为流行的开源数据库产品,是完全网络化跨平台的关系型数据库系统。它起初是由瑞典MySQLAB公司开发,后来被Oracle公司收购,目前属于Oracle公司。因为开源,所以任何人都能从官网免费下载MySQL软件,…...

pytest 入门
1,安装pytest 打开终端或命令提示符窗口,在终端中运行以下命令来安装pytest: pip install pytestpip install -i https://pypi.tuna.tsinghua.edu.cn/simple pytest 确保您的系统上已经安装了Python。您可以在终端中运行以下命令来检查Python的安装情况: pytest --version…...

分布式缓存数据一致性-解决方案
如果是用户维度,并发几率小(用户修改订单)。不需要考虑一致性问题,缓存数据加上过期时间,每隔一段时间出发读数据,主动更新缓存即可。(缓存过期删除数据,触发读请求主动更新…...