Prometheus 开始使用

翻译 原文链接

这片文章类似程序中的Hello World,将会向你展示安装、配置和使用Prometheus。我们将会在本地下载、运行Prometheus,配置Prometheus监控自己和一些样例应用;然后使用收集到的数据进行查询、规则应用、画图。

下载、运行Prometheus

参考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。

你可能感兴趣的:(Prometheus 开始使用)