【监控系统】Prometheus架构相关概念及源码部署实战

news2024/11/26 2:32:36

上篇我们介绍了业界主流监控框架的对比,我们监控系统这块主要是采用Prometheus。

在这里插入图片描述

那么,什么是Prometheus

  • 官网:https://prometheus.io/docs/introduction/overview/

Prometheus是一个开源的系统监控和报警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF托管的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,同时也支持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群。多数Prometheus组件是Go语言写的,为用户提供可视化仪表板、警报、告警等功能,以帮助用户快速定位和解决问题。

Prometheus的作用又是什么呢

(1)Kubernetes集群监控

使用Prometheus可以收集和监控Kubernetes集群的指标数据,例如CPU、内存、网络等。Prometheus Operator部署Prometheus,然后通过Grafana可视化工具展示监控指标的仪表板。

(2)网络监控

Prometheus可以监控网络的状态和性能,例如TCP连接数、网络延迟和带宽利用率等。使用Prometheus的Blackbox Exporter插件来执行网络探测,检查网络服务是否可用。

(3)应用程序性能监控

通过Prometheus的客户端库可以在应用程序中嵌入指标收集代码,并收集应用程序的性能指标数据。例如请求数、响应时间、错误率等,帮助开发人员监控应用程序的性能,并进行调试和优化。

(4)数据库监控

可以使用Prometheus的Exporter插件监控各种类型的数据库,例如MySQL、PostgreSQL、Redis和MongoDB。Exporter可以将数据库的指标数据转换为Prometheus可以处理的格式,并将其发送到Prometheus进行监控和警报。

(5)服务器监控

使用Prometheus可以监控服务器的CPU、内存、磁盘和网络使用情况等指标,服务器上运行的各种服务的状态和性能。能够实时地存储和查询系统和服务的各种指标,如性能、CPU利用率、内存使用和请求计数等。

在这里插入图片描述

这是一张Prometheus的架构图,下面我们来介绍一下它的核心组件是用来干嘛的。

Prometheus的核心组件

(1)Prometheus server

Prometheus server是Prometheus的核心组件,负责抓取、存储和查询指标数据,提供API以供访问。Prometheus Server本身就是一个时序数据库,将采集到的监控数据按照时间序列的方式存储在本地磁盘当中。内置的UI界面,通过这个UI可以直接通过PromQL实现数据的查询以及可视化。

(2)Exporter

Exporter是Prometheus插件或独立组件,负责抓取指定服务或系统的性能指标数据。Prometheus原理是通过 HTTP 协议周期性抓取被监控组件的状态,输出这些被监控的组件的 Http 接口为 Exporter。Exporter将监控数据采集的端点通过HTTP服务的形式暴露给Prometheus Server,将其公开为HTTP端点或指定的格式。Prometheus server通过轮询或指定的抓取器从Exporter提供的Endpoint端点中提取数据。

(3)Alertmanager

在Prometheus Server中支持基于PromQL创建告警规则,如果满足PromQL定义的规则,就会产生一条告警。Prometheus告警管理器组件,负责管理告警规则、通知和报警策略的设置,提供第一类和第二类警报的分类管理服务。

(4)PushGateway

Prometheus数据采集基于Pull模型进行设计,在网络环境必须要让Prometheus Server能够直接与Exporter进行通信,当这种网络需求无法直接满足时,就可以利用PushGateway来进行中转,通过PushGateway将内部网络的监控数据主动Push到Gateway当中。Prometheus Server则可以采用同样Pull的方式从PushGateway中获取到监控数据。

(5)Service Discovery

Service Discovery是服务发现功能,动态发现待监控的Target,完成监控配置的重要组件。

OK,介绍完Prometheus,下面我们来在Centos中安装下Prometheus。

首先我们先要上传安装包到服务器上。

在这里插入图片描述

Prometheus是采用go语言去编写的,所以我们现配置一下go的环境变量。

# 解压go1.17.6.linux-amd64.tar.gz
tar -zxvf go1.17.6.linux-amd64.tar.gz

查看当前go的安装位置

在这里插入图片描述

#  配置环境变量 
echo "export PATH=$PATH:/usr/local/software/go/bin" >> /etc/profile 

# 立刻生效
source /etc/profile

查看go version

在这里插入图片描述

好的,配置完go的环境变量,我们来安装Prometheus。

#解压prometheus-2.43.0.linux-amd64.tar.gz
tar -zxvf prometheus-2.43.0.linux-amd64.tar.gz

#重命名
mv prometheus-2.43.0.linux-amd64 prometheus

#进入目录启动
./prometheus --config.file=./prometheus.yml

在这里插入图片描述

#查看是否启动成功
ps -ef | grep prometheus

