Prometheus介绍和安装

news2025/1/18 2:14:16

Prometheus介绍和安装

1. Prometheus介绍

Prometheus(普罗米修斯)是一个最初在SoundCloud上构建的监控系统。自2012年成为社区开源项目,拥有非常活跃的开发人员和用户社区。为强调开源及独立维护,Prometheus于2016年加入云原生云计算基金会(CNCF),成为继Kubernetes之后的第二个托管项目。Prometheus基于时序数据库, 非常适合Kubernetes集群的监控。Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如VM、Docker、Kubernetes等。输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等)。

官方网站:https://prometheus.io

  • 项目托管:https://github.com/prometheus

Prometheus 特点

1)多维数据模型:由度量名称和键值对标识的时间序列数据

2)PromQL:一种灵活的查询语言,可以利用多维数据完成复杂的查询

3)不依赖分布式存储,单个服务器节点可直接工作

4)基于HTTP的pull方式采集时间序列数据

5)推送时间序列数据通过PushGateway组件支持

6)通过服务发现或静态配置发现目标

7)多种图形模式及仪表盘支持(grafana)

8)适用于以机器为中心的监控以及高度动态面向服务架构的监控


Prometheus 架构

Prometheus 由多个组件组成,但是其中许多组件是可选的:

1)Prometheus Server:用于收集指标和存储时间序列数据,并提供查询接口

2)client Library:客户端库(例如Go,Python,Java等),为需要监控的服务产生相应的/metrics并暴露给Prometheus Server。目前已经有很多的软件原生就支持Prometheus,提供/metrics,可以直接使用。对于像操作系统已经不提供/metrics,可以使用exporter,或者自己开发exporter来提供/metrics服务。

3)push gateway:主要用于临时性的 jobs。由于这类 jobs 存在时间较短,可能在 Prometheus 来 pull 之前就消失了。对此Jobs定时将指标push到pushgateway,再由Prometheus Server从Pushgateway上pull。

4)exporter:用于暴露已有的第三方服务的 metrics 给 Prometheus。

5)alertmanager:从 Prometheus server 端接收到 alerts 后,会进行去除重复数据,分组,并路由到对收的接受方式,发出报警。常见的接收方式有:电子邮件,pagerduty,OpsGenie, webhook 等。

6)Web UI:Prometheus内置一个简单的Web控制台,可以查询指标,查看配置信息或者Service Discovery等,实际工作中,查看指标或者创建仪表盘通常使用Grafana,Prometheus作为Grafana的数据源;

**注:**大多数 Prometheus 组件都是用 Go 编写的,因此很容易构建和部署为静态的二进制文件。

image-20231222105056764

为了能够更加直观的了解Prometheus Server,接下来我们将在k8s里部署并运行一个Prometheus Server实例,通过Node Exporter采集当前主机的系统资源使用情况。 并通过Grafana创建一个简单的可视化仪表盘。

2. 在Kubernetes里部署Prometheus

说明:我们使用helm来安装Prometheus,所以请先安装helm

1)配置helm仓库

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

2)使用helm安装Prometheus

先把包下载下来,需要更改values.yaml

helm pull bitnami/prometheus --untar

每台机器安装nfs

systemctl restart chronyd
yum install -y nfs-utils

更改values.yaml

cd prometheus 
vi values.yaml #更改所有storageClass配置,指定为nfs-client,这个是前面我们配置的NFS的sc,还有两处,需要将enable:false改为 true

image-20231222105516403

安装

helm install prometheus .

查看helm安装的应用

helm list -A

3)访问Prometheus

查看service

kubectl get svc

通过80端口对应的的port来访问Prometheus和Alertmanager

http://192.168.222.101:31525

Prometheus的Exporter

在Prometheus的架构设计中,Prometheus Server并不直接服务监控特定的目标,其主要任务负责数据的收集,存储并且对外提供数据查询支持。因此为了能够能够监控到某些东西,如主机的CPU使用率,我们需要使用到Exporter。

Exporter是一个用于收集和暴露应用程序指标的工具。它允许你将应用程序中的特定指标暴露给Prometheus监控系统。Exporter可以作为一个独立的进程运行,它通过暴露一个HTTP端点来提供指标数据。Prometheus可以通过定期访问Exporter的端点来获取最新的指标数据,并进行存储和可视化。

Exporter提供了针对各种应用程序和服务的特定实现,包括数据库、消息代理、Web服务器等。我们平时用的各种服务(如Nginx、MySQL、Redis、RabbitMQ、MongoDB等)都有自己的Exporter,它们会从应用程序中提取指标,并将其格式化为Prometheus可理解的格式。

