Prometheus 入门
翻译 原文链接
Prometheus是一个监控平台,通过抓取目标上和metric相关的HTTP endpoint,收集被监控目标的metrics。本文会指导你怎么安装、配置prometheus,并通过prometheus监控资源。你将会下载、安装、运行prometheus;下载、安装exporter or tools(输出主机或服务的时间序列数据)。我们介绍的第一个exporter是Node Exporter(输出主机级别的metrics,比如CPU、内存、磁盘)。
下载Prometheus
下载使用你平台的最新版本的Prometheus,然后解压:
curl -LO https://github.com/prometheus/prometheus/releases/download/v2.0.0/prometheus-2.0.0.linux-amd64.tar.gz
tar xvfz prometheus-*.tar.gz
cd prometheus-*
prometheus服务是一个单一的二进制文件。我们运行这个二进制文件,通过可选择项--help
寻求帮助
./prometheus --help
usage: prometheus [<flags>]
The Prometheus monitoring server
. . .
在开始使用Prometheus,让我们先配置它。
配置Prometheus
prometheus配置文件是yaml文件。prometheus安装包里面有一个简单的配置文件模版叫prometheus.yml
,我们从这里开始。
为了直观,下面的prometheus.yml
内容省去了大多注释的内容(通过#
可以增加注释)。
global:
scrape_interval: 15s
evaluation_interval: 15s
rule_files:
# - "first.rules"
# - "second.rules"
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
在上述配置文件中有三个区块:global
, rule_files
and scrape_configs
。
global
控制prometheus服务的全局配置。当前配置文件配置了两项。scrape_interval
控制prometheus抓取目标metrics的频率(每15s采集一次目标metrics),当然对个别的目标可以覆盖该全局配置。evaluation_interval
控制评估规则的频率,prometheus使用规则产生新的时间序列数据或者产生警报。
rule_files
块制定了规则所在的位置,prometheus可以根据这个配置加载规则,当前我们还没有配置任何规则。
scrape_configs
控制prometheus监控哪些资源。由于prometheus通过HTTP endpoint暴露的它本身的监控数据,prometheus也能够监控本身的健康情况。在默认的配置里有一个单独的job,叫做prometheus
,它采集prometheus服务本身输出的时间序列数据。这个job包含了一个单独的、静态配置的目标:在端口9090上的localhost
。prometheus默认会通过目标的/metrics
路径采集metrics。所以,默认的job通过URL:http://localhost:9090/metrics
采集metrics。收集到的时间序列会详述prometheus服务的状态和性能。
For a complete specification of configuration options, see the configuration documentation.
开始运行Prometheus
使用我们的配置文件运行prometheus,cd到prometheus目录,运行prometheus:
./prometheus --config.file=prometheus.yml
运行prometheus之后,你可以通过http://localhost:9090访问prometheus的状态页面。你也可以通过本地访问metrics endpoint:http://localhost:9090/metrics确认prometheus在工作,并在产生它自己的metrics。
使用表达式浏览器
我们首先展示prometheus自己采集自己的数据,prometheus自带展示界面。打开浏览器,访问http://localhost:9090/graph,点击Console
按钮
其中一个prometheus输出的metric是http_requests_total
(prometheus服务接收的http请求总数)。在浏览器输入http_requests_total
,会返回许多不同的时间序列(每个序列按照时间排序)。所有的序列有着同一个metric namehttp_requests_total
,不同的标签;这些标签标明不同类型的请求。如果我们仅仅对状态码200的请求感兴趣,可以使用下面的查询表达式查询相应的信息:
http_requests_total{code="200"}
为了计算序列的数量,可以使用如下查询表达式:
count(http_requests_total)
For more about the expression language, see the expression language documentation.
使用绘图界面
访问http://localhost:9090/graph,点击Graph
按钮。
输入如下表达式,绘制每秒HTTP请求率:
rare(http_requests_total[1m])
安装Node Exporter
收集本身的metrics不能很好的表现Prometheus的能力。所以,接下来我们使用Node Exporter监控我们第一个资源Linux Host,这个样例是监控prometheus所在的host,不过你可以监控任意一个host(只要prometheus能够访问)。你也可以使用VMI Exporter
采集windows主机。
Download the latest release of the Node Exporter of Prometheus for your platform, then extract it:
curl -LO https://github.com/prometheus/node_exporter/releases/download/v0.15.2/node_exporter-0.15.2.linux-amd64.tar.gz
tar xvfz node_exporter-*.tar.gz
cd node_exporter-*
Node Exporter是一个单独的二进制文件,node_exporter
,有一组可配置的收集器用于手机各种基于主机的metrics。默认,收集器会收集cpu、内存、磁盘和其它metrics,暴露,使prometheus能够抓取监控数据。
启动Node Exporter:
./node_exporter
Node Exporter的metrics可以通过访问9100端口的/metrics路径获取。本例中,访问地址:http://localhost:9100/metrics。
现在我们需要配置Prometheus,使Prometheus能够发现这个exporter。
配置prometheus监控Host
我们将会配置prometheus抓取新的目标metrics。我们需要在prometheus.yml
配置的scrape_configs
区增加一个job。
- job_name: node
static_configs:
- targets: ['localhost:9100']
我们新的job叫做“node”。它抓取一个静态的目标,在端口9100上的loclahost。你可以用hostname或者IP地址替换localhost。
现在我们需要重新加载Prometheus配置来激活这个新的job。reload配置有两种方式:
- send SIGHUP signal
kill -HUP <pid>
- send a HTTP POST to the Prometheus web server
- 使用API来reload prometheus需要在启动prometheus时,开启web.enable-lifecycle配置参数
- --web.enable-lifecycle Enable shutdown and reload via HTTP request.
- /prometheus --config.file=prometheus.yml --web.enable-lifecycle
curl -X POST http://localhost:9090/-/reload
访问prometheus,在“Execute”按钮旁边有一个下拉框,在下拉框中可以看到prometheus采集的指标列表。在这个列表中能够看到以node_
开头metrics,这些metrics就是Node Exporter收集的。比如通过node_cpu
查看节点CPU使用率。
一个很有用的metric是up
metric。up
metric能够标识目标的状态。如果值是1,那么能够成功的从目标抓取metrics;如果值是0,那么则标明从该目标抓取metrics失败。在一定程度上能够通过改指标判断目标的状态。当前只能看到两个up
metric,一个是关于Node Exporter的,一个是关于prometheus的。
总结
本文简单介绍了如何安装、配置prometheus来监控资源信息。同时,也安装了第一个exporter,介绍了时间序列的基本查询方法。
You can find more documentation and guides to help you continue to learn more about Prometheus.