首页 > 解决方案 > Kubernetes php-fpm 自定义指标 - 发生内部错误:无法获取指标

问题描述

我尝试根据 phpfpm 的活动进程计数来实现 HPA。我将 prometheus、prometheus-adapter 和 exporter 作为 sidecar 安装到我的 PHP 应用程序中。在 prometheus 的 UI 上获得正确的指标。

这是我的普罗米修斯适配器配置:

  - seriesQuery: 'phpfpm_active_processes{kubernetes_namespace!="",kubernetes_pod_name!=""}'
    resources:
      overrides:
        kubernetes_namespace:
          resource: "namespace"
        kubernetes_pod_name:
          resource: "pod"
    name:
      matches: "phpfpm_active_processes"
      as: "phpfpm_avg_processes"
    metricsQuery: 'avg(avg_over_time(phpfpm_active_processes[30s])) by (kubernetes_pod_name,kubernetes_namespace))'

如果我调用 k8s-api,我会看到可用的指标:

$ kubectl get --raw /apis/custom.metrics.k8s.io/v1beta1 | jq .
{
  "kind": "APIResourceList",
  "apiVersion": "v1",
  "groupVersion": "custom.metrics.k8s.io/v1beta1",
  "resources": [
    {
      "name": "namespaces/phpfpm_avg_processes",
      "singularName": "",
      "namespaced": false,
      "kind": "MetricValueList",
      "verbs": [
        "get"
      ]
    },
    {
      "name": "pods/phpfpm_avg_processes",
      "singularName": "",
      "namespaced": true,
      "kind": "MetricValueList",
      "verbs": [
        "get"
      ]
    }
  ]
}

但是 HPA 失败并出现错误: unable to get metric phpfpm_avg_processes: unable to fetch metrics from custom metrics API: Internal error occurred: unable to fetch metrics

如果我尝试通过 kubectl 获取指标,我会收到错误消息:

$ kubectl get --raw '/apis/custom.metrics.k8s.io/v1beta1/namespaces/default/pods/*/phpfpm_avg_processes' | jq
Error from server (InternalError): Internal error occurred: unable to fetch metrics

prometheus-adapter 的日志包括以下消息:

2020-11-03T08:27:07.7920803Z I1103 08:27:07.791793       1 httplog.go:90] GET /apis/custom.metrics.k8s.io/v1beta1/namespaces/mynamespace/pods/%2A/phpfpm_avg_processes?labelSelector=myapp.service%3Dtestapp: (13.6381ms) 500

我还尝试将--kubelet-insecure-tls和添加--kubelet-preferred-address-types=InternalIP到指标服务器,但没有成功。

信息:为了测试我使用 docker-for-mac

有人可以帮忙吗?我不知道如何调试或在哪里看?!

标签: phpkubernetesmetrics

解决方案


我已经修改了我的 Adapter-Config,现在它可以工作了。我将有关 metricsQuery 的行更改为metricsQuery: 'avg(avg_over_time(phpfpm_listen_queue{<<.LabelMatchers>>}[30s])) by (<<.GroupBy>>)'


推荐阅读