在这里插入图片描述

访问:http://ip:9090/metrics

在这里插入图片描述

访问图界面:http://ip:9090/

在这里插入图片描述

注意:prometheus里面经常需要修改配置,可以利用动态更新,启动时在参数中加入**–web.enable-lifecycle** (该参数默认关闭)。

#启动, &表示需要守护进程方式运行,不然退出终端则进程消失
./prometheus --config.file=./prometheus.yml --web.enable-lifecycle &

#动态更新配置
curl -X POST http://localhost:9090/-/reload

Prometheus的目录结构

在这里插入图片描述

  • console_libraries:用于存储用于在Prometheus控制台上显示的JavaScript库。

  • consoles:用于存储用于在Prometheus控制台上显示的控制台文件,其中包括查询和图形定义。

  • data:用于存储Prometheus的磁盘持久化数据。

  • LICENSE:Prometheus的许可证文件。

  • NOTICE:版权声明文件。

  • prometheus:存储Prometheus二进制文件及其相关文件的目录。

  • prometheus.yml:Prometheus的配置文件。

  • promtool:Prometheus的命令行工具,用于检查配置文件是否正确以及生成表达式的值。

Ok,本篇文章我们就介绍到这里啦,记得三连➕关注哦!

在这里插入图片描述

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

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

相关文章

Android Java代码与JNI交互 JNI方法Java类字段 (六)

