Prometheus并未从PCP pmproxy抓取所有指标

时间:2020-06-11 09:15:41

标签: performance prometheus metrics

在装有Fedora 30的笔记本电脑上,我已经安装并正在运行Performance Co-Pilot(PCP)守护程序,并从软件包golang-github-prometheus-prometheus-1.8.0-4.fc30.x86_64中安装了Prometheus。在PCP收集器的配置中,我指定了以下度量标准名称空间:

# Performance Metrics Domain Specifications
# 
# This file is automatically generated during the build
# Name  Id      IPC     IPC Params      File/Cmd
#root   1   pipe    binary      /var/lib/pcp/pmdas/root/pmdaroot
#pmcd   2   dso pmcd_init   /var/lib/pcp/pmdas/pmcd/pmda_pmcd.so
proc    3   pipe    binary      /var/lib/pcp/pmdas/proc/pmdaproc -d 3
#xfs    11  pipe    binary      /var/lib/pcp/pmdas/xfs/pmdaxfs -d 11
linux   60  pipe    binary      /var/lib/pcp/pmdas/linux/pmdalinux
#pmproxy    4   dso pmproxy_init    /var/lib/pcp/pmdas/mmv/pmda_mmv.so
mmv 70  dso mmv_init    /var/lib/pcp/pmdas/mmv/pmda_mmv.so
#jbd2   122 dso jbd2_init   /var/lib/pcp/pmdas/jbd2/pmda_jbd2.so
#kvm    95  pipe    binary      /var/lib/pcp/pmdas/kvm/pmdakvm -d 95

[access]
disallow ".*" : store;
disallow ":*" : store;
allow "local:*" : all;

当我访问URL localhost:44323/metrics时,输出非常丰富,并包含许多名称空间,即。 mem,网络,内核,filesys,hotproc等,但是当我使用Prometheus对其进行刮擦时,作业定义为:

scrape_configs:
  - job_name: 'pcp'
    scrape_interval: 10s
    sample_limit: 0
    static_configs:
      - targets: ['127.0.0.1:44323']

我看到目标状态为UP,但是在控制台中只有以下两个度量标准名称空间可用于查询:hinv和mem。我尝试从/metrics页面复制其他度量标准名称,但是查询导致错误:“未找到数据点”。最初,我认为问题可能是由于每个目标的采样数限制或采样间隔太小(我最初将其设置为1s),但hinv和mem并不相邻,并且还有其他指标(即filesys,kernel)之间的省略。可能是什么原因?

2 个答案:

答案 0 :(得分:0)

我还没有找到问题的确切原因,但是它一定是特定于版本的,因为下载并启动最新版本2.19后,问题消失了,并且使用完全相同的配置Prometheus正在从目标。

答案 1 :(得分:0)

添加另一个答案,因为我刚刚在Prometheus v.2.19通过PMAPI从CentOS 7服务器上的PCP v.5通过PMAPI提取指标的另一个环境中再次看到了此问题。在Prometheus配置文件中,抓取配置为具有多个指标域的单个作业,即:

- job_name: 'pcp'
  file_sd_configs:
  - files: [...]
  metric_path: '/metrics'
  params:
    target: ['kernel', 'mem', 'disk', 'network', 'mounts', 'lustre', 'infiniband']

当一个度量标准域出现问题时,通常由于主机上缺少相应的硬件而导致光泽或无限带宽时,仅收集内核度量标准,而没有收集其他信息。

此问题已解决,方法是将抓取作业拆分为多个作业,每个作业只有一个目标,即:

 - job_name: 'pcp-kernel'
  file_sd_configs:
  - files: [...]
  metric_path: '/metrics'
  params:
    target: ['kernel']

- job_name: 'pcp-mem'
  file_sd_configs:
  - files: [...]
  metric_path: '/metrics'
  params:
    target: ['mem']

[...]

通过这种方式,即使一个或所有额外的域都失败了,来自核心域的度量也总是被成功地抓取。这样的设置似乎更加健壮,但是由于有更多的抓取作业,因此使目标状态视图更加繁忙。