Prometheus Operator 与 kube-prometheus 之一-简介

prometheus,operator,kube,之一,简介 · 浏览次数 : 288

小编点评

## Prometheus Operator 简介 **Prometheus Operator** 是一个 Kubernetes 自定义资源 (CRD),用于简化和自动化基于 Prometheus 的 Kubernetes 集群监控堆栈的配置。它提供以下功能: * 创建和管理 Prometheus、Alertmanager 和相关监控组件的 Kubernetes 集群 * 使用 Kubernetes 自定义资源定义 (crd) 定义 Prometheus 部署 * 自动生成 Prometheus 刮擦配置 * 管理 AlertManager 配置文件 * 管理 Prometheus 告警规则 **与 kube-prometheus 和 community helm chart 相似:** * kube-prometheus 是一个基于 Prometheus 和 Prometheus Operator 的 Kubernetes 集群监控堆栈的示例配置 * community helm chart 是 prometheus 社区维护的 helm chart,与 kube-prometheus 相似 **主要优点:** * 简化和自动化 Kubernetes 集群监控配置 * 使用 Kubernetes 自定义资源定义定义 Prometheus 部署 * 自动生成 Prometheus 刮擦配置 * 具有丰富的配置选项和功能 **适用场景:** * 需要简化和自动化 Prometheus 的 Kubernetes 集群监控 * 需要使用 Kubernetes 自定义资源定义定义 Prometheus 部署 * 需要使用流行的开源产品,如 Loki **使用 Prometheus Operator 的优点:** * 多家大厂选择 Prometheus Operator,因为它易于部署和使用 * 极大地简化了 Prometheus 的配置复杂度 * 开箱即用,无需学习普罗米修斯特定的配置语言

正文

简介

Prometheus Operator

Prometheus Operator: 在 Kubernetes 上管理 Prometheus 集群。该项目的目的是简化和自动化基于 Prometheus 的 Kubernetes 集群监控堆栈的配置。

kube-prometheus

最简单的方法是将 Prometheus Operator 作为 kube-prometheus 的一部分进行部署。kube-prometheus 部署了 Prometheus Operator,并且已经安排了一个名为 prometheus-k8s 的 prometheus,默认带有警报和规则,并且带有其他 prometheus 需要的组件,如:

  • Grafana
  • kube-state-metrics
  • prometheus adapter
  • node exporter
  • ...

Prometheus Operator vs. kube-prometheus vs. community helm chart

Prometheus Operator

Prometheus Operator 使用 Kubernetes 自定义资源,简化了 Prometheus、Alertmanager 和相关监控组件的部署和配置。

kube-prometheus

kube-prometheus 提供了一个基于 Prometheus 和 Prometheus Operator 的完整集群监控堆栈的示例配置。这包括部署多个 Prometheus 和 Alertmanager 实例、用于收集节点指标的指标导出器(如 node_exporters)、将 Prometheus 链接到各种指标端点的目标配置,以及用于通知集群中潜在问题的示例警报规则。

helm chart

prometheus-community/kube-prometheus-stack helm chart 提供了与 kube-prometheus 相似的特性集。这张 chart 是由 prometheus 社区维护的。

Prometheus Operator 功能

CRD

Prometheus Operator 的一个核心特性是 watch Kubernetes API 服务器对特定对象的更改,并确保当前 Prometheus 部署与这些对象匹配。Operator 对以下自定义资源定义 (crd) 进行操作:

