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

上篇我们介绍了业界主流监控框架的对比,我们监控系统这块主要是采用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.hqwc.cn/news/17485.html

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

相关文章

Excel二级联动下拉列表(横向字典配置)

二级联动下拉列表 1. Excel内新建sheet用来存放二级联动列表 2. 新建省份名称引用 在省市字典下,单击A1单元格,选择公式->名称管理器->新建,名称为省份,引用位置为OFFSET(省市字典!$A$1,0,0,COUNTA(省市字典!$A:$A))&…

字符函数和字符串函数的模拟实现

求字符串长度 strlen 长度不受限制的字符串函数 strcpystrcmpstrcat长度受限制的字符串函数 strnlenstrncmpstrncpystrncat字符串查找 strstrstrtok错误信息报告 strerror内存操作函数 memcpymemmovememsetmemcmp 首先我们来看strlen字符串是以‘\0’为结束标志,str…

【网络原理】IP协议

🥊作者:一只爱打拳的程序猿,Java领域新星创作者,CSDN、阿里云社区优质创作者。 🤼专栏收录于:计算机网络原理 本博文讲解网络层重点协议之IP协议,主要讲解IP地址的组成、IP地址的分类、IP地址的…

day4 qtqtqtc++

cppcpp ui代码 <?xml version"1.0" encoding"UTF-8"?> <ui version"4.0"><class>Widget</class><widget class"QWidget" name"Widget"><property name"geometry"><rec…

2023年,测试工程师最关心的几个问题内容:

2023年&#xff0c;测试工程师最关心的几个问题内容&#xff1a; 1. 自动化测试是否会取代手动测试&#xff1f;&#x1f916; 自动化测试和手动测试都在软件开发过程中扮演着重要的角色。虽然自动化测试在某些方面可以提供更高效和一致的测试覆盖&#xff0c;但它无法完全取…

第二次CCF计算机软件能力认证

第一题&#xff1a;相邻数对 给定 n 个不同的整数&#xff0c;问这些数中有多少对整数&#xff0c;它们的值正好相差 1。 输出格式 输入的第一行包含一个整数 n&#xff0c;表示给定整数的个数。 第二行包含所给定的 n 个整数。 输出格式 输出一个整数&#xff0c;表示值正好相…

Linux驱动进阶(二)——设备驱动中的阻塞和同步机制

文章目录 前言阻塞与非阻塞等待队列等待队列概述等待队列的实现等待队列的使用 同步机制实验同步机制设计实验验证 小结 前言 阻塞和非阻塞是设备访问的两种基本方式。使用这两种方式&#xff0c;驱动程序可以灵活地支持阻塞与非阻塞访问。在写阻塞与非阻塞的驱动程序时&#…

algo算法实验平台代码分享

algo算法实验平台代码分享 1. 介绍 本实验平台包括前端及后台两个模块&#xff0c;前端由 vue开发而来&#xff0c;后端主要采用 python编写&#xff0c;主要用于算法效果测试测评及改进。 原平台算法已做脱敏&#xff0c;使用者可以根据自己需求进行改写或开发&#xff0c;此…

hive on spark小文件问题【hive.merge.sparkfiles参数不生效】

hive on spark小文件问题【hive.merge.sparkfiles参数不生效】 我也是查看了我们目前集群的版本是spark是3.2.3版本 hive是3.1.3版本&#xff0c;都是比较新的版本&#xff0c;正常是支持这个参数的 在测试环境中&#xff0c;如果在sql中不使用group by函数其实可以可以生效的…

jquery实现甘特图时效管理

一、效果图 二、html文件 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html lang"en"><head><script src"../../../baoBiaoHtml/js/jquery-1.9.0.js"></script><script src"../..…

cyclo(Ser-Ser),23409-30-5,环(L-丝氨酰基-L-丝氨酰),具有明确的生物活性

​资料编辑|陕西新研博美生物科技有限公司小编MISSwu​ 产品描述&#xff1a; cyclo(Ser-Ser)&#xff08;CAS号&#xff1a;23409-30-5&#xff09;&#xff0c;环二肽(2,5-哌嗪二酮)是Z小的环肽&#xff0c;许多天然环二肽化合物都具有明确的生物活性&#xff0c;例如作为抗…

1.2 向量基础

什么是向量 向量的定义 ①向量是有大小和方向的有向线段。 ②向量没有位置&#xff0c;只有大小和方向 ③向量的箭头是向量的结束&#xff0c;尾是向量的开始 ④向量魔术的位移能被认为是宇宙平行的唯一序列 &#xff08;向量的数组不是向量的位置&#xff0c;而是向量在各个维…