×

关于 OpenShift Container Platform 监控

OpenShift Container Platform 包含一个预配置的、预安装的和自动更新的监控堆栈,它为核心平台组件提供监控。您还可以选择为用户定义的项目启用监控

集群管理员可以使用支持的配置来配置监控堆栈。OpenShift Container Platform 开箱即用地提供监控最佳实践。

默认情况下包含一组警报,这些警报会立即通知管理员集群出现的问题。OpenShift Container Platform Web 控制台中的默认仪表盘包含集群指标的可视化表示,可帮助您快速了解集群的状态。使用 OpenShift Container Platform Web 控制台,您可以查看和管理指标警报查看监控仪表盘

在 OpenShift Container Platform Web 控制台的**观察**部分,您可以访问和管理监控功能,例如指标警报监控仪表盘指标目标

安装 OpenShift Container Platform 后,集群管理员可以选择为用户定义的项目启用监控。使用此功能,集群管理员、开发人员和其他用户可以指定如何在他们自己的项目中监控服务和 Pod。作为集群管理员,您可以在监控问题排查中找到用户指标不可用以及 Prometheus 磁盘空间消耗过高等常见问题的答案。

了解监控堆栈

OpenShift Container Platform 监控堆栈基于Prometheus开源项目及其更广泛的生态系统。监控堆栈包括以下内容

  • **默认平台监控组件**。在 OpenShift Container Platform 安装过程中,默认情况下会在openshift-monitoring项目中安装一组平台监控组件。这为核心集群组件(包括 Kubernetes 服务)提供监控。默认监控堆栈还启用集群的远程健康监控。

    这些组件在以下图表中的**默认安装**部分中进行了说明。

  • **用于监控用户定义项目的组件**。在为用户定义的项目选择性地启用监控后,其他监控组件将安装在openshift-user-workload-monitoring项目中。这为用户定义的项目提供监控。这些组件在以下图表中的**用户**部分中进行了说明。

OpenShift Container Platform monitoring architecture

默认监控组件

默认情况下,OpenShift Container Platform 4.17 监控堆栈包括以下组件

表 1. 默认监控堆栈组件
组件 描述

集群监控操作符

集群监控操作符 (CMO) 是监控堆栈的核心组件。它部署、管理和自动更新 Prometheus 和 Alertmanager 实例、Thanos Querier、Telemeter 客户端和指标目标。CMO 由集群版本操作符 (CVO) 部署。

Prometheus 操作符

openshift-monitoring 项目中的 Prometheus Operator (PO) 创建、配置和管理平台 Prometheus 实例和 Alertmanager 实例。它还会根据 Kubernetes 标签查询自动生成监控目标配置。

Prometheus

Prometheus 是 OpenShift Container Platform 监控堆栈的基础监控系统。Prometheus 是一个时间序列数据库和用于指标的规则评估引擎。Prometheus 将警报发送到 Alertmanager 进行处理。

Metrics Server

Metrics Server 组件(上图中的 MS)收集资源指标,并通过 metrics.k8s.io Metrics API 服务公开这些指标,供其他工具和 API 使用,从而使核心平台 Prometheus 堆栈无需处理此功能。请注意,在 OpenShift Container Platform 4.16 版本中,Metrics Server 替换了 Prometheus Adapter。

Alertmanager

Alertmanager 服务处理从 Prometheus 收到的警报。Alertmanager 还负责将警报发送到外部通知系统。

kube-state-metrics 代理

kube-state-metrics 导出器代理(上图中的 KSM)将 Kubernetes 对象转换为 Prometheus 可以使用的指标。

monitoring-plugin

monitoring-plugin 动态插件组件在 OpenShift Container Platform Web 控制台的 **观察** 部分部署监控页面。您可以使用 Cluster Monitoring Operator 配置映射设置来管理 Web 控制台页面的 monitoring-plugin 资源。

openshift-state-metrics 代理

openshift-state-metrics 导出器(上图中的 OSM)在 kube-state-metrics 的基础上扩展,增加了针对 OpenShift Container Platform 特定资源的指标。

node-exporter 代理

node-exporter 代理(上图中的 NE)收集集群中每个节点的指标。node-exporter 代理部署在每个节点上。

