5.6. 集群指标
使用指标来监控红帽构建的 Keycloak 节点之间的通信。
这是使用指标进行故障排除 一章的一部分。
5.6.1. 先决条件
- 需要为红帽构建的 Keycloak 启用指标。如需更多详细信息 ,请参阅指标数据 的见解章节。
- 一个监控系统收集指标数据。
5.6.2. 指标
部署多个红帽构建的 Keycloak 节点允许负载分布,但这需要节点间的通信。本节论述了用于监控红帽构建的 Keycloak 之间的通信的指标,以识别可能的错误。
这只适用于单一站点部署。当使用多个 站点时,如多站点部署 中所述,红帽构建的 Keycloak 节点不会一起集群,因此它们之间没有直接通信。
全局标签
cluster=<name>
- 集群名称。如果要收集来自多个集群的指标,此标签可帮助识别它们所属的位置。
node=<node>
- 报告指标的节点名称。
所有前缀为 vendor_jgroups_
的指标名称都仅用于故障排除和调试目的。指标名称可在不进一步通知的情况下更改红帽构建的 Keycloak 版本。因此,我们建议不要在仪表板或监控和警报中使用它们。
5.6.2.1. 响应时间
以下指标公开远程请求的响应时间。响应时间在两个节点之间测量,包括处理时间。所有请求都由这些指标测量,响应时间应保持在集群生命周期的稳定状态。
在健康的集群中,响应时间保持稳定。响应时间的增加可能会表示降级集群或负载过重的节点。
Tags
node=<node>
- 它标识发送者节点。
target_node=<node>
- 它标识接收器节点。
指标 | 描述 |
---|---|
| 向接收器节点同步请求数量。 |
| 向接收器节点同步请求的总持续时间 |
启用直方图后,将有百分比的存储桶可用。它们可用于创建 heat 映射,但收集和公开百分比存储桶可能会对部署性能造成负面影响。
5.6.2.2. bandwidth
红帽构建的 Keycloak 接收和发送的所有字节都由这些指标收集。另外,所有内部消息作为心跳也计算出来。它们允许计算每个节点当前使用的带宽。
指标名称取决于使用的 JGroups 传输协议。
指标 | 协议 | 描述 |
---|---|---|
|
| 节点接收的字节数。 |
|
| |
|
| |
|
| 节点发送的字节数。 |
|
| |
|
|
5.6.2.3. 线程池
监控线程池大小是节点负载过重的良好指示器。收到的所有请求都会添加到线程池中,并在它已满后,请求将被丢弃。重新传输机制可确保与增加资源使用量进行可靠的通信。
在健康的集群中,线程池永远不会接近其最大大小(默认为 200
个线程)。
线程池指标不适用于虚拟线程。使用 OpenJDK 21 运行时,虚拟线程会被默认启用。
指标名称取决于使用的 JGroups 传输协议。默认传输协议是 TCP。
指标 | 协议 | 描述 |
---|---|---|
|
| 线程池中当前的线程数。 |
|
| |
|
| |
|
| 池中同时存在的最大线程数量。 |
|
| |
|
|
5.6.2.4. 流控制
流控制负责调整消息发送方的速度,到最慢的接收器的速度。这通过基于信用的系统实施,在发送时每个发送者都会减少其学分。发送者块当学号低于 0 时,只有在它从接收器收到回复时,才会恢复发送消息。
以下指标显示阻塞的消息数量以及平均阻塞时间。当值与零不同时,可能会表示接收方过载,并可能会降低集群性能。
每个节点有两个独立的流控制协议,UFC
用于单播消息,MFC
用于多播消息。
健康的集群显示所有指标的值为零。
指标 | 描述 |
---|---|
| 流控制的次数会阻止单播消息的发送者。 |
| 尝试发送单播消息时,在流控制中平均时间被阻止(以 ms 为单位)。 |
| 流控制的次数会阻止多播消息的发送者。 |
| 尝试发送多播消息时,在流控制中平均时间会阻塞(以 ms 为单位)。 |
5.6.2.5. 重新传输
JGroups 提供可靠的消息交付。当网络中丢弃消息时,或者接收方无法处理消息时,需要重新传输。重新传输会增加资源使用量,通常是过载系统的信号。
Random Early Drop (RED)监控发送者队列。当队列接近满时,消息将被丢弃,且必须重新传输。它可防止整个发送者队列阻止线程。
健康的集群显示所有指标的值为零。
指标 | 描述 |
---|---|
| 重新传输的消息数量。 |
| 发送者丢弃的消息总数。 |
| 发送者丢弃的所有消息的百分比。 |
5.6.2.6. 网络分区
5.6.2.6.1. 集群大小
集群大小指标报告集群中存在的节点数量。如果不同,这可能表示节点正在加入、关闭或最糟糕的情况,则网络分区会发生。
健康的集群显示所有节点中的值相同。
指标 | 描述 |
---|---|
| 集群中的节点数。 |
5.6.2.6.2. 网络分区事件
由于各种原因,集群中的网络分区可能会发生。这些指标不会帮助预测网络分割,但会发出信号,并且集群已合并。
健康的集群显示此指标的值为零。
指标 | 描述 |
---|---|
| 检测到网络分割并修复的时间。 |
5.6.3. 后续步骤
使用指标返回故障排除,或继续 为单站点部署进行嵌入式 Infinispan 指标。