总之,通过使用Prometheus exporter,你可以方便地监控应用程序的性能、资源利用率和其他重要指标。它提供了一种简单而强大的方式来收集和分析应用程序的监控数据,帮助你及时发现潜在的问题并做出相应的调整。

1)Node Exporter

Node Exporter主要用来采集主机上的各种指标(如CPU、内存、磁盘、网络等),Node exporter作为一个独立的进程在主机上运行,并通过HTTP端点暴露指标数据。Prometheus可以定期访问该端点以获取最新的主机指标数据,并将其存储和可视化。

Node exporter可以在各种操作系统上运行,包括Linux、Windows和Mac。它使用系统级接口和命令行工具来收集主机指标数据,并将其转换为Prometheus可理解的格式。

我们可以给K8S各个节点安装Node Exporter

helm install node-exporter bitnami/node-exporter

查看pod

kubectl get pod

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

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

相关文章

N字形变换(麻烦的方法)

class Solution:def convert(self, s: str, numRows: int) -> str:#先判断z有多少隔开s_new""index_now0if len(s)<numRows or numRows1:return sfor i in range(numRows-1,-1,-1):exchange0index_exchangeindex_nows_news[index_now]#计算每一层的差距gap_but…

Git安装和使用教程,并以gitee为例实现远程连接远程仓库

文章目录 1、Git简介及安装2、使用方法2.1、Git的启动与配置2.2、基本操作2.2.1、搭建自己的workspace2.2.2、git add2.2.3、git commit2.2.4、忽略某些文件不予提交2.2.5、以gitee为例实现git连接gitee远程仓库来托管代码 1、Git简介及安装 版本控制&#xff08;Revision cont…

超好用的工具类:并发集合简介--线程安全的HashMap

超好用的工具类&#xff1a;并发集合简介 ConcurrentHashMap,这是一个搞笑的并非HashMap。你可以把它理解为一个线程安全的HashMap. CopyOnWriteArrayList,这是一个List,从名字看就知道它和ArrayList是一族的。 在读多写少的场合&#xff0c;这个List的性能非常号&#xff0c;远…

[足式机器人]Part4 南科大高等机器人控制课 CH10 Bascis of Stability Analysis

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;CLEAR_LAB 笔者带更新-运动学 课程主讲教师&#xff1a; Prof. Wei Zhang 南科大高等机器人控制课 Ch10 Bascis of Stability Analysis 1. Background1.1 What is Stability Analysis1.2 General ODE Models for Dynamic…

小程序怎么实现会员运营?

充分利用小程序快捷方便的优点&#xff0c;小程序可以融合会员机制的获客、激活、留存、转化几个大的方面。小程序会员机制其实是会员系统的获客、激活、留存和转化的机制&#xff0c;而小程序则是为会员提供注册、服务、购买的场所&#xff0c;是商家连接会员、消费者的重要途…

每日一题——轮转数组

1. 题目描述 给定一个整数数组nums&#xff0c;将数组中的元素向右轮转k个位置&#xff0c;其中k是非负数。 示例1: 输入&#xff1a;nums [1,2,3,4,5,6,7]&#xff0c;k 3 输出&#xff1a;[5,6,7,1,2,3,4] 解释&#xff1a; 向右轮转 1步&#xff1a;[7,1,2,3,4,5,6] 向右…

文字编辑软件,批量给多个文本添加文档内容

在当今信息爆炸的时代&#xff0c;文字编辑工作是很多人需要面对的&#xff0c;而怎么快速的完成编辑工作&#xff0c;则是很多人所思考解决的。现在有一款很好用的软件——首助编辑高手&#xff0c;可以批量对多个文本文档内容进行处理&#xff0c;能帮你在文字编辑的工作上节…

安装vcpkg管理opencv的安装+MFC缺失的解决

第一步&#xff0c;出现#include没有办法找到opencv头文件的问题&#xff0c;无法解决 在VC的提示下&#xff0c;安装了vcpkg&#xff0c;然后用vcpkg命令来帮助安装opencv&#xff0c;过程十分顺利。 1. cmd 到命令行窗口&#xff1b; 2. 建立src文件夹&#xff0c;并进入…

线程池构造方法的认识

线程池中构造方法的认识 文章目录 线程池中构造方法的认识corePoolSize (核心线程数)maximumPoolSize&#xff08;最大线程数&#xff09;keepAliveTime(非核心线程的空闲超时时间)TimeUnitworkQueuethreadFactoryRejectedExecutionHandler拒绝策略 标准库中提供了一个ThreadPo…

