本节讨论 Prometheus Operator 的架构。
由于 Prometheus Operator 是基于 Prometheus 的,咱们须要先了解一下 Prometheus。 html
Prometheus 是一个很是优秀的监控工具。准确的说,应该是监控方案。Prometheus 提供了数据搜集、存储、处理、可视化和告警一套完整的解决方案。Prometheus 的架构以下图所示: 架构
官网上的原始架构图比上面这张要复杂一些,为了不注意力分散,这里只保留了最重要的组件。 工具
Prometheus Server 性能
Prometheus Server 负责从 Exporter 拉取和存储监控数据,并提供一套灵活的查询语言(PromQL)供用户使用。 学习
Exporter spa
Exporter 负责收集目标对象(host, container...)的性能数据,并经过 HTTP 接口供 Prometheus Server 获取。 code
可视化组件 orm
监控数据的可视化展示对于监控方案相当重要。之前 Prometheus 本身开发了一套工具,不事后来废弃了,由于开源社区出现了更为优秀的产品 Grafana。Grafana 可以与 Prometheus 无缝集成,提供完美的数据展现能力。 htm
Alertmanager 对象
用户能够定义基于监控数据的告警规则,规则会触发告警。一旦 Alermanager 收到告警,会经过预约义的方式发出告警通知。支持的方式包括 Email、PagerDuty、Webhook 等.
Prometheus Operator 的目标是尽量简化在 Kubernetes 中部署和维护 Prometheus 的工做。其架构以下图所示:
图上的每个对象都是 Kubernetes 中运行的资源。
Operator
Operator 即 Prometheus Operator,在 Kubernetes 中以 Deployment 运行。其职责是部署和管理 Prometheus Server,根据 ServiceMonitor 动态更新 Prometheus Server 的监控对象。
Prometheus Server
Prometheus Server 会做为 Kubernetes 应用部署到集群中。为了更好地在 Kubernetes 中管理 Prometheus,CoreOS 的开发人员专门定义了一个命名为 Prometheus
类型的 Kubernetes 定制化资源。咱们能够把 Prometheus
看做是一种特殊的 Deployment,它的用途就是专门部署 Prometheus Server。
Service
这里的 Service 就是 Cluster 中的 Service 资源,也是 Prometheus 要监控的对象,在 Prometheus 中叫作 Target。每一个监控对象都有一个对应的 Service。好比要监控 Kubernetes Scheduler,就得有一个与 Scheduler 对应的 Service。固然,Kubernetes 集群默认是没有这个 Service 的,Prometheus Operator 会负责建立。
ServiceMonitor
Operator 可以动态更新 Prometheus 的 Target 列表,ServiceMonitor 就是 Target 的抽象。好比想监控 Kubernetes Scheduler,用户能够建立一个与 Scheduler Service 相映射的 ServiceMonitor 对象。Operator 则会发现这个新的 ServiceMonitor,并将 Scheduler 的 Target 添加到 Prometheus 的监控列表中。
ServiceMonitor 也是 Prometheus Operator 专门开发的一种 Kubernetes 定制化资源类型。
Alertmanager
除了 Prometheus 和 ServiceMonitor,Alertmanager 是 Operator 开发的第三种 Kubernetes 定制化资源。咱们能够把 Alertmanager
看做是一种特殊的 Deployment,它的用途就是专门部署 Alertmanager 组件。
学习完架构,下一节咱们将部署 Prometheus Operator。
书籍:
1.《天天5分钟玩转Kubernetes》
https://item.jd.com/26225745440.html
2.《天天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html
3.《天天5分钟玩转OpenStack》
https://item.jd.com/12086376.html