Thanos Querier

Thanos Querier 聚合并可选地对核心 OpenShift Container Platform 指标和用户定义项目指标进行去重,这些指标在一个单一的、多租户的界面下进行管理。

Telemeter Client

Telemeter Client 将平台 Prometheus 实例中的部分数据发送给 Red Hat,以便为集群提供远程健康监控。

监控堆栈中的所有组件都由堆栈本身监控,并在 OpenShift Container Platform 更新时自动更新。

监控堆栈的所有组件都使用由集群管理员集中配置的 TLS 安全配置文件设置。如果您配置使用 TLS 安全设置的监控堆栈组件,则该组件将使用全局 OpenShift Container Platform apiservers.config.openshift.io/cluster 资源中 tlsSecurityProfile 字段中已存在的 TLS 安全配置文件设置。

默认监控目标

除了堆栈本身的组件外,默认监控堆栈还会监控其他平台组件。

以下是监控目标的示例:

  • CoreDNS

  • etcd

  • HAProxy

  • 镜像注册表

  • Kubelets

  • Kubernetes API 服务器

  • Kubernetes 控制器管理器

  • Kubernetes 调度器

  • OpenShift API 服务器

  • OpenShift 控制器管理器

  • Operator Lifecycle Manager (OLM)

  • 确切的目标列表可能因您的集群功能和已安装组件而异。

  • 每个 OpenShift Container Platform 组件都负责其监控配置。对于 OpenShift Container Platform 组件监控方面的问题,请针对该组件而不是针对通用监控组件打开一个 Jira issue

其他 OpenShift Container Platform 框架组件也可能正在公开指标。有关详细信息,请参阅其各自的文档。

用于监控用户定义项目的组件

OpenShift Container Platform 4.17 包含对监控堆栈的可选增强功能,使您可以监控用户定义项目中的服务和 Pod。此功能包括以下组件:

表 2. 用于监控用户定义项目的组件
组件 描述

Prometheus 操作符

openshift-user-workload-monitoring 项目中的 Prometheus Operator (PO) 在同一个项目中创建、配置和管理 Prometheus 和 Thanos Ruler 实例。

Prometheus

Prometheus 是用于为用户定义的项目提供监控的监控系统。Prometheus 将警报发送到 Alertmanager 进行处理。

Thanos Ruler

Thanos Ruler 是一个为 Prometheus 部署为单独进程的规则评估引擎。在 OpenShift Container Platform 4.17 中,Thanos Ruler 为用户定义项目的监控提供规则和警报评估。

Alertmanager

Alertmanager 服务处理从 Prometheus 和 Thanos Ruler 收到的警报。Alertmanager 还负责将用户定义的警报发送到外部通知系统。部署此服务是可选的。

上表中的组件在为用户定义的项目启用监控后部署。

所有这些组件都由堆栈监控,并在 OpenShift Container Platform 更新时自动更新。

用户定义项目的监控目标

启用用户定义项目的监控后,您可以监控:

  • 通过用户定义项目中的服务端点提供的指标。

  • 在用户定义项目中运行的 Pod。

了解高可用性集群中的监控堆栈

默认情况下,在多节点集群中,以下组件以高可用性 (HA) 模式运行,以防止数据丢失和服务中断:

  • Prometheus

  • Alertmanager

  • Thanos Ruler

  • Thanos Querier

  • Metrics Server

  • 监控插件

该组件在两个 Pod 中复制,每个 Pod 运行在不同的节点上。这意味着监控堆栈可以容忍一个 Pod 的丢失。

HA 模式的 Prometheus
  • 两个副本都独立地抓取相同的目标并评估相同的规则。

  • 副本之间不进行通信。因此,Pod 之间的数据可能会有所不同。

HA 模式的 Alertmanager
  • 两个副本彼此同步通知和静默状态。这确保每个通知至少发送一次。

  • 如果副本无法通信,或者接收端存在问题,仍然会发送通知,但可能会重复。

Prometheus、Alertmanager 和 Thanos Ruler 是有状态组件。为确保高可用性,必须使用持久性存储来配置它们。

OpenShift Container Platform 监控的常见术语表

本词汇表定义了 OpenShift Container Platform 架构中使用的常见术语。

