Prometheus 监控工具详细介绍与安装

网友投稿 1841 2022-09-04

Prometheus 监控工具详细介绍与安装

Prometheus 监控工具详细介绍与安装

前言

Prometheus 监控工具介绍

Prometheus是一个最初在SoundCloud上构建的开源系统监视和警报工具包。 自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有一个非常活跃的开发人员和用户社区。它现在是一个独立的开源项目,可以独立于任何公司进行维护。为了强调这一点,并澄清项目的治理结构,Prometheus 于2016年加入 云计算本地计算基金会,作为继Kubernetes之后的第二个托管项目。

​​监控工具架构图

Prometheus生态系统由多个组件组成,其中许多组件是可选的:

主要的Prometheus server,用于存储时间序列数据。用于检测应用程序代码的客户端库。用于支持short-lived工作的推送网关(push gateway)。针对HAProxy,StatsD,Graphite等服务的exporters。一个alertmanager处理警报管理器。各种支持工具

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

具体组件的作用:

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

• ClientLibrary:客户端库

• Push Gateway:短期存储指标数据。主要用于临时性的任务,各个目标主机可以上报数据到pushgateway,,然后prometheus server统一从pushgateway拉取数据

• Exporters:采集已有的第三方服务监控指标并暴露metrics(类似于zabbix agent,但是exporter有很多种,针对不同的监控指标)

• Web UI:简单的Web控制台

普罗米修斯服务端是内置了TSDB的数据库,是存储在本地的文件系统当中。存储了采集被监控端数据指标。

获取指标有两种方式:

一种直接是从pushgateway这里获取被监控指标,这是一个独立的组件,主要完成短周期任务暴露的指标,比如定时任务。(短周期任务不是每分钟都有的指标,可能在运行任务的时候才会产生指标。所以可以将临时的指标汇总到pushgateway,然后有pushgateway统一的暴露给服务端去采集)另外一种就是主要使用的,持久性的应用,比如nginx,mysql还要微服务jar包,这些都属于持久性运行任务的。

使用这种任务的监控就是采用exporter方式了。会配置exporter这样一个组件,主要是用来采集指标暴露给服务端。

Prometheus 根据配置的作业,直接从数据源pull拉取或者通过中间推送网关(push gateway),获取度量值Metrics。它在本地存储所有获取的样本,并在此数据上运行规则,以从现有数据聚合和记录新的时间序列,或者生成警报。Grafana或其他API使用者可用于可视化收集的数据。

服务端采集好之后就会存储在tsdb数据库当中,可以通过其ui去查看,因为其通过了webhook,所以告警是由单独的组件完成的。(告警规则在普罗米修斯里面定义,触发了告警推送给altermanager)

普罗米修斯实现了服务的发现,也就是可以自动的找到被监控端,这个需要在普罗米修斯的配置文件里面去配置。有了服务发现就不要一个一个的去配置了,让被监控端自动纳入监控。

普罗米修斯从目标主机拉取数据的时候有两种方式,一种是静态的,也就是我们部署exporter,静态的采集指标,也可以配置服务发现,自动的发现指标数据。通过服务发现和exporter采集到的数据的方式都是采用了默认的pull方式拉取指标的,也可以使用pushgateway上报到prometheus当中,通过在目标主机上面写脚本的方式。

监控指标数据模型

数据模型:

• Prometheus将所有数据存储为时间序列(存储的时候都会记录时间,并且存储到时序的数据库里面,也就是内置的TSDB)

• 具有相同度量名称以及标签属于同一个指标(指标名称是一样,但是标签是不一样的)

• 每个时间序列都由度量标准名称和一组键值对(称为标签)唯一标识,

通过标签查询指定指标。

指标格式  指标名称加上多个标签

{

再配置被监控端这里要配置监控谁,在配置被监控端,必须要暴露指标出来,这种指标以部署

• 二进制部署

   -

• Docker部署

​​~]# lsanaconda-ks.cfg prometheus-2.23.0.linux-amd64.tar.gz[root@localhost ~]# mv prometheus-2.23.0.linux-amd64 /usr/local/prometheus[root@localhost ~]# cd /usr/local/prometheus/[root@localhost prometheus]# lsconsole_libraries consoles LICENSE NOTICE prometheus prometheus.yml promtool

prometheus 主程序

promtool 检查普罗米修斯的工具,主要是用于检查普罗米修斯配置文件的语法

Prometheus启动

./premetheus -h 命令行常用参数:

• --config.file="prometheus.yml" # 指定配置文件

• --web.listen-address= "0.0.0.0:9090" # 监听地址和端口

• --log.level=info # 日志级别

• --alertmanager.timeout=10s # 与报警组件的超时时间

• --storage.tsdb.path="data/ " # 数据目录

• --storage.tsdb.retention.time=15d # 数据保存时间,默认15天(到时候会在普罗米修斯目录下生成data目录用来保存数据,数据存储时间是15天,会定期的删除,也可以自己设置保存一个月)

直接启动,查看监听端口

[root@localhost prometheus]# ./prometheus

可以看到监听的端口是9090

[root@localhost ~]# netstat -tpln | grep pr

tcp6 0 0 :::9090 :::* LISTEN 26554/./prometheus

浏览器上访问你的主机IP加端口即可

Alters 如果你在这配置了告警,那么这里会显示告警信息

Graph 根据普罗米修斯的查询语言会给你绘制一个图,这里主要是用于编写promq表达式相关的调试

Status 查看运行状态。在status里面的tragets里面是普罗米修斯监控的目标,默认把自己也监控了,service discovery服务发现可以加入被监控端。这里也可以看到告警规则,Configuration 查看普罗米修斯的配置文件内容

可以看到产生了数据目录,以后就可以对该目录做定期的备份

[root@localhost ~]# cd /usr/local/prometheus/[root@localhost prometheus]# lsconsole_libraries consoles data LICENSE NOTICE prometheus prometheus.yml promtool[root@localhost prometheus]# cd data/[root@localhost data]# ls01ETPMX68HCBK9BN6DA4KPNPNK chunks_head lock queries.active wal

使用系统的服务systemd管理来管理普罗米修斯

[root@localhost prometheus]# cat /usr/lib/systemd/system/prometheus.service[Unit]Description=prometheus #描述普罗米修斯,可以写任意内容[Service] #启动普罗米修斯具体路径,如果需要什么参数都可以在后面加上ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.ymlExecReload=/bin/kill -HUP $MAINPIDKillMode=processRestart=on-failure[Install]WantedBy=multi-user.target

在该目录下 /usr/lib/systemd/system/做任何配置文件改动都要执行daemon-reload,让系统读取到更新

[root@localhost prometheus]# systemctl daemon-reload[root@localhost prometheus]# systemctl start prometheus[root@localhost prometheus]# systemctl enable prometheus

这样就部署好了你的普罗米修斯,如果更新了其配置可以使用kill -HUP重新热加载你的配置文件,避免重启普罗米修斯

[root@localhost ~]# ps -ef | grep promeroot 63071 1 0 10:08 ? 00:00:12 /usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.ymlroot 63472 62981 0 10:39 pts/0 00:00:00 grep --color=auto prome[root@localhost ~]# kill -HUP 63071

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:AIOps的落地应用
下一篇:PHP中traits的作用和使用(php trait 和 公共函数的区别)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~