可以在 PMAPI 中设置 Web 上下文编号吗?

It is possible to set the web context number in PMAPI?

如果我理解正确的话,为了从 PMAPI 获取指标,首先需要创建一个新的上下文,然后在查询 URL 中使用上下文 ID。有没有办法解决这个问题,即。通过具有预定义 ID 的静态上下文?

我问这个问题,因为我想用 Prometheus 监控我的 CentOS 7 服务器。 CentOS 7 上的 PCP 套件版本(最多)为 4.3。我能够安装所有软件包并拥有 pmwebd 运行。我可以连接 Grafana 以绘制来自目标主机的实时指标,但我也想使用 Prometheus 进行主动监控检查。在 Prometheus 配置文件中,我将此作业定义为:

  - job_name: 'pcp'
    file_sd_configs:
    - files: ['hosts/*.yml']
    metrics_path: '/pmapi/399165479/metrics'
    params:
        target: ['kernel', 'mem', 'disk', 'network', 'proc']

其中 399165479 是我从中获得的上下文编号:

> wget localhost:44323/pmapi/context?hostname=localhost

因此获取上下文编号并将其插入配置文件是适合沙箱设置的手动过程,但在生产中不可行,因为它很难自动化。

如有任何关于此问题的建议(PCP 升级到 v.5 除外),我们将不胜感激。

显然可以通过使用 pmwebd 的 --context 命令行参数来设置静态上下文编号。它必须与 -L 参数一起使用。要在 CentOS 7 的守护程序模式下启用这些设置,需要将以下行添加到 /etc/pcp/pmwebd/pmwebd.options:

OPTIONS="$OPTIONS -L --context=1"

也可以使用 1 以外的任何整数。在 systemctl restart pmwebd 之后,所有查询都可以发送到 /pmapi/1/metrics 端点,因此在 Prometheus 配置中,抓取定义可以如下所示:

  - job_name: 'pcp'
    file_sd_configs:
    - files: ['hosts/*.yml']
    metrics_path: '/pmapi/1/metrics'
    params:
        target: ['kernel', 'mem', 'disk', 'network', 'proc']