本节讨论 Prometheus Operator 的架构。
由于 Prometheus Operator 是基于 Prometheus 的,咱们须要先了解一下 Prometheus。架构
Prometheus 是一个很是优秀的监控工具。准确的说,应该是监控方案。Prometheus 提供了数据搜集、存储、处理、可视化和告警一套完整的解决方案。Prometheus 的架构以下图所示:工具
官网上的原始架构图比上面这张要复杂一些,为了不注意力分散,这里只保留了最重要的组件。性能
Prometheus Serverspa
Prometheus Server 负责从 Exporter 拉取和存储监控数据,并提供一套灵活的查询语言(PromQL)供用户使用。对象
Exporterblog
Exporter 负责收集目标对象(host, container...)的性能数据,并经过 HTTP 接口供 Prometheus Server 获取。接口
可视化组件资源
监控数据的可视化展示对于监控方案相当重要。之前 Prometheus 本身开发了一套工具,不事后来废弃了,由于开源社区出现了更为优秀的产品 Grafana。Grafana 可以与 Prometheus 无缝集成,提供完美的数据展现能力。开发
Alertmanager部署
用户能够定义基于监控数据的告警规则,规则会触发告警。一旦 Alermanager 收到告警,会经过预约义的方式发出告警通知。支持的方式包括 Email、PagerDuty、Webhook 等.
Prometheus Operator 的目标是尽量简化在 Kubernetes 中部署和维护 Prometheus 的工做。其架构以下图所示:
图上的每个对象都是 Kubernetes 中运行的资源。
Operator
Operator 即 Prometheus Operator,在 Kubernetes 中以 Deployment 运行。其职责是部署和管理 Prometheus Server,根据 ServiceMonitor 动态更新 Prometheus Server 的监控对象。