Prometheus 是什么?

在这里插入图片描述

Prometheus 是什么?

源自专栏《docker常用命令系列&&k8s系列目录导航

什么是Prometheus?

Prometheus是一个系统监控和警报系统。它由SoundCloud在2012年开源,是继Kubernetes之后加入和毕业于云原生计算基金会的第二个项目。Prometheus将所有指标数据存储为时间序列,即指标信息与记录时间戳一起存储,还可以存储可选的键-值对标签与指标一起。

什么是指标,为什么重要?

在通俗的术语中,指标是一种测量标准。我们要衡量什么取决于应用程序。对于Web服务器,它可以是请求时间;对于数据库,可以是CPU使用率或活动连接数等。

指标在理解应用程序为什么以某种方式运行中起着重要作用。如果您运行一个Web应用程序,有人告诉您应用程序运行缓慢。您需要一些信息来查找应用程序出现问题的原因。例如,当请求量增加时,应用程序可能会变慢。如果您有请求计数指标,您就可以发现原因,并增加服务器数量以处理大量负载。每当您为应用程序定义指标时,您必须戴上侦探帽,并问自己这个问题:如果应用程序出现问题,哪些信息对我调试将是重要的?

特性

  • 多维数据模型:通过指标名称和键/值对标识的时间序列数据。
  • PromQL:一个灵活的查询语言,利用这种多维性。
  • 无分布式存储依赖:单个服务器节点是自治的。
  • 拉取模型:通过 HTTP 的拉取模型进行时间序列收集。
  • 推送支持:通过中介网关支持推送时间序列。
  • 目标发现:通过服务发现或静态配置发现目标。
  • 多种图形和仪表板支持

Prometheus的基本架构

Architecture

一个Prometheus设置的基本组件包括:

  • Prometheus服务器(负责抓取和存储指标数据)。
  • 目标对象,例如暴露其指标的已经过仪器化的应用程序,或者暴露另一个应用程序指标的导出器。
  • Alertmanager,根据预设规则提出警报

(注:除此之外,Prometheus还有push_gateway,此处未涉及。)

何时适用?

  • 纯数值时间序列:适用于记录任何纯数值时间序列。
  • 机器中心监控:适用于机器中心监控以及高度动态的服务导向架构监控。
  • 微服务支持:在微服务世界中,其对多维数据收集和查询的支持是一个特别的强项。
  • 可靠性设计:设计用于可靠性,在停机期间允许您快速诊断问题。

何时不适用?

  • 可靠性优先:即使在故障条件下,您也可以查看关于系统的可用统计信息。
  • 非100%准确性需求:如果您需要100%的准确性,例如按请求计费,Prometheus 可能不是一个好的选择,因为收集的数据可能不够详细和完整。

示意图

让我们以Web服务器作为示例应用程序,我们想要提取特定指标,比如Web服务器处理的API调用数量。因此,我们添加某些基于Prometheus客户端库的仪器代码,并暴露指标信息。现在我们的Web服务器暴露了其指标,我们可以配置Prometheus来抓取它。现在,Prometheus被配置为从Web服务器获取指标,该服务器在特定时间间隔内监听特定IP地址端口7500,比如每分钟一次。

在11:00:00当我将服务器公开供使用时,应用程序计算请求计数并暴露它,Prometheus同时抓取计数指标并将值存储为0。

到了11:01:00,处理了一个请求。服务器中的仪器逻辑将计数增加到1。当Prometheus抓取该指标时,计数的值现在为1。

到了11:02:00,又处理了两个请求,请求计数现在为1+2 = 3。类似地,指标被抓取和存储。

用户可以控制Prometheus抓取指标的频率。

时间戳 请求计数(指标)
11:00:00 0
11:01:00 1
11:02:00 3

(注:此表仅用于理解目的。Prometheus并不以这种确切格式存储值)

Prometheus还具有API,允许查询已通过抓取存储的指标。此API用于查询指标,创建仪表板/图表等。PromQL用于查询这些指标。

一个基于请求计数指标创建的简单折线图将如下所示。

Graph

展示

可以抓取多个有用的指标,以了解应用程序中发生了什么,并为其创建多个图表。将这些图表分组到一个仪表板中,用它来概览应用程序。

如何操作?

让我们动手设置Prometheus。Prometheus是使用Go编写的,您只需要根据您的操作系统下载编译的二进制文件。从这里下载与您的操作系统对应的二进制文件,并将二进制文件添加到您的路径中。

Prometheus暴露自己的指标,可以由自身或另一个Prometheus服务器使用。

现在我们安装了Prometheus,下一步是运行它。我们只需要二进制文件和一个配置文件。Prometheus使用yaml文件进行配置。

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ["localhost:9090"]

在上述配置文件中,我们已经提到了scrape_interval,即我们希望Prometheus多频繁抓取指标。我们添加了scrape_configs,其中包含一个名称和目标,用于从中抓取指标。Prometheus默认监听端口为9090。因此将其添加到targets中。

prometheus --config.file=prometheus.yml

现在我们已经运行并抓取自身的指标,每15秒抓取一次。Prometheus具有标准导出器可用于导出指标。接下来,我们将运行一个节点导出器,这是用于机器指标的导出器,并使用Prometheus进行抓取。 (下载节点度量导出器。)

在终端中运行节点导出器。

./node_exporter

  • 34
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BigDataMLApplication

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值