monitoring.coreos.com/v1:

  • Prometheus: 它定义了 Prometheus 期望的部署。
  • Alertmanager: 它定义了 AlertManager 期望的部署。
  • ThanosRuler: 它定义了 ThanosRuler 期望的部署;如果有多个 Prometheus 实例,则通过 ThanosRuler 进行告警规则的统一管理。
  • ServiceMonitor: Prometheus Operator 通过 PodMonitorServiceMonitor 实现对资源的监控,ServiceMonitor 用于通过 Service 对 K8S 中的任何资源进行监控,推荐首选 ServiceMonitor. 它声明性地指定了 Kubernetes service 应该如何被监控。Operator 根据 API 服务器中对象的当前状态自动生成 Prometheus 刮擦配置。
  • PodMonitor: Prometheus Operator 通过 PodMonitorServiceMonitor 实现对资源的监控,PodMonitor 用于对 Pod 进行监控,推荐首选 ServiceMonitor. PodMonitor 声明性地指定了应该如何监视一组 pod。Operator 根据 API 服务器中对象的当前状态自动生成 Prometheus 刮擦配置。
  • Probe: 它声明性地指定了应该如何监视 ingress 或静态目标组。Operator 根据定义自动生成 Prometheus 刮擦配置。
  • PrometheusRule: 用于管理 Prometheus 告警规则;它定义了一套所需的 Prometheus 警报和/或记录规则。Prometheus 生成一个规则文件,可以被 Prometheus 实例使用。
  • AlertmanagerConfig: 用于管理 AlertManager 配置文件,主要是告警发给谁;它声明性地指定 Alertmanager 配置的子部分,允许将警报路由到自定义接收器,并设置禁止规则。

Prometheus Operator 自动检测 Kubernetes API 服务器对上述任何对象的更改,并确保匹配的部署和配置保持同步。

简化的部署配置

配置 Prometheus 的基础知识,如版本、持久性、保留策略和来自本机 Kubernetes 资源的副本。最简的持久化的 Prometheus 的部署,只需要创建如下 yaml 即可:

apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
  name: persisted
spec:
  storage:
    volumeClaimTemplate:
      spec:
        storageClassName: ssd
        resources:
          requests:
            storage: 40Gi

Prometheus 目标配置

根据熟悉的 Kubernetes 标签查询自动生成监控目标配置;无需学习普罗米修斯特定的配置语言。

大厂案例

哪些大厂在用 Prometheus Operator 或 kube-prometheus?

RedHat

从 Prometheus Operator 的 API 也能看出来,这个 Operator 最早是由 CoreOS 开发并开源的,而现在 CoreOS 已经被 RedHat 收购,所以 RedHat 的 OpenShift 4 完全是采用 Prometheus Operator 作为它的 Metrics 解决方案的。典型的架构如下图:

OpenShift 4 Monitoring Stack

可以看到 Prometheus 和 AlertManager 都是通过 Prometheus Operator 来进行管理的。

Rancher

Rancher 2 以后的 rancher-monitoring 也是基于 kube-prometheus 做了进一步的改进而来的,这是通过 rancher-monitoring helm chart 部署后的关系图,可以看到部署的组件还是非常多的:

  • Grafana
  • Prometheus CRD
  • Prometheus Operator
  • Prometheus
  • AlertManager
  • kube-state-metrics
  • prometheus adapter
  • node exporter
  • ...

Rancher 2 monitoring stack resource map

我为什么推荐你用 Prometheus Operator 或 kube-prometheus 而非原生 prometheus?

理由如下:

  1. 众多大厂的选择;
  2. 极大简化了 Prometheus 的配置复杂度;
  3. 开箱即用的大量:
    1. 监控对象,如:K8S 组件 - coredns, kubelet, controller manager, apiserver, etcd, scheduler, kube proxy; 监控组件自监控 - grafana, AlertManager, prometheus 等;
    2. 仪表板,自带 24 个仪表板,非常实用,涵盖:集群/组件/网络/存储/Node/Pod 等等维度;
    3. 告警规则,自带了 100 多个告警规则,涵盖 K8S 的方方面面;
  4. 流行的开源产品,很多也默认会带有对 Prometheus Operator 的支持,如 Loki 就有相关的 ServiceMonitor;
  5. 通过 ServiceMonitor 等,其实反而相比添加 Prometheus Annotation 有更大的灵活性;如下面的例子
  6. 高可用的支持,如:
    1. 多个 Prometheus 的 shards
    2. 多个 AlertManager
    3. ThanosRuler
  7. RBAC: 如默认可以创建 3 个 monitoring 的角色:admin/edit/viewer, 可以分别对应监控的管理员,维护人员和只读用户;

自带的大量实用仪表板

自带的大量实用告警规则

示例,灵活性:

