Prometheus介绍安装和快速入门

这篇具有很好参考价值的文章主要介绍了Prometheus介绍安装和快速入门。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Prometheus介绍安装和快速入门

1、Prometheus介绍

1.1 什么是 Prometheus?

Prometheus(普罗米修斯)是古希腊的一个神明,名字的意思是「先见之明」。从它的名字可以看出,

Prometheus 是做「先见之明」的监控告警用途。维基百科简单写了它的作用:Prometheus is a free software

application used for event monitoring and alerting(Prometheus 是用来监控、报警的免费软件)。

Prometheus 官网则是用「From metrics to insight」(用指标洞察系统的意思)描述了 Prometheus 的用途。

看到这里我们大概知道 Prometheus 其实就是一个数据监控解决方案,它能帮你简单快速地搭建起一套可视化

的监控系统。但这么说还是有点抽象,下面我举几个简单的例子,帮助大家理解 Prometheus 究竟能做什么?

对于运维人员来说,他们需要监控机器的 CPU、内存、硬盘的使用情况,以此来保证运行在机器上的应用的稳定

性。对于研发人员来说,他们关注某个异常指标的变化情况,从而来保证业务的稳定运行。对于产品或运营来说,

他们更关心产品层面的事情,例如:某个活动参加人数的增长情况,活动积分的发放情况。

对于上面说到的这些功能,Prometheus 都能够实现。Prometheus 能根据这些收集的数据实现告警功能。

例如:运维希望在 CPU 达到 80% 的时候给值班的运维人员发送邮件,产品希望活动积分发放数量超过10万的时

候发送告警邮件。这些都可以通过 Prometheus 实现。

除了数据收集、告警功能之外,Prometheus 还有很多强大的功能,例如:强大的 ProQL 查询、许多客户端库

等。因为 Prometheus 功能强大、构建成本低,所以现在越来越多的公司都使用 Prometheus 作为其数据监控的

解决方案。

Prometheus 是一个开源的监控和报警系统,它将我们关心的指标值通过 PULL 的方式获取并存储为时间序列数

据。如果单从它的收集功能来讲,我们也可以通过 mysql、redis 等方式实现。然而,这些数据是在每时每刻产生

的,其庞大的规模需要我们好好的考虑其存储方式。另外,这些监控数据大多数时候是跟统计相关的,比如数据与

时间的分布情况等,这需要有专业的度量知识。而这些正是 Prometheus 的擅长所在。由于 Prometheus 的关注

重点在于指标值以及时间点这两个因素,所以外部程序对它的接入成本非常的低。这种易用性可以让我们对数据进

行多维度、多角度的观察和分析,使得监控的效果更加具体化,例如内存消耗、网络利用率、请求连接数等。

除此之外,Prometheus 还具备了操作简单、可拓展的数据收集和强大的查询语言等特性,这些特性能帮助我们在

问题出现的时候,快速告警并定位错误。所以现在很多微服务基础设施都会选择接入 Prometheus,像 k8s、云原

生等。

1.2 为什么要学 Prometheus?

对于一直在一线开发的同学而言,你可能只需要把自己的需求做好、没有 bug、顺利上线,那么你的任务就完成

了。但是如果你是一个 leader,那么你是对整个业务系统负责,这个业务系统出了什么问题,都是你的责任。这

个时候,你需要时刻关注这个系统是否正常运行。

对于流量不是很大的系统来说,出现几分钟的故障可能造成不了多少损失。但是对于像淘宝、美团、字节跳动这样

的巨无霸来说,宕机 1 分钟损失的金额可能就是几百万!

所以弄清楚此时此刻系统的运行是否正常?各项业务指标是否超过阈值?这些问题是每个经验丰富的研发人员所需

要关注的事情!

那么如何监控你的系统?如何得知系统目前是正常还是异常?甚至如何预知未来一段时间系统可能出问题?

Prometheus 正是这么一套数据监控解决方案。它能让你随时掌控系统的运行状态,快速定位出现问题的位置,快

速排除故障。

只要按照 Prometheus 的方式来做,按部就班地学习和部署,我们就可以监控机器的 CPU、内存等资源的使用情

况、Java 应用的运行情况以及业务各项指标的实时数据。

当然有一些公司会自己使用 Kafaka 收集监控数据,并且存储在 Hive 中,最终通过页面聚合数据,同样能够实现

数据监控。但是这种解决方案需要开发人员掌握 Hive + Hadoop 等大数据框架,并且在前端展示上比较局限。

