1.2. 监控堆栈架构
OpenShift Container Platform 监控堆栈基于 Prometheus 开源项目及其更广的生态系统。监控堆栈包括用于监控用户定义的项目的默认监控组件和组件。
1.2.1. 了解监控堆栈 复制链接链接已复制到粘贴板!
监控堆栈包括以下组件:
默认平台监控组件。在 OpenShift Container Platform 安装过程中,默认会在
openshift-monitoring
项目中安装一组平台监控组件。这为包括 Kubernetes 服务在内的核心集群组件提供了监控。默认监控堆栈还为集群启用远程健康状态监控。下图中的默认安装部分说明了这些组件。
-
用于监控用户定义项目的组件。在选择性地为用户定义的项目启用监控后,会在
openshift-user-workload-monitoring
项目中安装其他监控组件。这为用户定义的项目提供了监控。下图中的用户部分说明了这些组件。
1.2.2. 默认监控组件 复制链接链接已复制到粘贴板!
默认情况下,OpenShift Container Platform 4.19 监控堆栈包括以下组件:
组件 | 描述 |
---|---|
Cluster Monitoring Operator | Cluster Monitoring Operator (CMO) 是监控堆栈的核心组件。它部署、管理和自动更新 Prometheus 和 Alertmanager 实例、Thanos Querier、Teleme Client 和 metrics 目标。CMO 由 Cluster Version Operator (CVO) 部署。 |
Prometheus Operator |
|
Prometheus | Prometheus 是 OpenShift Container Platform 监控堆栈所依据的监控系统。Prometheus 是一个时间序列数据库和用于指标的规则评估引擎。Prometheus 将警报发送到 Alertmanager 进行处理。 |
指标服务器 |
Metrics Server 组件(上图中的 MS)会收集资源指标,并在 |
Alertmanager | Alertmanager 服务处理从 Prometheus 接收的警报。Alertmanager 还负责将警报发送到外部通知系统。 |
kube-state-metrics 代理 | kube-state-metrics 导出器代理(上图中的 KSM)将 Kubernetes 对象转换为 Prometheus 可使用的指标。 |
monitoring-plugin | monitoring-plugin 动态插件组件在 OpenShift Container Platform Web 控制台的 Observe 部分中部署监控页面。您可以使用 Cluster Monitoring Operator 配置映射设置来管理 web 控制台页面的 monitoring-plugin 资源。 |
openshift-state-metrics 代理 | openshift-state-metrics 导出器(上图中的 OSM)通过添加了对特定 OpenShift Container Platform 资源的指标数据扩展了 kube-state-metrics。 |
node-exporter 代理 | node-exporter 代理(上图中的NE)会收集有关集群中每个节点的指标。node-exporter 代理部署在每个节点上。 |
Thanos querier | Thanos Querier 将 OpenShift Container Platform 核心指标和用于用户定义项目的指标聚合在单个多租户接口下,并选择性地进行重复数据删除。 |
Telemeter Client | Telemeter Client 将数据的子部分从平台 Prometheus 实例发送到红帽,以便为集群提供远程健康状态监控。 |
监控堆栈中的所有组件都由堆栈监控,并在 OpenShift Container Platform 更新时自动更新。
监控堆栈的所有组件都使用集群管理员集中配置的 TLS 安全配置集设置。如果您配置了使用 TLS 安全设置的监控堆栈组件,组件使用全局 OpenShift Container Platform apiservers.config.openshift.io/cluster
资源中的 tlsSecurityProfile
字段中已存在的 TLS 安全配置集设置。
1.2.2.1. 默认监控目标 复制链接链接已复制到粘贴板!
除了堆栈本身的组件外,默认的监控堆栈还会监控额外的平台组件。
以下是监控目标的示例:
- CoreDNS
- etcd
- HAProxy
- 镜像 registry
- Kubelets
- Kubernetes API 服务器
- Kubernetes 控制器管理器
- Kubernetes 调度程序
- OpenShift API 服务器
- OpenShift Controller Manager
- Operator Lifecycle Manager (OLM)
- 具体目标列表可能会因集群功能和安装的组件而异。
- 每个 OpenShift Container Platform 组件负责自己的监控配置。对于 OpenShift Container Platform 组件监控的问题,请针对具体组件(而非常规的监控组件)创建一个Jira 程序错误报告。
其他 OpenShift Container Platform 框架组件也可能会公开指标。如需详细信息,请参阅相应的文档。
1.2.3. 用于监控用户定义的项目的组件 复制链接链接已复制到粘贴板!
OpenShift Container Platform 包括对监控堆栈的可选增强,供您用于监控用户定义的项目中的服务和 Pod。此功能包括以下组件:
组件 | 描述 |
---|---|
Prometheus Operator |
|
Prometheus | Prometheus 是为用户定义的项目提供监控的监控系统。Prometheus 将警报发送到 Alertmanager 进行处理。 |
Thanos Ruler | Thanos Ruler 是 Prometheus 的一个规则评估引擎,作为一个独立的进程来部署。在 OpenShift Container Platform 中,Thanos Ruler 为监控用户定义的项目提供规则和警报评估。 |
Alertmanager | Alertmanager 服务处理从 Prometheus 和 Thanos Ruler 接收的警报。Alertmanager 还负责将用户定义的警报发送到外部通知系统。部署该服务是可选的。 |
在为用户定义的项目启用监控后,会部署上表中的组件。
所有这些组件都由堆栈监控,并在 OpenShift Container Platform 更新时自动更新。
1.2.3.1. 用户定义的项目的监控目标 复制链接链接已复制到粘贴板!
为用户定义的项目启用监控后,您可以监控:
- 通过用户定义的项目中的服务端点提供的指标。
- 在用户定义的项目中运行的 Pod。
1.2.4. 高可用性集群中的监控堆栈 复制链接链接已复制到粘贴板!
默认情况下,在多节点集群中,以下组件以高可用性(HA)模式运行,以防止数据丢失和服务中断:
- Prometheus
- Alertmanager
- Thanos Ruler
- Thanos querier
- 指标服务器
- 监控插件
组件在两个 pod 之间复制,每个 pod 在单独的节点上运行。这意味着监控堆栈可以容忍一个 pod 的丢失。
- Prometheus 处于 HA 模式
- 这两个副本都独立提取同一目标并评估相同的规则。
- 副本不会相互通信。因此,数据在 pod 之间可能会有所不同。
- 处于 HA 模式的 Alertmanager
- 这两个副本将相互同步通知和静默状态。这样可确保每个通知至少发送一次。
- 如果副本间无法通信,或者在接收端有问题,则通知仍然会被发送,但可能会重复。
Prometheus、Alertmanager 和 Thanos Ruler 是有状态组件。为确保高可用性,您必须为它们配置持久性存储。
1.2.5. OpenShift Container Platform 监控的常见术语表 复制链接链接已复制到粘贴板!
此术语表定义了 OpenShift Container Platform 架构中使用的常见术语。
- Alertmanager
- Alertmanager 处理从 Prometheus 接收的警报。Alertmanager 还负责将警报发送到外部通知系统。
- 警报规则
- 警报规则包含一组概述集群中特定状态的条件。当这些条件满足时会触发警报。可为警报规则分配一个严重性来定义警报的路由方式。
- Cluster Monitoring Operator
- Cluster Monitoring Operator (CMO) 是监控堆栈的核心组件。它部署和管理 Prometheus 实例,如 Thanos Querier、Telemeter Client 和 metrics 目标,以确保它们保持最新状态。CMO 由 Cluster Version Operator (CVO) 部署。
- Cluster Version Operator
- Cluster Version Operator (CVO) 管理集群 Operator 的生命周期,其中许多默认安装在 OpenShift Container Platform 中。
- 配置映射
-
配置映射提供将配置数据注入 pod 的方法。您可以在类型为
ConfigMap
的卷中引用存储在配置映射中的数据。在 pod 中运行的应用程序可以使用这个数据。 - Container
- 容器是一个轻量级的可执行镜像,包括软件及其所有依赖项。容器将虚拟化操作系统。因此,您可以在数据中心、公共或私有云以及开发人员的笔记本电脑中运行容器。
- 自定义资源 (CR)
- CR 是 Kubernetes API 的扩展。您可以创建自定义资源。
- etcd
- etcd 是 OpenShift Container Platform 的键值存储,它存储所有资源对象的状态。
- Fluentd
Fluentd 是一个日志收集器,它驻留在每个 OpenShift Container Platform 节点上。它收集应用程序、基础架构和审计日志并将其转发到不同的输出。
注意Fluentd 已被弃用,计划在以后的发行版本中删除。红帽将在当前发行生命周期中将提供对这个功能的 bug 修复和支持,但此功能将不再获得改进。作为 Fluentd 的替代选择,您可以使用 Vector。
- Kubelets
- 在节点上运行并读取容器清单。确保定义的容器已启动且正在运行。
- Kubernetes API 服务器
- Kubernetes API 服务器验证并配置 API 对象的数据。
- Kubernetes 控制器管理器
- Kubernetes 控制器管理器管理集群的状态。
- Kubernetes 调度程序
- Kubernetes 调度程序将 pod 分配给节点。
- labels
- 标签是可用于组织和选择对象子集(如 pod)的键值对。
- 指标服务器
-
Metrics Server(指标服务器)组件会收集资源指标,并在
metrics.k8s.io
Metrics API 服务中公开这些资源指标,以便其他工具和 API 使用它们,这样就可以使核心平台 Prometheus 堆栈可以不再处理此功能。 - node
- OpenShift Container Platform 集群中的 worker 机器。节点是虚拟机 (VM) 或物理计算机。
- Operator
- 在 OpenShift Container Platform 集群中打包、部署和管理 Kubernetes 应用程序的首选方法。Operator 将人类操作知识编码到一个软件程序中,易于打包并与客户共享。
- Operator Lifecycle Manager (OLM)
- OLM 可帮助您安装、更新和管理 Kubernetes 原生应用程序的生命周期。OLM 是一个开源工具包,用于以有效、自动化且可扩展的方式管理 Operator。
- 持久性存储
- 即便在设备关闭后也存储数据。Kubernetes 使用持久性卷来存储应用程序数据。
- 持久性卷声明 (PVC)
- 您可以使用 PVC 将 PersistentVolume 挂载到 Pod 中。您可以在不了解云环境的详情的情况下访问存储。
- pod
- pod 是 Kubernetes 中的最小逻辑单元。pod 由一个或多个容器组成,可在 worker 节点上运行。
- Prometheus
- Prometheus 是 OpenShift Container Platform 监控堆栈所依据的监控系统。Prometheus 是一个时间序列数据库和用于指标的规则评估引擎。Prometheus 将警报发送到 Alertmanager 进行处理。
- Prometheus Operator
-
openshift-monitoring
项目中的 Prometheus Operator (PO) 负责创建、配置和管理平台 Prometheus 和 Alertmanager 实例。它还会根据 Kubernetes 标签查询来自动生成监控目标配置。 - 静默
- 可对警报应用静默,以防止在警报条件满足时发送通知。在您着手处理根本问题的同时,您可在初始通知后将警报静音。
- storage
- OpenShift Container Platform 支持许多类型的存储,包括内部存储和云供应商。您可以在 OpenShift Container Platform 集群中管理持久性和非持久性数据的容器存储。
- Thanos Ruler
- Thanos Ruler 是 Prometheus 的一个规则评估引擎,作为一个独立的进程来部署。在 OpenShift Container Platform 中,Thanos Ruler 为监控用户定义的项目提供规则和警报评估。
- Vector
- Vector 是一个日志收集器,它部署到每个 OpenShift Container Platform 节点。它从每个节点收集日志数据,转换数据并将其转发到配置的输出。
- Web 控制台
- 用于管理 OpenShift Container Platform 的用户界面(UI)。