Prometheus Operator 提供 Prometheus 及相关监控组件的 Kubernetes 原生部署和管理。该项目的目的是简化和自动化 Kubernetes 集群基于 Prometheus 的监控堆栈的配置。
Prometheus算子包括但不限于以下功能:
Kubernetes 自定义资源:使用 Kubernetes 自定义资源来部署和管理 Prometheus、Alertmanager 及相关组件。
简化的部署配置:配置 Prometheus 的基础知识,例如版本、持久性、保留策略和来自本机 Kubernetes 资源的副本。
Prometheus Target Configuration :根据熟悉的 Kubernetes 标签查询自动生成监控目标配置;无需学习 Prometheus 特定的配置语言。
有关 Prometheus Operator 的介绍,请参阅入门指南。
操作员本身被认为已做好生产准备。请参阅自定义资源定义 (CRD) 版本了解每个 CRD 的状态:
monitoring.coreos.com/v1
:稳定的CRD 和 API,以向后兼容的方式进行更改。
monitoring.coreos.com/v1beta1
:不稳定的CRD 和 API,可能会发生变化,但团队致力于避免它们。我们鼓励接受破坏性变更风险的用户在生产中使用。
monitoring.coreos.com/v1alpha1
:不稳定的CRD 和 API,更改可能会频繁发生,我们建议避免在关键任务环境中使用它。
Prometheus Operator 使用 Kubernetes 自定义资源来简化 Prometheus、Alertmanager 和相关监控组件的部署和配置。
kube-prometheus 提供了基于 Prometheus 和 Prometheus Operator 的完整集群监控堆栈的示例配置。这包括部署多个 Prometheus 和 Alertmanager 实例、指标导出器(例如用于收集节点指标的 node_exporter)、将 Prometheus 链接到各种指标端点的抓取目标配置,以及用于通知集群中潜在问题的示例警报规则。
prometheus-community/kube-prometheus-stack Helm 图表提供了与 kube-prometheus 类似的功能集。该图表由 Prometheus 社区维护。有关更多信息,请参阅图表的自述文件
Prometheus Operator 至少需要 Kubernetes 版本1.16.0
。如果您刚刚开始使用 Prometheus Operator,强烈建议您使用最新的稳定版本。
Prometheus Operator 的一个核心功能是监视 Kubernetes API 服务器中特定对象的更改,并确保当前的 Prometheus 部署与这些对象匹配。操作员根据以下自定义资源定义 (CRD) 进行操作:
Prometheus
,定义所需的 Prometheus 部署。
PrometheusAgent
,它定义了所需的 Prometheus 部署,但在代理模式下运行。
Alertmanager
,定义所需的 Alertmanager 部署。
ThanosRuler
,定义所需的 Thanos Ruler 部署。
ServiceMonitor
,它以声明方式指定应如何监控 Kubernetes 服务组。 Operator 根据 API 服务器中对象的当前状态自动生成 Prometheus 抓取配置。
PodMonitor
,以声明方式指定应如何监控 pod 组。 Operator 根据 API 服务器中对象的当前状态自动生成 Prometheus 抓取配置。
Probe
,以声明方式指定应如何监视入口组或静态目标。 Operator 根据定义自动生成 Prometheus scrape 配置。
ScrapeConfig
,以声明方式指定要添加到 Prometheus 的抓取配置。此 CustomResourceDefinition 有助于抓取 Kubernetes 集群外部的资源。
PrometheusRule
,定义一组所需的 Prometheus 警报和/或记录规则。 Operator 生成一个规则文件,可供 Prometheus 实例使用。
AlertmanagerConfig
,以声明方式指定 Alertmanager 配置的子部分,允许将警报路由到自定义接收器并设置禁止规则。
Prometheus Operator 自动检测 Kubernetes API 服务器中对上述任何对象的更改,并确保匹配的部署和配置保持同步。
要了解有关 Prometheus Operator 引入的 CRD 的更多信息,请查看设计页面。
为了防止无效的 Prometheus 警报和记录规则导致已部署的 Prometheus 实例出现故障,提供了准入 Webhook 以在初始创建或更新时验证PrometheusRule
资源。
有关此功能的更多信息,请参阅用户指南。
注意:本快速入门不提供整个监控堆栈;如果这就是您正在寻找的内容,请参阅 kube-prometheus 项目。如果您想要整个堆栈,但已经应用了bundle.yaml
,请先删除该bundle( kubectl delete -f bundle.yaml
)。
要快速尝试集群内的 Prometheus Operator,请选择一个版本并运行以下命令,该命令会在default
命名空间中部署该 Operator:
kubectl create -f bundle.yaml
如果您想将 Prometheus Operator 部署在不同的命名空间中,您还需要kustomize
:
NAMESPACE=my_namespace kustomize 编辑设置命名空间 $NAMESPACE && kubectl create -k 。
注意:如果部署在默认命名空间以外的命名空间中,请确保调整 ClusterRoleBinding 中的命名空间。
要在集群外部运行 Operator:
制作 scripts/run-external.sh
要删除运算符和 Prometheus,请首先删除您在每个命名空间中创建的任何自定义资源。操作员将自动关闭并删除 Prometheus 和 Alertmanager Pod 以及关联的 ConfigMap。
for n in $(kubectl get 命名空间 -o jsonpath={..metadata.name});做 kubectl 删除 --all --namespace=$n prometheus,servicemonitor,podmonitor,alertmanagerdone
几分钟后,您可以继续删除操作员本身。
kubectl删除-fbundle.yaml
Operator 会自动在您创建 Prometheus 或 Alertmanager 资源的每个命名空间中创建服务,并定义三个自定义资源定义。您现在可以清理这些。
for n in $(kubectl get 命名空间 -o jsonpath={..metadata.name});做 kubectl delete --ignore-not-found --namespace=$n 服务 prometheus 操作的alertmanager-operateddonekubectl delete --ignore-not-found customresourcedefinitions prometheus.monitoring.coreos.com servicemonitors.monitoring.coreos.com podmonitors.monitoring.coreos.com Alertmanagers.monitoring.coreos.com prometheusrules.monitoring.coreos.com Alertmanagerconfigs.monitoring.coreos.com scrapeconfigs.monitoring.coreos.com
参见测试
请参阅贡献。
如果您发现与 Prometheus Operator 相关的安全漏洞,请不要通过打开 GitHub 问题来报告,而是请向 MAINTAINERS.md 文件中找到的项目的维护人员发送电子邮件。
查看故障排除文档以了解常见问题和常见问题 (FAQ)。
prometheus-operator 组织徽标由 Bianca Cheng Costanzo 创建和贡献。