0


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

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

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

在这里插入图片描述

那么,什么是Prometheus

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

编辑文件:vi /usr/lib/systemd/system/prometheus.service

注意:ExecStart配置的prometheus的全限定路径

在这里插入图片描述

[Unit]Description=prometheus-server
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
 
[Service]Type=simple
ExecStart=/usr/local/software/prometheus/prometheus --config.file=/usr/local/software/prometheus/prometheus.yml --web.enable-lifecycle --storage.tsdb.path=/usr/local/software/prometheus/data --storage.tsdb.retention.time=7d --web.max-connections=512 --web.read-timeout=3m --query.max-concurrency=25--query.timeout=2m
ExecReload=/bin/kill -s HUP $MAINPIDExecStop=/bin/kill -sTERM$MAINPID[Install]WantedBy=multi-user.target

添加开机自启动,启动 检查

#启动服务
systemctl start prometheus  
#开机自启服务
systemctl enable prometheus.service  
#重新加载服务
systemctl daemon-reload
#查看服务启动状态
systemctl status prometheus.service   

查看服务启动状态: netstat -natp | grep :9090

在这里插入图片描述

查看服务进程:ps -ef |grep prometheus

在这里插入图片描述

Prometheus的目录结构

在这里插入图片描述

  • console_libraries:用于存储用于在Prometheus控制台上显示的JavaScript库。
  • consoles:用于存储用于在Prometheus控制台上显示的控制台文件,其中包括查询和图形定义。
  • data:用于存储Prometheus的磁盘持久化数据。
  • LICENSE:Prometheus的许可证文件。
  • NOTICE:版权声明文件。
  • prometheus:存储Prometheus二进制文件及其相关文件的目录。
  • prometheus.yml:Prometheus的配置文件。
  • promtool:Prometheus的命令行工具,用于检查配置文件是否正确以及生成表达式的值。

操作面板介绍

在这里插入图片描述

配置文件的简介

#全局配置,默认,可以被覆盖global:scrape_interval: 15s  #全局的抓取间隔scrape_timeout: 10s  #抓取超时时间evaluation_interval: 15s  #评估间隔#告警配置alerting:alertmanagers:#告警管理器-follow_redirects:true#是否启用重定向enable_http2:true#是否启用HTTP2scheme: http
    timeout: 10s
    api_version: v2 #指定Alertmanager的API版本,此处为v2static_configs:#告诉Prometheus哪些目标是静态的(即不会更改),如果有多个目标,则可以在targets中指定多个地址。-targets:[]#抓取配置scrape_configs:-job_name: prometheus #任务名称honor_timestamps:true#指标的时间戳应该由服务器提供,而不是客户端在发送指标时提供的时间戳scrape_interval: 15s #抓取任务的时间间隔,即每15秒抓取一次。scrape_timeout: 10s  #抓取任务的超时时间,单位为秒,即每个目标最多等待10秒钟metrics_path: /metrics  #抓取指标的路径scheme: http #指定抓取时使用的协议,默认为httpfollow_redirects:true#是否启用重定向。在此处启用enable_http2:true#是否启用HTTP2static_configs:-targets:- 120.24.7.58:9090#目标配置,告诉Prometheus哪些目标需要抓取,如果有多个目标,则可以在targets中指定多个地址#此处抓取了一个名为prometheus的任务,每隔15秒抓取一次localhost:9090上的/metrics路径,超时时间为10秒

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

在这里插入图片描述

标签: prometheus 架构

本文转载自: https://blog.csdn.net/weixin_47533244/article/details/131713017
版权归原作者 互联网小阿祥 所有, 如有侵权,请联系我们删除。

“【监控系统】Prometheus架构相关概念及源码部署实战”的评论:

还没有评论