当前位置: 首页 > 知识库问答 >
问题:

Prometheus适配器-无法从外部度量获取数据

马星阑
2023-03-14

无法通过运行以下命令获取项目:kubectl get--raw“/apis/external.metrics.k8s.io/v1beta1/namespaces/default/rabbitmq_queue_messages_ready”jq

正如您在下面的输出项中所看到的,是一个空数组:

{
  "kind": "ExternalMetricValueList",
  "apiVersion": "external.metrics.k8s.io/v1beta1",
  "metadata": {
    "selfLink": "/apis/external.metrics.k8s.io/v1beta1/namespaces/default/rabbitmq_queue_messages_ready"
  },
  "items": []
}

但是,我在prometheus终结点中获取了正确的数据:prometheus URL:http:// :9090/API/V1/Series?匹配%5b%5d=%7b__name__%3d~%22%5erabbitmq_queue_.%2a%22%7d&start=1597255421.51响应:

{
"status":"success",
"data":[
    {
        "__name__":"rabbitmq_queue_messages_ready",
        "app":"prometheus-rabbitmq-exporter",
        "durable":"true",
        "instance":"10.2.0.73:9419",
        "job":"kubernetes-pods",
        "namespace":"default",
        "pod_name":"rabbitmq-exporter-prometheus-rabbitmq-exporter-754c845847-gzlrq",
        "pod_template_hash":"754c845847",
        "queue":"test",
        "release":"rabbitmq-exporter",
        "vhost":"/"
    },
    {
        "__name__":"rabbitmq_queue_messages_ready",
        "app":"prometheus-rabbitmq-exporter",
        "durable":"true",
        "instance":"10.2.0.73:9419",
        "job":"kubernetes-pods",
        "namespace":"default",
        "pod_name":"rabbitmq-exporter-prometheus-rabbitmq-exporter-754c845847-gzlrq",
        "pod_template_hash":"754c845847",
        "queue":"test1",
        "release":"rabbitmq-exporter",
        "vhost":"/"
    }
]
}

我使用以下helm值安装了stable/prometheus-adapter:

rules:
  default: false
  external:
    - seriesQuery: '{__name__=~"^rabbitmq_queue_.*"}'
      resources:
        #template: <<.Resource>>
        overrides:
          namespace:
            resource: namespace
          service:
            resource: service
          pod:
            resource: pod
      name:
        matches: ""
        as: "rabbitmq_queue_messages_ready"
      metricsQuery: 'rate(<<.Series>>{<<.LabelMatchers>>}[1m])'

客户端:&version.version{semver:“v2.16.9”,GITCOMMIT:“8AD7037828E5A0FCA1009DABE290130DA6368E39”,GITTREESTECT:“CLEAN”}服务器:&version.version{semver:“v2.16.7”,GITCOMMIT:“5F2584FD3D35552C4AF26036F0C464191287986B”,GITTREESTECT:“CLEAN”}

客户端版本:Version.info{Major:“1”,Minor:“16”,GitVersion:“V1.16.1”,GitCommit:“D647DDBD755FAF07169599A625FAF302FFC34458”,GitTreEstate:“Clean”,BuildDate:“2019-10-02T17:01:15Z”,GoVersion:“Go1.12.10”,编译器:“GC”,平台:“Darwin/AMD64”}服务器版本:Version.info{Major:“1”,Minor:“15”,GitVersion:“V1.15.11”,GitCommit:“EC831747A3A5896DBDF53F259EAFE A2A2595217C”,GitTreeState:“Clean”,BuildDate:“2020-05-29T19:56:10Z”,GoVersion:“Go1.12.17”,编译器:“GC”,平台:“Linux/AMD64”}

预期结果:它应该从Prometheus获取度量

如何重现:使用上述配置安装stable/prometheus-rabbitmq-exporterstable/prometheus-adapter头盔图。

我正在遵循以下指南:https://nuvalence.io/building-a-k8s-autocaler-with-custom-metrics/

共有1个答案

越景天
2023-03-14

为了进一步解决问题,首先,我将检查prom-adapter设置中的几个内容:

  1. 使用“kubectl get--raw...”命令直接获取度量值时,在Prometheus适配器日志中是否看到任何错误?
  2. 您已将Prometheus-Adapter安装到哪个命名空间?(问是因为我以前在部署到“kube-system”以外的其他ns时在适配器日志中观察到与RBAC相关的错误)
  3. 请粘贴最终“prom-adapter”/etc/adapter/config.yaml配置的内容(来自prom-adapter的Pod)

我在适配器中公开了相同的外部rabbitmq度量,没有任何问题,请检查相同命令的输出:

{
  "kind": "ExternalMetricValueList",
  "apiVersion": "external.metrics.k8s.io/v1beta1",
  "metadata": {
    "selfLink": "/apis/external.metrics.k8s.io/v1beta1/namespaces/default/rabbitmq_queue_messages_ready"
  },
  "items": [
    {
      "metricName": "rabbitmq_queue_messages_ready",
      "metricLabels": {
        "endpoint": "metrics",
        "instance": "10.64.1.97:9419",
        "job": "rabbitmq",
        "namespace": "default",
        "pod": "rabbitmq-0",
        "service": "rabbitmq"
      },
      "timestamp": "2020-08-13T23:50:29Z",
      "value": "174160m"
    }
  ]
}

已用prom-adapter版本:DirectXMAN12/K8S-PROMETHEUS-Adapter-AMD64:v0.6.0

//使用Community wiki post以获得更好的清晰度(代码段格式等)

 类似资料:
  • 我有一个连接到CustomAdapter的ListView。在Adapter类中,我有不同视图的侦听器。当某些事情发生变化时,它会更新ListItem的值 现在我不知道如何将这些信息返回到包含ListView的片段中。我试过了 但它不会对适配器内的任何更改作出反应。仅限于片段本身的更改(如单击添加新项的按钮)。 我还想知道如何获取适配器类中最新ArrayList的引用,以便将其返回到片段。 我希望

  • 我已从mapbox复制并调整了此示例:https://docs.mapbox.com/mapbox-gl-js/example/filter-markers/ 一切工作正常,但我想有Geojson作为一个外部文件。 所以我修改了这个代码: 为此: 我在DevTools中得到了这个错误:uncaughttypeerror:无法读取未定义的属性'forEach'。 其余代码(我得到错误)如下所示:

  • 我们正试图用普罗米修斯来获取火花指标。我们使用jmx导出器jmx_prometheus_javaagent-0.12.0.jar。 ./spark-submit--监督--部署模式集群--conf'spark.driver.extrajavaoptions=-javaagent:jars/jmx_prometheus_javaagent-0.12.0.jar=8060:/conf/spark.ym

  • 我对Spring Boot是新手,对Java也比较陌生。我正在使用Spring文档中的Github OAuth2示例应用程序。开箱即用,一切都按预期工作,但是,当我试图将facebook()或github()方法移到一个新类中时,它们无法从src/main/resources/application.yml文件中获取信息。我试过将类放在与主应用程序类相同的包中,也试过将类放在另一个包中。 src/

  • 我有一个内部类,它在我的主类中扩展了异步任务 我在内部类中获得了分配给我的字符串变量“变量”的正确值,但我无法访问我的主类中的值。

  • 我一直在尝试使用nativescript创建一个android应用程序。我正在使用fetch模块从服务器获取响应。当我试图从httpbin获得响应时。org/get,没关系。但当我试图从本地服务器获取响应时,网络请求失败。错误 发送到httpbin。组织/获取- 发送到本地主机:8000/api- 当我尝试从纯节点中的localhost:8000/api获取响应时。js通过请求模块。它工作得很好。