而通过 Prometheus 则可以直接部署使用,并且其与 Grafana 配套使用可以呈现出非常多样化的图表配置。对于

中小规模的团队来说,可以极大地减少成本,加快研发速度。

而对于个人来讲,掌握 Prometheus 可以增加你当 leader 的竞争力。毕竟如果一个研发对自己的系统运行状况

都不了解,那么他怎么做 leader,怎么带领一个团队往前冲呢?

1.3 总结

对于工作多年的研发人员,对自己负责的系统必须了然于胸。而要做到了然于胸,单靠一味的自信是不够的,必须

借助一套功能强大的业务监控系统。Prometheus 作为这其中的翘楚,凭借其完善的功能、海量数据支持,可以让

我们较低成本地实现业务监控。

2、Prometheus安装和快速入门

Prometheus 是任何一个高级工程师必须要掌握的技能。那么如何从零部署一套 Prometheus 监控系统呢?本篇

文章将从 Prometheus 的原理讲起,手把手带你用一个最简单的例子部署一套 Prometheus 监控系统。

2.1 基本原理

Prometheus 的基本架构如下图所示:

Prometheus介绍安装和快速入门

从上图可以看到,整个 Prometheus 可以分为四大部分,分别是:

  • Prometheus 服务器

Prometheus Server 是 Prometheus 组件中的核心部分,负责实现对监控数据的获取,存储以及查询。

  • NodeExporter 业务数据源/Targets Discover

业务数据源通过 Pull/Push 两种方式推送数据到 Prometheus Server。

  • AlertManager 报警管理器

Prometheus 通过配置报警规则,如果符合报警规则,那么就将报警推送到 AlertManager,由其进行报警处理。

  • 可视化监控界面

Prometheus 收集到数据之后,由 WebUI 界面进行可视化图标展示。目前我们可以通过自定义的 API 客户端进行

调用数据展示,也可以直接使用 Grafana 解决方案来展示。

其它组件:

  • Pushgateway

为监控节点提供 Push 功能,再由 Prometheus server 到 Pushgateway 集中 Pull 数据。

  • PromQL

针对指标数据查询的语言,类似 SQL。

简单地说,Prometheus 的实现架构也并不复杂。其实就是收集数据、处理数据、可视化展示,再进行数据分析进

行报警处理。但其珍贵之处在于提供了一整套可行的解决方案,并且形成了一整个生态,能够极大地降低我们的研

发成本。

下面我们通过一个简单的例子来实现对服务器 CPU、内存等硬件信息的监控。

2.2 安装运行 Prometheus 服务端

Prometheus 服务端负责数据的收集,因此我们应该首先安装并运行 Prometheus Server。

https://prometheus.io/download/ 找到最新版本的 Prometheus Sevrer 软件包:

Prometheus介绍安装和快速入门

下载 prometheus-2.34.0-rc.2.linux-amd64.tar.gz 安装包,上传到服务器:

Prometheus介绍安装和快速入门

使用 tar -xvf prometheus-2.34.0-rc.2.linux-amd64.tar.gz 解压,可以看到如下目录结构:

Prometheus介绍安装和快速入门

新建一个 data 目录,用来作为数据的存储路径,也可以通过运行时的 --storage.tsdb.path="数据存放路径"

命令另行指定路径,如果不指定默认是data目录。

Prometheus介绍安装和快速入门

prometheus.yml 是 prometheus 的配置文件,prometheus 是运行的可执行文件。

启动 prometheus 服务,其会默认加载当前路径下的 prometheus.yaml 文件,当然我们也可以手动指定配置文件

地址:

# 前台启动
$ ./prometheus --config.file=prometheus.yml
# 后台启动
$ nohup ./prometheus --config.file=prometheus.yml >> nohup.out 2>&1 &

正常的情况下,你可以看到以下输出内容:
Prometheus介绍安装和快速入门
Prometheus介绍安装和快速入门

输入 http://192.168.2.186:9090/graph 通过浏览器进行访问,如果没有开放端口需要先开放9090端口:

# 查看开放的端口号 
firewall-cmd --list-all
# 设置开放的端口号
firewall-cmd --add-port=9090/tcp --permanent
# 重启防火墙 
firewall-cmd --reload

可以看到如下页面,这个是 Prometheus 自带的监控管理界面:

Prometheus介绍安装和快速入门

2.3 将 Prometheus 设置为服务

创建service并设置自动启动:

$ vim /usr/lib/systemd/system/prometheus.service

