Prometheus Operator 提供基于 Kubernetes 的原生部署和 Prometheus 及相关监控组件的管理。本项目旨在简化和自动化 Kubernetes 集群中基于 Prometheus 的监控栈配置。
Prometheus Operator 包含但不限于以下特性:
Kubernetes 自定义资源:使用 Kubernetes 自定义资源部署和管理 Prometheus、Alertmanager 及相关组件。 Kubernetes 自定义资源:使用 Kubernetes 自定义资源部署和管理 Prometheus、Alertmanager 及相关组件。
简化的部署配置:通过原生 Kubernetes 资源配置 Prometheus 的基本要素,如版本、持久化、保留策略和副本数。 简化的部署配置:通过原生 Kubernetes 资源配置 Prometheus 的基本要素,如版本、持久化、保留策略和副本数。
Prometheus 目标配置:基于熟悉的 Kubernetes 标签查询自动生成监控目标配置;无需学习 Prometheus 特定的配置语言。 Prometheus 目标配置:基于熟悉的 Kubernetes 标签查询自动生成监控目标配置;无需学习 Prometheus 特定的配置语言。
有关 Prometheus Operator 的介绍,请参阅入门指南。
Operator 本身已被认为可用于生产环境。有关每个 CRD 的状态,请参考自定义资源定义(CRD)版本:
monitoring.coreos.com/v1:稳定的 CRD 和 API,变更以向后兼容的方式进行。
monitoring.coreos.com/v1- monitoring.coreos.com/v1beta1:不稳定的 CRD 和 API,可能会发生变更,但团队致力于避免变更。对于接受破坏性变更风险的用户,我们鼓励在生产环境中使用。
monitoring.coreos.com/v1beta1- monitoring.coreos.com/v1alpha1:不稳定的 CRD 和 API,变更可能频繁发生,建议避免在关键任务环境中使用。
monitoring.coreos.com/v1alpha1## Prometheus Operator 与 kube-prometheus 与社区 Helm 图表的对比Prometheus Operator 使用 Kubernetes 自定义资源简化 Prometheus、Alertmanager 及相关监控组件的部署和配置。
kube-prometheus 提供了基于 Prometheus 和 Prometheus Operator 的完整集群监控栈示例配置。这包括部署多个 Prometheus 和 Alertmanager 实例、用于收集节点指标的 node_exporter 等指标导出器、将 Prometheus 链接到各种指标端点的抓取目标配置,以及用于通知集群中潜在问题的示例告警规则。
prometheus-community/kube-prometheus-stack Helm 图表提供与 kube-prometheus 类似的功能集。此图表由 Prometheus 社区维护。有关更多信息,请参阅该图表的 README。
Prometheus Operator 至少需要 Kubernetes 版本 1.16.0。如果您刚开始使用 Prometheus Operator,强烈建议使用最新的稳定版本。
1.16.0## 自定义资源定义(CRDs)
Prometheus Operator 的核心功能是监控 Kubernetes API 服务器上特定对象的变更,并确保当前的 Prometheus 部署与这些对象匹配。Operator 对以下自定义资源定义(CRDs)进行操作:
Prometheus- PrometheusAgent:定义所需的 Prometheus 部署,但以 Agent 模式运行。
PrometheusAgent:定义所需的 Prometheus 部署,但以 Agent 模式运行。
PrometheusAgent- Alertmanager:定义所需的 Alertmanager 部署。
Alertmanager:定义所需的 Alertmanager 部署。
Alertmanager- ThanosRuler:定义所需的 Thanos Ruler 部署。
ThanosRuler:定义所需的 Thanos Ruler 部署。
ThanosRuler- ServiceMonitor:声明式地指定应如何监控 Kubernetes 服务组。Operator 基于 API 服务器中对象的当前状态自动生成 Prometheus 抓取配置。
ServiceMonitor:声明式地指定应如何监控 Kubernetes 服务组。Operator 基于 API 服务器中对象的当前状态自动生成 Prometheus 抓取配置。
ServiceMonitor- PodMonitor:声明式地指定应如何监控 Pod 组。Operator 基于 API 服务器中对象的当前状态自动生成 Prometheus 抓取配置。
PodMonitor:声明式地指定应如何监控 Pod 组。Operator 基于 API 服务器中对象的当前状态自动生成 Prometheus 抓取配置。
PodMonitor- Probe:声明式地指定应如何监控入口组或静态目标组。Operator 基于定义自动生成 Prometheus 抓取配置。
Probe:声明式地指定应如何监控入口组或静态目标组。Operator 基于定义自动生成 Prometheus 抓取配置。
Probe- ScrapeConfig:声明式地指定要添加到 Prometheus 的抓取配置。此自定义资源定义有助于抓取 Kubernetes 集群外部的资源。
ScrapeConfig:声明式地指定要添加到 Prometheus 的抓取配置。此自定义资源定义有助于抓取 Kubernetes 集群外部的资源。
ScrapeConfig- PrometheusRule:定义所需的 Prometheus 告警规则和/或记录规则集。Operator 生成规则文件,可供 Prometheus 实例使用。
PrometheusRule:定义所需的 Prometheus 告警规则和/或记录规则集。Operator 生成规则文件,可供 Prometheus 实例使用。
PrometheusRule- AlertmanagerConfig:声明式地指定 Alertmanager 配置的子部分,允许将告警路由到自定义接收器,并设置抑制规则。
AlertmanagerConfig:声明式地指定 Alertmanager 配置的子部分,允许将告警路由到自定义接收器,并设置抑制规则。
AlertmanagerConfigPrometheus Operator 会自动检测 Kubernetes API 服务器中上述任何对象的变更,并确保匹配的部署和配置保持同步。
要了解有关 Prometheus Operator 引入的 CRD 的更多信息,请查看设计页面。
[!NOTE] 本快速入门不会部署完整的监控栈;如果您需要完整监控栈,请参见 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 edit set namespace $NAMESPACE && kubectl create -k .
[!NOTE] 如果在非 default 命名空间部署,请确保调整 ClusterRoleBinding 中的命名空间。
要在集群外运行 Operator:
make
scripts/run-external.sh
要移除 operator 和 Prometheus,首先删除在每个命名空间中创建的所有自定义资源。operator 将自动关闭并移除 Prometheus 和 Alertmanager pod 以及相关的 ConfigMap。
for n in $(kubectl get namespaces -o jsonpath={..metadata.name}); do
kubectl delete --all --namespace=$n prometheus,servicemonitor,podmonitor,alertmanager
done
几分钟后,您可以继续移除 operator 本身。
kubectl delete -f bundle.yaml
operator 会在您创建 Prometheus 或 Alertmanager 资源的每个命名空间中自动创建服务,并定义三个自定义资源定义。您现在可以清理这些资源。
for n in $(kubectl get namespaces -o jsonpath={..metadata.name}); do
kubectl delete --ignore-not-found --namespace=$n service prometheus-operated alertmanager-operated
done
kubectl delete --ignore-not-found customresourcedefinitions \
prometheuses.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告警规则和记录规则导致已部署的Prometheus实例出现故障,提供了一个准入Webhook,用于在PrometheusRule资源初次创建或更新时对其进行验证。
有关此功能的更多信息,请参阅用户指南。
[!NOTE] 本快速入门不会部署完整的监控栈;如果您需要完整监控栈,请参阅https://github.com/prometheus-operator/kube-prometheus%E9%A1%B9%E7%9B%AE%E3%80%82%E5%A6%82%E6%9E%9C%E6%82%A8%E9%9C%80%E8%A6%81%E5%AE%8C%E6%95%B4%E6%A0%88%EF%BC%8C%E4%BD%86%E5%B7%B2%E5%BA%94%E7%94%A8%E4%BA%86%60bundle.yaml%60%EF%BC%8C%E8%AF%B7%E5%85%88%E5%88%A0%E9%99%A4%E8%AF%A5bundle%EF%BC%88%60kubectl delete -f bundle.yaml`)。
要在集群内快速试用仅Prometheus Operator,请选择一个版本并运行以下命令,在default命名空间中部署Operator:
kubectl create -f bundle.yaml
如果要在不同的命名空间中部署Prometheus Operator,还需要kustomize:
NAMESPACE=my_namespace kustomize edit set namespace $NAMESPACE && kubectl create -k .
[!NOTE] 如果在非默认命名空间中部署,请确保调整ClusterRoleBinding中的命名空间。
要在集群外运行Operator:
make
scripts/run-external.sh
要卸载Operator和Prometheus,首先删除在每个命名空间中创建的所有自定义资源。Operator将自动关闭并删除Prometheus和Alertmanager Pod以及相关的ConfigMap。
for n in $(kubectl get namespaces -o jsonpath={..metadata.name}); do
kubectl delete --all --namespace=$n prometheus,servicemonitor,podmonitor,alertmanager
done
几分钟后,您可以继续卸载Operator本身。
kubectl delete -f bundle.yaml
Operator会在您创建Prometheus或Alertmanager资源的每个命名空间中自动创建服务,并定义三个自定义资源定义。您现在可以清理这些资源。
for n in $(kubectl get namespaces -o jsonpath={..metadata.name}); do
kubectl delete --ignore-not-found --namespace=$n service prometheus-operated alertmanager-operated
done
kubectl delete --ignore-not-found customresourcedefinitions \
prometheuses.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
参见测试
参见贡献指南。
有关在为项目贡献时使用AI工具的信息,请参阅贡献指南中的AI使用政策。
如果您发现与Prometheus Operator相关的安全漏洞且尚未公开披露,请不要通过创建GitHub Issue报告,而是发送电子邮件给MAINTAINERS.md文件中列出的项目维护者。
在报告自动化安全扫描器发现的问题时,请参考Prometheus文档。
有关常见问题和常见问题解答(FAQ),请查看故障排除文档。
prometheus-operator组织徽标由https://github.com/bia%E5%88%9B%E5%BB%BA%E5%B9%B6%E8%B4%A1%E7%8C%AE%E3%80%82
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务