数据库编程大赛:一条SQL计算扑克牌24点

你是否在寻找一个平台&#xff0c;能让你展示你的SQL技能&#xff0c;与同行们一较高下&#xff1f;你是否渴望在实战中提升你的SQL水平&#xff0c;开阔你的技术视野&#xff1f;如果你对这些都感兴趣&#xff0c;那么本次由NineData主办的《数据库编程大赛》&#xff0c;将是…

【Oracle】修改表结构

目录 创建示例1&#xff1a;添加一个或多个列 创建示例2&#xff1a;修改列定义 创建示例3&#xff1a; 删除一列或多列 创建示例4:重命名列 创建示例5:重命名表 创建示例1&#xff1a;添加一个或多个列 -----语法&#xff1a;将新列添加到表中 ALTER TABLE table_name A…

数据权限篇

文章目录 1. 如何实现数据权限&#xff08;内核&#xff09;1.1 原理1.2 源码实现&#xff0c;mybatis如何重写sql1.2.1 重写sql1.2.2 解析sql1.2.3 DataPermissionDatabaseInterceptor 1. 如何实现数据权限&#xff08;内核&#xff09; 1.1 原理 面对复杂多变的需求&#xf…

关于JVM的垃圾回收GC的一些记录

目录 一、JVM内存区域划分 二、从一个基本问题开始引入垃圾回收 三、GC作用的区域 三、如何确定一个对象是否可以被当成垃圾进行回收 &#xff08;1&#xff09;引用计数法 &#xff08;2&#xff09;可达性分析算法 &#xff08;3&#xff09;引用的类型 &#xff08;3…

Java经典面试题——手写快速排序和归并排序

题目链接&#xff1a;https://www.luogu.com.cn/problem/P1177 输入模板&#xff1a; 5 4 2 4 5 1快速排序 技巧&#xff1a;交换数组中的两个位置 a[l] a[l] a[r] - (a[r] a[l]); 稳定不稳定&#xff1f;:不稳定 注意找哨兵那里内循环的等于号不能漏&#xff0c;不然…

202355读书笔记|微读699元的书读后感——《走进美加风光摄影集》

202355读书笔记|微读699元的书读后感——《走进美加风光摄影集》 旧文新发&#xff0c;有一天跟同事聊起&#xff0c;我在某个平台写了30万字&#xff0c;ta很惊讶&#xff0c;其实还有很多私密的&#xff0c;公开的话更多&#xff0c;这或许是北飘留给我的礼物吧&#xff0c;在…

MFC窗体背景颜色的设置、控件白色背景问题、控件文本显示重叠问题、被父窗体背景覆盖的问题

文章目录 设置mfc窗体背景颜色窗体设置背景颜色后解决控件白色背景解决重复修改控件文本后重叠的问题自绘控件被父窗体背景覆盖的问题 设置mfc窗体背景颜色 设置窗体的背景颜色非常简单&#xff0c;只需要在窗体的OnEraseBkgnd里面填充窗体背景就可以了&#xff0c;甚至直接画…

在 linux 服务器上安装Redis数据库

先打开我们的Linux服务器 终端执行 安装redis sudo yum install redis然后 他会提示你要占多少磁盘空间 例如 我这里是 1.7 M 没问题就 y 然后回车就可以了 然后 我们这里执行 redis-cli --version这样 就能看到版本了 然后 我们可以根据版本选择启动命令 使用systemctl命…

【数据结构】最短路径算法实现(Dijkstra(迪克斯特拉),FloydWarshall(弗洛伊德) )

文章目录 前言一、Dijkstra&#xff08;迪克斯特拉&#xff09;1.方法&#xff1a;2.代码实现 二、FloydWarshall&#xff08;弗洛伊德&#xff09;1.方法2.代码实现 完整源码 前言 最短路径问题&#xff1a;从在带权有向图G中的某一顶点出发&#xff0c;找出一条通往另一顶点…

Ubuntu 常用命令之 gunzip 命令用法介绍

&#x1f4d1;Linux/Ubuntu 常用命令归类整理 gunzip是一个在Ubuntu系统下用于解压缩文件的命令。它主要用于解压.gz格式的文件。这个命令是gzip命令的反向操作&#xff0c;gzip用于压缩文件&#xff0c;而gunzip则用于解压缩文件。 gunzip命令的参数有 -c 或 --stdout 或 -…