配置如下内容:

[Unit]
Description=prometheus
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/home/zhangshixing/prometheus/prometheus-2.34.0-rc.2.linux-amd64/prometheus --config.file=/home/zhangshixing/prometheus/prometheus-2.34.0-rc.2.linux-amd64/prometheus.yml
Restart=on-failure
[Install]
WantedBy=multi-user.target

设置自动启动:

$ systemctl enable prometheus

启动服务并查看启动状态:

# 重新加载某个服务的配置文件
$ systemctl daemon-reload
# 启动prometheus
$ systemctl start prometheus
# 查看prometheus状态
$ systemctl status prometheus
[root@zsx ~]# systemctl status prometheus
● prometheus.service - prometheus
   Loaded: loaded (/usr/lib/systemd/system/prometheus.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2023-03-01 10:28:26 CST; 19s ago
     Docs: https://prometheus.io/
 Main PID: 108411 (prometheus)
    Tasks: 6
   Memory: 23.2M
   CGroup: /system.slice/prometheus.service
           └─108411 /home/zhangshixing/prometheus/prometheus-2.34.0-rc.2.linux-amd64/promet...

Mar 01 10:28:27 zsx.com prometheus[108411]: ts=2023-03-01T02:28:27.099Z caller=head.go:53…43µs
Mar 01 10:28:27 zsx.com prometheus[108411]: ts=2023-03-01T02:28:27.099Z caller=head.go:54...e"
Mar 01 10:28:27 zsx.com prometheus[108411]: ts=2023-03-01T02:28:27.107Z caller=tls_config...se
Mar 01 10:28:27 zsx.com prometheus[108411]: ts=2023-03-01T02:28:27.107Z caller=head.go:61...=0
Mar 01 10:28:27 zsx.com prometheus[108411]: ts=2023-03-01T02:28:27.107Z caller=head.go:61…55ms
Mar 01 10:28:27 zsx.com prometheus[108411]: ts=2023-03-01T02:28:27.111Z caller=main.go:95...IC
Mar 01 10:28:27 zsx.com prometheus[108411]: ts=2023-03-01T02:28:27.111Z caller=main.go:96...d"
Mar 01 10:28:27 zsx.com prometheus[108411]: ts=2023-03-01T02:28:27.111Z caller=main.go:11...ml
Mar 01 10:28:27 zsx.com prometheus[108411]: ts=2023-03-01T02:28:27.497Z caller=main.go:1179…µs
Mar 01 10:28:27 zsx.com prometheus[108411]: ts=2023-03-01T02:28:27.498Z caller=main.go:91...."
Hint: Some lines were ellipsized, use -l to show in full.

其它的服务都类似,只需要修改相应 service 文件的一些参数。

2.4 运行 NodeExporter 客户端数据源

NodeExporter 是 Prometheus 提供的一个可以采集到主机信息的应用程序,它能采集到机器的 CPU、内存、磁

盘等信息。

我们从 https://prometheus.io/download/ 获取最新的 Node Exporter 版本的二进制包:

Prometheus介绍安装和快速入门

下载 node_exporter-1.3.1.linux-amd64.tar.gz 上传到服务器:

Prometheus介绍安装和快速入门

使用 tar -xvf node_exporter-1.3.1.linux-amd64.tar.gz 进行解压:

Prometheus介绍安装和快速入门

运行 Node Exporter,我们指定用 8080 端口运行:

# 前台运行
$ ./node_exporter --web.listen-address 192.168.2.186:8080
# 后台运行
$ nohup ./node_exporter --web.listen-address 192.168.2.186:8080 >> nohup.out 2>&1 &

启动成功后,可以看到以下输出:

Prometheus介绍安装和快速入门
Prometheus介绍安装和快速入门

访问 http://192.168.2.186:8080/ ,如果没有开放端口需要先开放8080端口:

# 查看开放的端口号 
firewall-cmd --list-all
# 设置开放的端口号
firewall-cmd --add-port=8080/tcp --permanent
# 重启防火墙 
firewall-cmd --reload

可以看到以下页面:

Prometheus介绍安装和快速入门

访问 http://192.168.2.186:8080/metrics,可以看到当前 node exporter 获取到的当前主机的所有监控数

据,如下所示:

Prometheus介绍安装和快速入门

每一个监控指标之前都会有一段类似于如下形式的信息:

# HELP node_cpu_guest_seconds_total Seconds the CPUs spent in guests (VMs) for each mode.
# TYPE node_cpu_guest_seconds_total counter
node_cpu_guest_seconds_total{cpu="0",mode="nice"} 0
node_cpu_guest_seconds_total{cpu="0",mode="user"} 0

其中 HELP 用于解释当前指标的含义,TYPE 则说明当前指标的数据类型,node_cpu_guest_seconds_total

监控的具体指标。

除了这些以外,在当前页面中根据物理主机系统的不同,你还可能看到其它的一些监控指标。

2.5 配置 Prometheus 的监控数据源

现在我们运行了 Prometheus 服务器,也运行了业务数据源 NodeExporter。但此时 Prometheus 还获取不到任

何数据,我们还需要配置下 prometheus.yml 文件,让其去拉取 Node Exporter 的数据。

我们配置一下 Prometheus 的配置文件,让 Prometheus 服务器定时去业务数据源拉取数据。编辑

prometheus.yml并在 scrape_configs 节点下添加以下内容:

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
  # 采集node exporter监控数据
  - job_name: 'node'
    static_configs:
      - targets: ['192.168.2.186:8080']

Prometheus介绍安装和快速入门

上面配置文件配置了两个任务。一个是名为 prometheus 的任务,其从「localhost:9090」地址读取数据。另一个

是名为 node 的任务,其从「192.168.2.186:8080」地址读取数据。

备注:每次修改配置完成,用promtool检测配置文件是否正确

$ ./promtool check config ./prometheus.yml

Prometheus介绍安装和快速入门

配置完成后,我们重新启动 Prometheus。

$  systemctl restart prometheus

重新访问浏览器:

Prometheus介绍安装和快速入门
Prometheus介绍安装和快速入门

2.6 查询监控数据

配置完 Prometheus 读取的数据源之后,Prometheus 便可以从 Node Exporter 获取到数据了。那么接下来我们

如何查看到这些数据呢?答案是:Prometheus UI!

Prometheus UI 是 Prometheus 内置的一个可视化管理界面,我们通过 http://192.168.2.186:9090 就可以

访问到该页面。

通过 Prometheus UI 可以查询 Prometheus 收集到的数据,而 Prometheus 定义了 PromQL 语言来作为查询监

控数据的语言,其余 SQL 类似。

接下来我们访问 http://192.168.2.186:9090,进入到 Prometheus Server。如果输入「up」并且点击执行

按钮以后,可以看到如下结果:

Prometheus介绍安装和快速入门

可以看到有几条记录,其中 instance 值为192.168.2.186:8080的记录,value 是 1,这代表对应应用是存活状

态。

up{instance="192.168.2.186:8080", job="node"}        1

例如查看我们所运行 NodeExporter 节点所在机器的内存使用情况,可以输入

node_memory_Active_bytes/(1024*1024*1024) 查看。

Prometheus介绍安装和快速入门
Prometheus介绍安装和快速入门

查看 NodeExporter 节点所在机器 CPU 1 分钟的负载情况,可以输入 node_load1 即可查看。

Prometheus介绍安装和快速入门
Prometheus介绍安装和快速入门

到这里,我们基本上为完成了数据的收集过程,即数据从业务侧收集到 Prometheus 侧,并且还学会了如何使用

Prometheus 自带的控制台。

2.7 总结

这篇文章我们从 Prometheus 的原理入门,剖析了 Prometheus 实现的原理,并且用一个简单的例子从零实现了

一套业务监控系统。通过 Prometheus UI,我们可以实时获取到机器的存活信息、CPU、内存信息。文章来源地址https://www.toymoban.com/news/detail-499361.html

到了这里,关于Prometheus介绍安装和快速入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Telegraf介绍和使用(安装、使用、内部数据结构-InfluxDB行协议、配置、架构、Glob的使用、插件的集成和实现、集合Prometheus)

    Telegraf介绍和使用(安装、使用、内部数据结构-InfluxDB行协议、配置、架构、Glob的使用、插件的集成和实现、集合Prometheus)

    Telegraf是一个基于插件的开源指标采集工具。本身是为InfluxDB(一款时序数据库)量身打造的数据收集器,但是它过于优秀,能够将抓取的数据写到很多地方,尤其在时序数据库领域,很多时序数据库都能够与它配合使用。通常,它每隔一段时间抓取一批指标数据(比如机器的

    2024年02月12日
    浏览(11)
  • 实时嵌入式Linux设备基准测试快速入门1介绍

    实时嵌入式Linux设备基准测试快速入门1介绍

    工业4.0已经到来,生产线需要新技术来应对客户日益增长的新功能需求,使用配备嵌入式 Linux 的单板计算机来处理所需的许多功能是大势所趋。这样大多数工业控制系统都需要实时性能,开发人员不得不面对这样一个事实:Linux原本并不适用于实时环境。不过多年来很多人都

    2024年02月15日
    浏览(11)
  • 快速入门使用spring详细步骤(介绍、导入依赖、第一个简单程序)

    快速入门使用spring详细步骤(介绍、导入依赖、第一个简单程序)

    目录 一、spring介绍 二、spring使用步骤 (一)创建maven项目  (二) maven项目导入spring依赖 (三)开始编写第一个spring程序 三、新篇章之springboot(额外篇) spring是作为Java EE企业级开发很好的一个框架,这篇文章就来讲解一下怎么使用spring。要使用spring,现在一般都是 使用

    2024年02月04日
    浏览(10)
  • Go语言学习笔记:GORM 介绍及快速入门,简单查询

    GORM 是一个用 GoLang 语言编写的 ORM(对象关系映射)库。它被设计为开发者友好的方式来进行数据库操作。GORM 提供了一种高级的 API 来处理数据库的 CRUD(创建、读取、更新、删除)操作,它支持主流的关系型数据库,如 MySQL、PostgreSQL、SQLite 和 Microsoft SQL Server。 GORM 指南 使

    2024年01月21日
    浏览(42)
  • STM8低门槛快速入门,类似Arduino封装库模式开发介绍

    STM8低门槛快速入门,类似Arduino封装库模式开发介绍

    📌STM8外设封装库原项目开源地址: https://github.com/gicking/STM8_templates 📍个人整理过的项目地址: https://github.com/perseverance51/STM8-Templates 🏳‍🌈说明:类似Arduino封装库,并不是在Arduino平台来开发STM8。开发模式是基于SDCC和STVD环境的。编译速度是Arduino开发环境没法比的。 📓STM

    2024年02月12日
    浏览(7)
  • AI绘画 | 一文学会Midjourney绘画,创作自己的AI作品(快速入门+参数介绍)

    AI绘画 | 一文学会Midjourney绘画,创作自己的AI作品(快速入门+参数介绍)

    首先,生成将中文描述词翻译成英文 然后在输入端输入: /imagine prompt:Bravely running boy in Q version, cute head portrait 最后,稍等一会即可输出效果 说明: 下面的U1、U2、U3、U4代表的第一张、第二张、第三张、第四张图片。点击可以生成对应图片的单个图。如下图所示。 V1、V2、V

    2024年02月12日
    浏览(13)
  • kafka 安装快速入门

    kafka 安装快速入门

    直接上干货,我们公司最近要进行消息推送指定软件kafka,直接走起。 1.下载         kafka 是apache的项目。 下载 地址: kafka.apache.org/ 点击download kafka 进入查看相关版本进行下载。 我这里用的版本比窘旧一点,公司技术一切求稳。 下载好安装包就已经实现了。 2.安装  说安

    2024年02月10日
    浏览(8)
  • Python 安装与快速入门

    许多PC和Mac已经预装了Python。 要检查在Windows PC上是否安装了Python,请在开始菜单中搜索Python,或在命令行(cmd.exe)上运行以下命令: 要检查在Linux或Mac上是否安装了Python,请在Linux上打开命令行或在Mac上打开终端,并键入: 如果发现您的计算机上没有安装Python,您可以免费

    2024年02月08日
    浏览(6)
  • Yarn介绍及快速安装 - Debian/Ubuntu Linux

    Yarn 是一个用于管理 JavaScript 包的快速、可靠和安全的包管理器。它是由 Facebook、Google、Exponent 和 Tilde 团队共同开发的,旨在提供比 npm 更快速、可靠的包管理体验。 以下是 Yarn 的一些主要特点和优势: 快速安装:Yarn 使用并行下载和缓存机制,能够更快地下载和安装依赖包

    2024年02月12日
    浏览(9)
  • Flume 快速入门【概述、安装、拦截器】

    Flume 快速入门【概述、安装、拦截器】

    Flume 是一个开源的数据采集工具,最初由 Apache 软件基金会开发和维护。它的主要目的是帮助用户将大规模数据从各种数据源(如日志文件、网络数据源、消息队列等)采集、传输和加载到数据存储系统(如 Hadoop HDFS、Apache HBase、Apache Hive 等)。 Flume 旨在处理大规模数据流,

    2024年02月07日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包