helm prometheus-operator无法从api获取自定义指标

问题描述 投票:0回答:1

[我正在使用头盔prometheus-operator图表:https://github.com/helm/charts/blob/master/stable/prometheus-operator/values.yaml,并且我希望它可以像以前一样通过从硬编码服务名称和values.yml中的端口来从golang api获取自定义指标。文件:

 scrape_configs:
    - job_name: 'custom-api'
      static_configs:
        - targets: ['custom-api-service.backend.svc.cluster.local:8000']

但是,随着我拥有更多的微服务,我知道它也可以使用_meta标签动态地完成。例:__meta_kubernetes_service_name

但是,我还没有弄清楚我应该从values.yaml文件中进行哪些修改以使其正常工作。

[Grafana正在从custom-api获取我的CPU和内存使用率,但是custom-api未显示在Prometheus仪表板的目标选项卡中,这很奇怪...

这些是我的服务:

apiVersion: v1
kind: Service
metadata:
  name: custom-api-service
  namespace: backend
  labels:
    service: custom-api-service
spec:
  type: NodePort
  ports:
    - port: 8000
      targetPort: 8000
      nodePort: 30080
      protocol: TCP
      name: custom-api
  selector:
    component: goapi

---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: servicemonitor
  namespace: backend
  labels:
    service: servicemonitor
spec:
  selector:
    matchLabels:
      service: custom-api-service
  endpoints:
  - port: custom-api
kubernetes prometheus kubernetes-helm prometheus-operator
1个回答
0
投票

您将必须创建一个Service monitor CRD才能抓取指标。

假设您有一个k8s服务(在这里为example-app),该服务用于与您的微服务进行通信。确保您的微服务在某个端口公开了Prometheus指标,并且k8s服务还包括该端口(此处为prom)。

kind: Service
apiVersion: v1
metadata:
  name: example-app
  labels:
    app: example-app
spec:
  selector:
    app: example-app
  ports:
  - name: prom
    port: 8080
  - name: other-port
    port: xxxx

此服务对象由ServiceMonitor发现,后者以相同的方式进行选择。您需要确保serviceMonitor对象的matchLabels与服务的metadata.labels相匹配。

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: example-app
  labels:
    team: frontend
spec:
  selector:
    matchLabels:
      app: example-app
  endpoints:
  - port: prom

一旦创建了serviceMonitor对象,操作员控制器将为您完成其余工作(即,更新Prometheus配置)。您也可以通过serviceMonitor对象提供自定义配置。

更多详细信息,请访问Getting started with Prometheus operatorservice monitor

© www.soinside.com 2019 - 2024. All rights reserved.