首页 > 解决方案 > 可以在 PMAPI 中设置 Web 上下文编号吗?

问题描述

如果我理解正确,为了从 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 除外)将不胜感激。

标签: centos7prometheusmetrics

解决方案


显然可以通过使用--contextpmwebd 的命令行参数来设置静态上下文编号。它必须与-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']

推荐阅读