🔥 Android Studio 版本 🔥 🔥 Java 基础类型数据对应 jni 中的字母 🔥 通过 jni 查找java某个类中相应字段对应的数据类型 , 需要使用到 jni 中的 GetFieldID() 函数 jfieldID GetFieldID(jclass clazz, const char* name, const char* sig){ return functions-&g…

MySQL 如何处理 慢查询

如何定位慢查询? 方式一: 可以使用开源工具,比如: 调试工具:Arthas运维工具:Prometheus 、Skywalking 方式二: 使用MySQL自带慢日志 慢查询日志记录了所有执行时间超过指定参数(long_qu…

bsub 的用法和意义

bsub -R “rusage [mem40960]” -Is -XF 执行脚本的方法 bsub <run 几条有用的命令 bqueues 查询所有queue的状态 4. 常用命令之bhosts 显示各节点作业相关情况 bhosts hostname 常用命令之bjobs 查看提交作业运行情况; bjobs –r 显示正在运行的作业 bjobs –a 显示正在…

微信小程序,左上脚返回点击直接到首页

我们做小程序时就有很多这种情况&#xff0c;根据不同情况处理方式不同 第一种情况&#xff1a;小程序有多个tab onUnload(event){ //多层级跳转之后&#xff0c;监听左上角返回事件&#xff0c;直接退回到indexuni.switchTab({url:"/pages/index/index"})}, 第二种…

pandas 笔记:高亮内容

1 高亮缺失值 1.0 数据 import pandas as pd import numpy as npdata[{a:1,b:2},{a:3,c:4},{a:10,b:-2,c:5}]df1pd.DataFrame(data) df1 1.1 highlight_null df.style.highlight_null(color: str red,subset: Subset | None None,props: str | None None, ) 1.1.1 默认情…

【Elasticsearch】RestClient操作文档

目录 5.RestClient操作文档 5.1.新增文档 5.1.1.索引库实体类 5.1.2.语法说明 5.1.3.完整代码 5.2.查询文档 5.2.1.语法说明 5.2.2.完整代码 5.3.删除文档 5.4.修改文档 5.4.1.语法说明 5.4.2.完整代码 5.5.批量导入文档 5.5.1.语法说明 5.5.2.完整代码 5.6.小…

java 整合 Elastic 8.

1. 准备工作 使用docker 快速搭建的环境,官网docker-compose 方式搭建的集群 设置了密码登录 elastic elastic 需要给jdk 导入证书 找到 证书对应目录&#xff0c;复制到桌面。主要导入下面2个证书,执行如下命令 keytool -importcert -alias "修改成你的证书名"…

[数字图像处理]第八章 图像压缩

文章目录 第八章 图像压缩引言8.1 基础知识8.1.1 编码冗余8.1.2 空间冗余和时间冗余8.1.3 不相关的信息8.1.4 图像信息的度量山农第一定理 8.1.5 保真度准则8.1.6 图像压缩模型编码或压缩过程解码或解压缩过程 8.2 一些基本的压缩方法8.2.1 霍夫曼编码8.2.2 Golomb编码8.2.3 算…

开启visual studio,git for windows 疯狂占用内存的解决

1、开启visual studio&#xff0c;git for windows 疯狂占用内存的解决 最近开启visual studio写代码的时候&#xff0c;IDE总是会莫名奇妙的卡住然后闪退&#xff0c;今天打开任务管理器看了下原因&#xff0c;发现是visual studio所占磁盘内存不断疯涨&#xff0c;每秒几十M…

基于单片机语音识别智能家居系统的设计与实现

功能介绍 以STM32单片机作为主控系统&#xff1b;液晶显示当前环境温湿度&#xff0c;用电器开关状态通过语音模块识别设定的语音&#xff1b;DHT11进行环境温湿度采集&#xff1b;通过语音播报模块报当前温湿度&#xff0c;智能回复通过语音识别可以打开灯&#xff0c;窗帘&am…

LangChain大型语言模型(LLM)应用开发(三):QA over Documents

LangChain是一个基于大语言模型&#xff08;如ChatGPT&#xff09;用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口&#xff0c;可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互&#x…

Jenkins 创建一个 job , 用于单独执行脚本

目录 1.首先,在Jenkins中创建一个新的job 2.之后&#xff0c;会进入配置页面&#xff0c;在配置页面进行配置。 2.1.找到【Build Steps】在下&#xff0c;拉菜单中选择「シェルの実行」 &#xff08;Shell的运行&#xff09; 2.2.之后&#xff0c;会出现シェルスクリプト …

文本挖掘 day2 文本挖掘的研究趋势:期刊语义网络和主路径分析(2020年)

期刊语义网络和主路径分析 文本挖掘的研究趋势&#xff1a;期刊语义网络和主路径分析&#xff08;2020年&#xff09;1. 简介2. 理论背景2.1 文本挖掘2.2 网络分析2.3. 主路径分析2.4. 文献分析 3. 文本挖掘研究的分析和分类3.1. 分析范围3.2. 文本挖掘研究的学术领域 4. 选定期…

红帽回应对开源的承诺

导读红帽上周宣布了限制源代码访问性的政策&#xff0c;称其企业发行版 RHEL (Red Hat Enterprise Linux) 相关源码仅通过 CentOS Stream 公开&#xff0c;付费客户和合作伙伴可通过 Red Hat Customer Portal 访问到源代码。 红帽上周宣布了限制源代码访问性的政策&#xff0c…

spring springmvc springboot mybatis

Spring框架中的单例bean是线程安全的吗? 面试官&#xff1a;什么是AOP 候选人&#xff1a; aop是面向切面编程&#xff0c;在spring中用于将那些与业务无关&#xff0c;但却对多个对象产 生影响的公共行为和逻辑&#xff0c;抽取公共模块复用&#xff0c;降低耦合&#xff0c…

【专题速递】传输网络优化(长专题)

// RTC如何助力远程医疗&#xff1f;5G的差异化体现在哪&#xff1f;SMT如何将远程做到极致&#xff1f;7月29日LiveVideoStackCon2023上海站传输网络优化专场&#xff0c;为您解答。 传输网络优化 为应对互联网日益增长的加速需求、复杂的网络环境以及多种多样的视频业务&am…

第12讲:剖析 Trace 在 SkyWalking 中的落地实现方案(上)

SkyWalking 中 Trace 的相关概念以及实现类与 OpenTracing 中的概念基本类似&#xff0c;像 Trace、Span、Tags、Logs 等核心概念&#xff0c;在 SkyWalking Agent 中都有对应实现&#xff0c;只是在细微实现上略有区别的&#xff0c;其中最重要的是&#xff1a; SkyWalking 的…

Redis——redis的java客户端+(Jedis和SpringDataRedis)

客户端对比 一个Spring Data Redis底层可以兼容前两个 Jedis快速入门 直接使用命令名作为方法名就是Jedis好学的原因 第一步 &#xff1a; 创建一个maven项目并导入如下依赖&#xff0c;除了redis的以来还有一个junit5的依赖 <!--redis的依赖--><dependency>&l…

如何使用3D转换工具HOOPS Exchange与LibConverter进行流缓存导出?

如果您正在使用HOOPS Communicator&#xff0c;您可能想在生成流缓存模型之前利用HOOPS Exchange的高级功能和转换选项。 申请HOOPS试用 HOOPS中文网 如何使用 如您所知&#xff0c;LibConverter是HOOPS Communicator软件包中包含的一个简单的API&#xff0c;conver…

【GeoDa实用技巧100例】003:GeoDa连接并打开多种格式的数据源

GeoDa支持 shapefile、地理数据库、GeoJSON、MapInfo、GML、KML 以及 GDAL 库支持的其他矢量数据格式。该程序还将表格格式&#xff08;.csv、.dbf、.xls、.ods&#xff09;中的坐标转换为这些空间数据格式之一&#xff0c;并在不同文件格式之间转换数据。 文章目录 一、连接文…