你如何从 postgresql 获取普罗米修斯指标?

How do you get prometheus metrics from postgresql?

我已按照指定的 kube-prometheus, ensuring the --authentication-token-webhook=true and --authorization-mode=Webhook prerequisets are set and the kube-prometheus/kube-prometheus-kops.libsonnet 配置将 prometheus 安装到我的 Kubernetes v1.17 KOPS 集群中。

然后我使用 https://github.com/helm/charts/tree/master/stable/postgresql using the supplied values-production.yaml 安装了 Postgres,设置如下:

metrics:
  enabled: true
  # resources: {}
  service:
    type: ClusterIP
    annotations:
      prometheus.io/scrape: "true"
      prometheus.io/port: "9187"
    loadBalancerIP:
  serviceMonitor:
    enabled: true
    namespace: monitoring
    interval: 30s
    scrapeTimeout: 10s

两种服务都已启动并正常工作,但 prometheus 未发现来自 Postgres 的任何指标。
我的 postgres pods 上的 metrics 容器上的日志没有错误,monitoring 命名空间中的任何 pods 也没有错误。
要让 Postgres 指标导出器访问 Prometheus 还需要哪些额外步骤?

尝试为 Prometheus 更新 ClusterRole。默认情况下,它无权从非监控命名空间检索 pods、服务和端点的列表。

在我的系统中,原来的 ClusterRole 是:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: prometheus-k8s
rules:
- apiGroups:
  - ""
  resources:
  - nodes/metrics
  verbs:
  - get
- nonResourceURLs:
  - /metrics
  verbs:
  - get

我已将其更改为:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: prometheus-k8s
rules:
- apiGroups:
  - ""
  resources:
  - nodes/metrics
  - services
  - endpoints
  - pods
  verbs:
  - get
  - list
  - watch
- nonResourceURLs:
  - /metrics
  verbs:
  - get

进行这些更改后,Postgres 指标将可用于 Prometheus。