kube-Prometheus Operator介绍

PrometheusOperator负责部署Prometheus、Alertmanager和Grafana,通过ServiceMonitor自动配置监控目标。它定义了CRD如Prometheus、ServiceMonitor和PrometheusRule,允许自定义指标采集和告警规则。ServiceMonitor用于指定监控目标和服务筛选条件,使得监控配置声明式和可移植。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • Prometheus Operator提供k8s service 和 deployment 监控的定义,并且管理普罗米修斯实例的部署

Prometheus Operator具体做了什么

  • 执行完整 Kube-Prometheus 的初始安装和配置

    • Prometheus servers

    • Alertmanager

    • Grafana

    • Host node_exporter

    • kube-state-metrics

  • 使用ServiceMonitor实体定义监控指标endpoint,并自动配置到prometheus中

  • 使用 Operator CRD 和 ConfigMap 自定义和扩展服务,使我们的配置完全可移植且具有声明性

Operator 定义了下面的CRD

  • Prometheus,它定义了所需的 Prometheus 部署。

  • ServiceMonitor,它以声明方式指定应如何监视服务组,以前是用job发现目标,但现在用SM。

  • PrometheusRule,它定义了所需的 Prometheus 规则文件,该文件可由包含 Prometheus 警报和记录规则的 Prometheus 实例加载。

  • Alertmanager,它定义了所需的 Alertmanager 部署。

  • Operator 存储库中的kube-prometheus目录包含默认服务和配置,因此您不仅可以获得 Prometheus Operator 本身,还可以获得完整的设置,您可以从一开始就开始使用和自定义。

架构图

ServiceMonitor作用

  • ServiceMonitor 描述了 Prometheus 监视的目标集,跟job作用差不多。

  • 如果存在与 ServiceMonitor 条件匹配的新指标端点,则此目标将自动添加到选择该 ServiceMonitor 的所有 Prometheus 服务器。

  • ServiceMonitor 的目标是 Kubernetes 服务,而不是 pod 直接公开的端点

  • 按命名空间、标签等过滤端点

  • 定义不同的抓取端口

  • 定义所有额外的抓取参数,如抓取间隔、使用的协议、TLS 凭证、重新标记策略等。

使用serviceMonitor采集我们自定义的指标

编写 myPod_serviceMonitor

  • endpoints代表最后采集的targets

    • interval采集间隔

    • port 采集端口

    • scheme采集协议

  • jobLabel: app.kubernetes.io/name 的意思是最后job标签使用这个标签的value

  • namespaceSelector代表过滤哪个ns下的svc

  • selector代表svc的标签选择器

举例:

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  labels:
    app.kubernetes.io/name: ink8s-pod-metrics
  name: example-pod-metrics  #sm名称
  namespace: monitoring
spec:
  endpoints:
    - interval: 15s
      port: https-self
      scheme: http
  jobLabel: app.kubernetes.io/name
  namespaceSelector:   #匹配命名空间
    matchNames:
      - default
  selector:
    matchLabels:     #匹配标签
      app.kubernetes.io/name: example-pod-metrics

编写 myPod_svc 

  • 在default ns下的svc

  • 打上标签app.kubernetes.io/name: example-pod-metrics 和上面的serviceMonitor对应

  • 端口和容器端口对应上,端口名字和上面的serviceMonitor对应

apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/name: example-pod-metrics

  name: example-pod-metrics
  namespace: default
spec:
  clusterIP: None
  ports:
    - name: https-self
      port: 8080
      targetPort: 8080
  selector:
    app: example-pod-metrics

然后 example-pod-metrics 下的pod指标就会被SM收集到传到Prometheus

使用PrometheusRule添加自定义指标的告警规则

apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  labels:
    app.kubernetes.io/name: example-pod-metrics
    prometheus: k8s
    role: alert-rules
  name: example-pod-metrics-k8s-prometheus-rules
  namespace: monitoring
spec:
  groups:
    - name: example-pod-metrics-k8s-prometheus-rules01
      rules:
        - alert: pod_control_plane_pod_detail01
          annotations:
            description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has failed to reload its configuration.
            runbook_url: https://github.com/prometheus-operator/kube-prometheus/wiki/prometheusbadconfig
            summary: test
          expr: |
            example_pod_metrics_get_pod_control_plane_pod_detail > 0   #这里写告警规则
          for: 1m
          labels:
            severity: critical 

  • 上面元信息中的标签要和prometheus-prometheus.yaml里的 ruleSelector对应上

    • prometheus: k8s

    • role: alert-rules

prometheus-prometheus.yaml下的:

 ruleSelector:
    matchLabels:
      prometheus: k8s
      role: alert-rules 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值