Prometheus入门教程
Prometheus入门 | Prometheus
Prometheus是一个系统监控和告警系统。它由SoundCloud在2012年开源,并且是继Kubernetes之后第二个加入并毕业的云原生计算基金会项目。Prometheus将所有指标数据存储为时间序列,即指标信息与记录它的时间戳一起存储,还可以存储可选的键值对标签。
什么是指标,为什么它很重要?
用外行的话来说,指标是一种测量标准。我们想要测量的内容取决于不同的应用程序。对于一个Web服务器来说,它可以是请求时间,对于数据库来说,它可以是CPU使用率或活动连接数等。
指标在理解你的应用程序为何以某种方式工作方面扮演着重要角色。如果你运行一个Web应用程序,有人告诉你应用程序很慢,你需要一些信息来找出你的应用程序发生了什么。例如,当请求数量高时,应用程序可能会变慢。如果你有请求计数指标,你可以发现原因并增加服务器数量以处理重负载。每当你为应用程序定义指标时,你必须戴上侦探帽并问这个问题:
如果应用程序出现任何问题,哪些信息对我来说是重要的,以便调试?
Prometheus的基本组件包括:
-
Prometheus服务器(抓取并存储指标数据的服务器)。
-
要抓取的目标,例如一个暴露其指标的仪表化应用程序,或者一个暴露其他应用程序指标的导出器。
-
Alertmanager根据预设规则触发告警。
(注:除了这些,Prometheus还有push_gateway,这里不涉及)。
让我们以一个Web服务器为例,我们想要提取一个特定的指标,比如Web服务器处理的API调用数量。因此我们使用Prometheus客户端库添加了一些仪表代码并暴露了指标信息。现在我们的Web服务器暴露了它的指标,我们可以配置Prometheus来抓取它。现在Prometheus配置为从Web服务器抓取指标,Web服务器在xyz IP地址端口7500上监听,在特定的时间间隔内,比如说,每分钟一次。
在11:00:00时我将服务器公开供消费,应用程序计算请求计数并暴露它,Prometheus同时抓取计数指标并将值存储为0。
到11:01:00时,处理了一个请求。服务器中的仪表逻辑将计数增加到1。当Prometheus抓取指标时,计数的值现在是1。
到11:02:00时,又处理了两个请求,请求计数现在是1+2=3。类似地,指标被抓取并存储。
用户可以控制Prometheus抓取指标的频率。
(注:此表仅为理解目的的表示。Prometheus不以这种确切格式存储值)
Prometheus还有一个API,允许查询通过抓取存储的指标。这个API用于查询指标,在其上创建仪表板/图表等。PromQL用于查询这些指标。
一个简单的基于请求计数指标创建的折线图看起来像这样:
人们可以抓取多个有用的指标来理解应用程序中发生了什么,并在它们上面创建多个图表。将图表分组到仪表板中,并使用它来获得应用程序的概览。
让我们开始实际操作并设置Prometheus。Prometheus是用Go语言编写的,你只需要为你的操作系统编译的二进制文件。从这里下载对应你操作系统的二进制文件,并将二进制文件添加到你的路径中。
Prometheus暴露它自己的指标,可以被它自己或其他Prometheus服务器消费。
现在我们已经安装了Prometheus,下一步是运行它。我们只需要二进制文件和一个配置文件。Prometheus使用yaml文件进行配置。
1 | ``` |
prometheus --config.file=prometheus.yml
1 |
|
./node_exporter
1 |
|
global:
scrape_interval: 15s
scrape_configs:
- job_name: prometheus
static_configs:- targets: [“localhost:9090”]
- job_name: node_exporter
static_configs:- targets: [“localhost:9100”]
在这个教程中,我们讨论了什么是指标以及它们为什么重要,Prometheus的基本架构以及如何运行Prometheus。