spec:
  endpoints:
    - honorLabels: true
      params:
        _scheme:
          - https
      port: metrics
      proxyUrl: http://pushprox-k3s-server-proxy.cattle-monitoring-system.svc:8080
      relabelings:
        - sourceLabels:
            - __metrics_path__
          targetLabel: metrics_path
  jobLabel: component
  namespaceSelector:
    matchNames:
      - cattle-monitoring-system
  podTargetLabels:
    - component
    - pushprox-exporter
  selector:
    matchLabels:
      component: k3s-server
      k8s-app: pushprox-k3s-server-client
      provider: kubernetes
      release: rancher-monitoring

📚️ 参考文档

以上

EOF

三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.

与Prometheus Operator 与 kube-prometheus 之一-简介相似的内容:

Prometheus Operator 与 kube-prometheus 之一-简介

简介 Prometheus Operator Prometheus Operator: 在 Kubernetes 上管理 Prometheus 集群。该项目的目的是简化和自动化基于 Prometheus 的 Kubernetes 集群监控堆栈的配置。 kube-prometheus 最简单的方法是将

Prometheus Operator与kube-prometheus之二-如何监控1.23+ kubeadm集群

简介 系列文章: 标签 - Prometheus - 东风微鸣技术博客 (ewhisper.cn) Prometheus Operator 的上一篇: Prometheus Operator 与 kube-prometheus 之一 - 简介 - 东风微鸣技术博客 (ewhisper.cn) kub

如何用 Prometheus Operator 监控 K8s 集群外服务?

前言 前面系列文章中: Prometheus Operator 与 kube-prometheus 之一 - 简介 - 东风微鸣技术博客 (ewhisper.cn) 监控 Kubernetes 集群证书过期时间的三种方案 - 东风微鸣技术博客 (ewhisper.cn) 介绍了 Prometheus

深入理解Prometheus: Kubernetes环境中的监控实践

在这篇文章中,我们深入探讨了Prometheus在Kubernetes环境中的应用,涵盖了从基础概念到实战应用的全面介绍。内容包括Prometheus的架构、数据模型、PromQL查询语言,以及在Kubernetes中的集成方式、监控策略、告警配置和数据可视化技巧。此外,还包括针对不同监控场景的实战

深入解读Prometheus Adapter:云原生监控的核心组件

本文详述了Prometheus Adapter的部署与配置,通过三个实践案例展示其在Kubernetes环境中的应用,帮助用户实现基于自定义指标的自动扩展和跨集群统一监控。 关注作者,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验

一分钟部署prometheus&grafana全方面监控SpringBoot项目

0x01 创建目录 找一个你喜欢的地方,创建项目根目录 example: [root@demo-78 ~]# mkdir /data/prometheus 0x02 创建配置文件 进入到项目根目录: [root@demo-78 ~]# cd /data/prometheus 需要新建三个文件,分别是

Prometheus及Grafana监控服务的安装使用

说明 Prometheus 是一个开放性的监控解决方案,通过 Node Exporter 采集当前主机的系统资源使用情况,并通过 Grafana 创建一个简单的可视化仪表盘。 docker 安装 prometheus(未持久化数据) docker run -d \ -p 9090:9090 \ -v

[转帖]Prometheus + Spring Boot 应用监控

https://blog.51cto.com/u_15127622/2757942 1. Prometheus是什么Prometheus是一个具有活跃生态系统的开源系统监控和告警工具包。一言以蔽之,它是一套开源监控解决方案。Prometheus主要特性:多维数据模型,其中包含由指标名称和键/值对标识

[转帖]Prometheus+Grafana+rabbitmq_prometheus 监控 RabbitMQ

https://www.zhangbj.com/p/1065.html 关于 rabbitmq_prometheus rabbitmq_prometheus是RabbitMQ 3.8.0默认集成的监控插件。 相关文档 https://www.rabbitmq.com/monitoring.html

[转帖]【Windows 10】Prometheus监控平台安装以及配置windows Exporter探针

Prometheus 简介 Prometheus是一个开放性的监控解决方案,用户可以非常方便的安装和使用Prometheus并且能够非常方便的对其进行扩展。 在Prometheus的架构设计中,Prometheus Server并不直接服务监控特定的目标,其主要任务负责数据的收集,存储并且对外提供数