Alertmanager

Alertmanager 处理从 Prometheus 收到的警报。Alertmanager 还负责将警报发送到外部通知系统。

警报规则

警报规则包含一组条件,这些条件概述了集群中的特定状态。当这些条件为真时,将触发警报。警报规则可以分配一个严重性,该严重性定义了警报的路由方式。

集群监控操作符

Cluster Monitoring Operator (CMO) 是监控堆栈的核心组件。它部署和管理 Prometheus 实例(例如 Thanos Querier、Telemeter Client 和指标目标),以确保它们是最新的。CMO 由 Cluster Version Operator (CVO) 部署。

Cluster Version Operator

Cluster Version Operator (CVO) 管理集群 Operator 的生命周期,其中许多 Operator 默认情况下安装在 OpenShift Container Platform 中。

配置映射

配置映射提供了一种将配置数据注入 Pod 的方法。您可以在类型为 ConfigMap 的卷中引用存储在配置映射中的数据。在 Pod 中运行的应用程序可以使用此数据。

容器

容器是一个轻量级且可执行的镜像,其中包含软件及其所有依赖项。容器虚拟化操作系统。因此,您可以从数据中心到公共或私有云以及开发人员的笔记本电脑等任何地方运行容器。

自定义资源 (CR)

自定义资源 (CR) 是 Kubernetes API 的扩展。您可以创建自定义资源。

etcd

etcd 是 OpenShift Container Platform 的键值存储,用于存储所有资源对象的狀態。

Fluentd

Fluentd 是一款日志收集器,驻留在每个 OpenShift Container Platform 节点上。它收集应用程序、基础架构和审计日志,并将它们转发到不同的输出。

Fluentd 已弃用,计划在未来的版本中删除。Red Hat 在当前版本生命周期内为此功能提供错误修复和支持,但此功能不再接收增强功能。作为 Fluentd 的替代方案,您可以使用 Vector。

Kubelets

运行在节点上并读取容器清单。确保已定义的容器已启动并正在运行。

Kubernetes API 服务器

Kubernetes API 服务器验证和配置 API 对象的数据。

Kubernetes 控制器管理器

Kubernetes 控制器管理器控制集群的狀態。

Kubernetes 调度器

Kubernetes 调度器将 Pod 分配给节点。

标签

标签是键值对,您可以使用它们来组织和选择对象的子集,例如 Pod。

Metrics Server

Metrics Server 监控组件收集资源指标,并在metrics.k8s.io Metrics API 服务中公开它们,供其他工具和 API 使用,从而使核心平台 Prometheus 栈无需处理此功能。

节点

OpenShift Container Platform 集群中的工作机器。节点可以是虚拟机 (VM) 或物理机。

Operator

在 OpenShift Container Platform 集群中打包、部署和管理 Kubernetes 应用程序的首选方法。Operator 将人工操作知识编码到软件中,并将其打包并与客户共享。

Operator Lifecycle Manager (OLM)

OLM 帮助您安装、更新和管理 Kubernetes 原生应用程序的生命周期。OLM 是一款开源工具包,旨在以有效、自动化和可扩展的方式管理 Operator。

持久性存储

即使设备关闭后也能存储数据。Kubernetes 使用持久卷来存储应用程序数据。

持久卷声明 (PVC)

您可以使用 PVC 将持久卷挂载到 Pod 中。您可以访问存储,而无需了解云环境的详细信息。

Pod

Pod 是 Kubernetes 中最小的逻辑单元。Pod 包含一个或多个在工作节点中运行的容器。

Prometheus

Prometheus 是 OpenShift Container Platform 监控堆栈的基础监控系统。Prometheus 是一个时间序列数据库和用于指标的规则评估引擎。Prometheus 将警报发送到 Alertmanager 进行处理。

Prometheus 操作符

openshift-monitoring 项目中的 Prometheus Operator (PO) 创建、配置和管理平台 Prometheus 和 Alertmanager 实例。它还会根据 Kubernetes 标签查询自动生成监控目标配置。

静默

可以将静默应用于警报,以防止在警报条件为真的情况下发送通知。在收到初始通知后,您可以静默警报,同时处理根本问题。

存储

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)。