首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Prometheus不会从PCP pmproxy中抓取所有指标

Prometheus不会从PCP pmproxy中抓取所有指标
EN

Stack Overflow用户
提问于 2020-06-11 17:15:42
回答 2查看 293关注 0票数 0

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

代码语言:javascript
复制
# 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、network、kernel、filesys、hotproc等,但当我使用Prometheus时,作业定义为:

代码语言:javascript
复制
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)在它们之间被省略。可能的原因是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-11 17:42:02

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

票数 0
EN

Stack Overflow用户

发布于 2020-07-14 23:49:30

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

代码语言:javascript
复制
- job_name: 'pcp'
  file_sd_configs:
  - files: [...]
  metric_path: '/metrics'
  params:
    target: ['kernel', 'mem', 'disk', 'network', 'mounts', 'lustre', 'infiniband']

当一个度量域出现问题时,由于主机上缺乏相应的硬件,通常是lustre或infiniband,只收集内核指标,而不收集其他指标。

通过将抓取作业拆分为多个作业,每个作业只有一个目标,即:

代码语言:javascript
复制
 - 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']

[...]

这样,尽管一个或所有额外的指标失败,来自核心域的指标始终被成功抓取。这样的设置似乎更健壮,但是它使目标状态视图更加繁忙,因为有更多的抓取作业。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62320982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档