第 8 章 Observability(可观察性)
8.1. 管理员指标
8.1.1. Serverless 管理员指标
指标 (metrics) 可以让集群管理员监控 OpenShift Serverless 集群组件和工作负载的执行情况。
您可以通过在 OpenShift Container Platform Web 控制台 Administrator 视角中导航到 Dashboards 来查看 OpenShift Serverless 的不同指标。
8.1.1.1. 先决条件
- 如需有关为集群启用指标的信息,请参阅 OpenShift Container Platform 文档中有关管理指标的内容。
- 您可以访问具有集群管理员权限的 OpenShift Container Platform 帐户。
- 在 OpenShift Container Platform web 控制台中,您可以访问 Administrator 视角。
如果使用 mTLS 启用 Service Mesh,则 Knative Serving 的指标会被默认禁用,因为 Service Mesh 会防止 Prometheus 提取指标。
有关解决这个问题的详情,请参阅在使用带有 mTLS 的 Service Mesh 时启用 Knative Serving 指标。
提取指标不会影响 Knative 服务的自动扩展,因为提取请求不会通过激活器。因此,如果没有 pod 正在运行,则不会进行提取。
8.1.2. Serverless 控制器指标
以下指标由实施控制器逻辑的任何组件提供。这些指标显示协调操作的详细信息,以及将协调请求添加到工作队列的工作队列行为。
指标名称 | 描述 | 类型 | Tags | 单位 |
---|---|---|---|---|
| 工作队列的深度。 | 量表 |
| 整数(无单位) |
| 协调操作的数量。 | 计数 |
| 整数(无单位) |
| 协调操作的延迟。 | Histogram |
| Milliseconds |
| 由工作队列处理的添加操作总数。 | 计数 |
| 整数(无单位) |
| 在请求之前,项目保留在工作队列中的时长。 | Histogram |
| 秒 |
| 工作队列处理的重试总数。 | 计数 |
| 整数(无单位) |
| 处理和从工作队列中项目所需的时间。 | Histogram |
| 秒 |
| 未完成的工作队列项目的时间长度。 | Histogram |
| 秒 |
| 在处理中的、未完成的工作队列项的最长时间。 | Histogram |
| 秒 |
8.1.3. Webhook 指标
Webhook 指标报告有关操作的有用信息。例如,如果大量操作失败,这可能表示用户创建的资源出现问题。
指标名称 | 描述 | 类型 | Tags | 单位 |
---|---|---|---|---|
| 路由到 webhook 的请求数。 | 计数 |
| 整数(无单位) |
| Webhook 请求的响应时间。 | Histogram |
| Milliseconds |
8.1.4. Knative Eventing 指标
集群管理员可查看 Knative Eventing 组件的以下指标。
通过聚合 HTTP 代码的指标,事件可以分为两类:成功事件 (2xx) 和失败的事件 (5xx) 。
8.1.4.1. 代理入口指标
您可以使用以下指标调试代理 ingress,请参阅它的执行方式,以及哪些事件由 ingress 组件分配。
指标名称 | 描述 | 类型 | Tags | 单位 |
---|---|---|---|---|
| 代理接收的事件数。 | 计数 |
| 整数(无单位) |
| 将事件发送到频道的时间。 | Histogram |
| Milliseconds |
8.1.4.2. 代理过滤指标
您可以使用以下指标调试代理过滤器,查看它们的执行方式,以及过滤器正在分配哪些事件。您还可以测量事件的过滤操作的延迟。
指标名称 | 描述 | 类型 | Tags | 单位 |
---|---|---|---|---|
| 代理接收的事件数。 | 计数 |
| 整数(无单位) |
| 将事件发送到频道的时间。 | Histogram |
| Milliseconds |
| 将事件分配给触发器订阅者前处理事件所需的时间。 | Histogram |
| Milliseconds |
8.1.4.3. InMemoryChannel 分配程序指标
您可以使用以下指标调试 InMemoryChannel
频道,查看它们的运行方式,并查看频道正在分配哪些事件。
指标名称 | 描述 | 类型 | Tags | 单位 |
---|---|---|---|---|
|
| 计数 |
| 整数(无单位) |
|
从 | Histogram |
| Milliseconds |
8.1.4.4. 事件源指标
您可以使用以下指标验证事件是否从事件源发送到连接的事件接收器(sink)。
指标名称 | 描述 | 类型 | Tags | 单位 |
---|---|---|---|---|
| 事件源发送的事件数。 | 计数 |
| 整数(无单位) |
| 事件源在最初发送失败后发送的重试事件数量。 | 计数 |
| 整数(无单位) |
8.1.5. Knative Serving 指标
集群管理员可查看 Knative Serving 组件的以下指标。
8.1.5.1. 激活器指标
您可以使用以下指标了解应用在流量通过激活器时如何响应。
指标名称 | 描述 | 类型 | Tags | 单位 |
---|---|---|---|---|
| 路由到激活器的并发请求数,或者报告周期内平均并发请求数。 | 量表 |
| 整数(无单位) |
| 要激活的请求数。这些是从活动器处理程序实现的请求。 | 计数 |
| 整数(无单位) |
| 已实现的路由请求的响应时间(毫秒)。 | Histogram |
| Milliseconds |
8.1.5.2. 自动缩放器指标
自动缩放器组件会公开多个与每个修订版本自动扩展行为相关的指标。例如,在任何给定时间,您可以监控自动扩展尝试为服务分配的目标 pod 数量,在 stable 窗口中每秒请求平均数量,或者如果您使用 Knative pod 自动缩放器 (KPA) ,自动扩展是否处于 panic 模式。
指标名称 | 描述 | 类型 | Tags | 单位 |
---|---|---|---|---|
| 自动缩放器尝试为服务分配的 pod 数量。 | 量表 |
| 整数(无单位) |
| 过量激增容量在稳定窗口中提供。 | 量表 |
| 整数(无单位) |
| 每个通过稳定窗口观察到的 pod 的平均请求数。 | 量表 |
| 整数(无单位) |
| 每个观察到的 pod 的平均请求数通过 panic 窗口。 | 量表 |
| 整数(无单位) |
| 自动缩放器尝试发送到每个容器集的并发请求数。 | 量表 |
| 整数(无单位) |
| 通过 stable 窗口中每个观察到的 pod 的平均请求数每秒数。 | 量表 |
| 整数(无单位) |
| 每个通过 panic 窗口观察到的 pod 平均请求数每秒数。 | 量表 |
| 整数(无单位) |
| 自动缩放器针对每个 Pod 的目标请求数。 | 量表 |
| 整数(无单位) |
|
如果自动扩展器处于 panic 模式,则这个值为 | 量表 |
| 整数(无单位) |
| 自动缩放器从 Kubernetes 集群请求的 pod 数量。 | 量表 |
| 整数(无单位) |
| 分配且当前具有就绪状态的 pod 数量。 | 量表 |
| 整数(无单位) |
| 处于未就绪状态的 pod 数量。 | 量表 |
| 整数(无单位) |
| 当前待处理的 pod 数量。 | 量表 |
| 整数(无单位) |
| 当前终止的 pod 数量。 | 量表 |
| 整数(无单位) |
8.1.5.3. Go 运行时指标
每个 Knative Serving control plane 进程会发出多个 Go 运行时内存统计 (MemStats) 。
每个指标的 name
标签是一个空标签。
指标名称 | 描述 | 类型 | Tags | 单位 |
---|---|---|---|---|
|
分配的堆对象的字节数。这个指标与 | 量表 |
| 整数(无单位) |
| 为堆对象分配的累积字节。 | 量表 |
| 整数(无单位) |
| 从操作系统获得的内存总量。 | 量表 |
| 整数(无单位) |
| 运行时执行的指针查找数量。 | 量表 |
| 整数(无单位) |
| 分配的堆对象的累计数。 | 量表 |
| 整数(无单位) |
| 已释放的堆对象的累计数。 | 量表 |
| 整数(无单位) |
| 分配的堆对象的字节数。 | 量表 |
| 整数(无单位) |
| 从操作系统获得的堆内存字节数。 | 量表 |
| 整数(无单位) |
| 空闲、未使用的字节数。 | 量表 |
| 整数(无单位) |
| 当前正在使用的字节数。 | 量表 |
| 整数(无单位) |
| 返回到操作系统的物理内存字节数。 | 量表 |
| 整数(无单位) |
| 分配的堆对象数量。 | 量表 |
| 整数(无单位) |
| 堆栈中当前正在使用的字节数。 | 量表 |
| 整数(无单位) |
| 从操作系统获得的堆栈内存字节数。 | 量表 |
| 整数(无单位) |
|
分配的 | 量表 |
| 整数(无单位) |
|
从操作系统获得的用于 | 量表 |
| 整数(无单位) |
|
分配的 | 量表 |
| 整数(无单位) |
|
从操作系统获取的用于 | 量表 |
| 整数(无单位) |
| 分析 bucket 哈希表中的内存字节数。 | 量表 |
| 整数(无单位) |
| 垃圾回收元数据中的字节内存数量。 | 量表 |
| 整数(无单位) |
| 其它非堆运行时分配的内存字节数。 | 量表 |
| 整数(无单位) |
| 下一个垃圾回收周期的目标堆大小。 | 量表 |
| 整数(无单位) |
| 最后一次垃圾回收完成的时间(Epoch 或 Unix 时间)。 | 量表 |
| Nanoseconds |
| 自程序启动以来,垃圾回收的 stop-the-world 暂停的累积时间。 | 量表 |
| Nanoseconds |
| 完成的垃圾回收周期数量。 | 量表 |
| 整数(无单位) |
| 由于应用调用垃圾回收功能而强制执行的垃圾回收周期数量。 | 量表 |
| 整数(无单位) |
| 程序启动后,被垃圾收集器使用的程序可用 CPU 时间的比例。 | 量表 |
| 整数(无单位) |