Prometheus 开始使用
翻译 原文链接
这片文章类似程序中的Hello World
,将会向你展示安装、配置和使用Prometheus。我们将会在本地下载、运行Prometheus,配置Prometheus监控自己和一些样例应用;然后使用收集到的数据进行查询、规则应用、画图。
下载、运行Prometheus
配置Prometheus监控自己
启动Prometheus
访问Prometheus,使用画图功能
创建一些测试targets
Go客户端库包含一些测试样例,这些样例会产生三个服务的虚假metrics,比如:RPC延迟。使用这些样例之前,请确保你已经安装Go,并且构建好Go的运行环境(正确的配置GOPATH、GOROOT)。
下载Prometheus的GO客户端库,并运行三个测试服务:
# Fetch the client library code and compile example.
git clone https://github.com/prometheus/client_golang.git
cd client_golang/examples/random
go get -d
go build
# Start 3 example targets in separate terminals:
./random -listen-address=:8080
./random -listen-address=:8081
./random -listen-address=:8082
这样我们就能够通过访问http://localhost:8080/metrics
, http://localhost:8081/metrics
, and http://localhost:8082/metrics
获取监控数据。
配置Prometheus监控测试targets
我们把上述三个targes分为两组。假设8080和8080端口的服务是生产上的服务,8082端口的服务是"金丝雀"服务。我们给第一组targets打上group="production"
的标签,给第二组targets打上group="canary"
的标签。详细的配置如下:
scrape_configs:
- job_name: 'example-random'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s
static_configs:
- targets: ['localhost:8080', 'localhost:8081']
labels:
group: 'production'
- targets: ['localhost:8082']
labels:
group: 'canary'
我们看到通过修改prometheus.yml的scrape_configs部分来监控测试样例,reload Prometheus使之生效。
如此,通过访问Prometheus可以查询到rpc_durations_seconds
metric。
通过配置规则产生新的时间序列
当查询、聚合成千上百的时间序列时,需要很多的计算,结果放回比较慢。为了解决这个问题,使查询更高效;Prometheus允许我们通过配置“记录规则”,根据预先记录表达式和抓取的监控数据,产生新的时间序列。这个时间序列开始的时间为规则生效的时间,而不是原数据的起始时间。
比如说我们对这个avg(rate(rpc_durations_seconds_count[5m])) by (job, service)
查询结果感兴趣(你可以在graph界面输入上面的查询语句,画出相应的图)。为了预先记录这样一个新的时间序列(我们可以直接查询这个时间序列得到我们想要的结果,而不用经过复杂的聚合运算),我们创建一个新的文件prometheus.rules.yml,该文件包含如下规则:
groups:
- name: example
rules:
- record: job_service:rpc_durations_seconds_count:avg_rate5m
expr: avg(rate(rpc_durations_seconds_count[5m])) by (job, service)
job_service:rpc_durations_seconds_count:avg_rate5m
是新的metric name。
为了是上述规则文件生效,需要修改配置文件prometheus.yml中的全局配置的rule_files
,增加规则文件:
rule_files:
# - "first_rules.yml"
- 'prometheus.rules.yml'
reload Prometheus配置,通过画图界面能够查询到job_service:rpc_durations_seconds_count:avg_rate5m
metric。