在前面的章节中,已经知道了如何对应用程序进行 Prometheus metrics 的注册和暴露,那么接下来如何让 Prometheus 对应用程序进行采集呢。

设置采集配置

首先打开先前所安装的 prometheus 软件目录:

1
2
3
4
5
$ ls
LICENSE                data                   promtool
NOTICE                 prometheus             rules
console_libraries      prometheus.yml         tsdb
consoles               prometheus.yml.default

打开并修改 prometheus.yml 文件,查看到 scrape_configs 配置选项,进行如下调整:

1
2
3
4
5
6
7
8
...
scrape_configs:
  - job_name: 'test01'
    static_configs:
    - targets: ['127.0.0.1:10001']
    scheme: http
    tls_config:
        insecure_skip_verify: false

先前所启动的应用程序是在本地,且端口号为 10001,协议为 http,对应的配置简述:

  • job_name:采集的任务名。

  • static_configs.targets:设置要采集的目标对象列表。

  • scheme:采集的目标协议(例如:http、https)。

  • tls_config.insecure_skip_verify:是否跳过证书校验。

常用的配置项如上几个,其默认的 metrics path 为 /metrics,若需要调整则增加 metrics_path 配置项进行调整就可以了,接着重新启动 prometheus 就可以了。

其他配置项

再返回来看看 prometheus.yaml 文件:

global:
  scrape_interval:     15s 
  evaluation_interval: 15s


alerting:
  alertmanagers:
  - static_configs:
    - targets:
       - localhost:9093

rule_files:
   - ../rules/*.yaml

scrape_configs:
  - job_name: 'test01'
    static_configs:
    - targets: ['127.0.0.1:10001']
    scheme: http
    tls_config:
        insecure_skip_verify: false
  • scrape_interval:采集间隔(频率)。

  • evaluation_interval:规则计算间隔(频率)。

  • alerting.alertmanagers:此 prometheus 所计算的 rules 所对应的 alertmanager。

  • rule_files:此 prometheus 所对应的告警规则(rules)。

这里聚焦 rule_files 和 alertmanagers,其分别对应着后续章节所要学的告警规则编写和 alertmanager 的告警平台对接和使用,留个心眼即可。

重新启动 Prometheus

在启动 prometheus 时,可以根据自己的情况进行一些启动项的调整:

$ ./prometheus --web.listen-address="0.0.0.0:9091" --config.file="prometheus.yml" 

在上述语句中,--web.listen-address 调整启动的监听 HOST+PORT,--config.file 调整 prometheus 启动时所读取的配置文件地址,更多的可以执行 ./prometheus --help 命令进行查看。

查看采集情况

在完成配置后,在经过 scrape_interval 秒后,将会自动采集到 prometheus 上,就可以在 Console 上进行查看:

image

若想要简单查看趋势,也可以通过 Graph 进行趋势分析:

image

但长久来看,还是建议使用 Grafana(后续会进行讲解)。

总结

至此就完成了一个 Prometheus 对 Go 应用程序的基本采集,本章节主要是熟悉 Prometheus 拉模式的采集机制,以及对应的 Promtheus 规则编写和使用即可,虽然比较很简单,但是这块内容的知识体系的了解程度是后面所有内容的基石,建议根据官方文档再进一步的学习。