通过serviceMonitor CRD获取自定义指标metrics

· 473字 · 1分钟

TL;DR 🔗

如果各类业务系统提供**/metrics**接口,并且指标数据满足prometheus时序数据的要求,就可以通过**serviceMonitor**获取监控指标:

cat <<EOF | kubectl apply -f -
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  labels:
    app: kube-prometheus-redis
    release: kube-prometheus-stack ## CRD prometheus 通过 spec.serviceMonitorSelector 找到此标签来匹配此ServiceMonitor
  name: kube-prometheus-redis
  namespace: kube-prometheus-stack ## 与"helm install kube-prometheus-stack"时的 namespace 保持一致
spec:
  namespaceSelector:
    matchNames:
    - default ## 被监控业务所在的 namespace
  endpoints:
  - port: http-metrics ## 被监控业务 service 的 port name
  selector:
    matchLabels:
      app.kubernetes.io/instance: redis ## 被监控业务 service selector
      app.kubernetes.io/name: redis
EOF

Description 🔗

开源监控方案 kube-prometheus-stack 会提取node基础设施和 k8s 各类resource等监控指标,但并不关心业务系统;自行开发的业务系统一般都会暴露出一系列监控指标用来监控,如果需要自定义监控指标就要配合使用serviceMonitor来收集。下图是prometheus-operator提供的自定义资源(Prometheus和serviceMonitor)与 k8s资 源(service和pod)关系图: