5.9. 外部网格指标


使用指标来监控外部 Data Grid 性能。

这是使用指标进行故障排除 一章的一部分。

5.9.1. 先决条件

5.9.1.1. 启用的 Data Grid 服务器指标

Data Grid 在端点 /metrics 中公开指标。默认情况下启用它们。我们建议启用属性 name-as-tags,因为它使指标名称独立于缓存名称。

要在 Data Grid 服务器中配置指标,就像以下 XML 所示启用。

infinispan.xml

<infinispan>
    <cache-container statistics="true">
        <metrics gauges="true" histograms="false" name-as-tags="true" />
    </cache-container>
</infinispan>
Copy to Clipboard Toggle word wrap

在 Kubernetes 中使用 Data Grid Operator,可以使用带有自定义配置的 ConfigMap 来启用指标。下面是一个示例。

ConfigMap

apiVersion: v1
kind: ConfigMap
metadata:
  name: cluster-config
data:
  infinispan-config.yaml: >
    infinispan:
      cacheContainer:
        metrics:
          gauges: true
          namesAsTags: true
          histograms: false
Copy to Clipboard Toggle word wrap

infinispan.yaml CR

apiVersion: infinispan.org/v1
kind: Infinispan
metadata:
  name: infinispan
  annotations:
    infinispan.org/monitoring: 'true' 
1

spec:
  configMapName: "cluster-config" 
2
Copy to Clipboard Toggle word wrap

1
为部署启用监控
2
使用自定义配置设置 ConfigMap 名称。

其他信息可在 Infinispan 文档和 Infinispan 操作器 文档中找到。

5.9.2. 集群和网络

这部分论述了监控 Data Grid 节点之间的通信的指标,以识别可能的网络问题。

全局标签

cluster=<name>
集群名称。如果要收集来自多个集群的指标,此标签可帮助识别它们所属的位置。
node=<node>
报告指标的节点名称。
警告

所有前缀为 vendor_jgroups_ 的指标名称都仅用于故障排除和调试目的。指标名称可在不进一步通知的情况下更改红帽构建的 Keycloak 版本。因此,我们建议不要在仪表板或监控和警报中使用它们。

5.9.2.1. 响应时间

以下指标公开远程请求的响应时间。响应时间在两个节点之间测量,包括处理时间。所有请求都由这些指标测量,响应时间应保持在集群生命周期的稳定状态。

提示

在健康的集群中,响应时间保持稳定。响应时间的增加可能会表示降级集群或负载过重的节点。

Tags

node=<node>
它标识发送者节点。
target_node=<node>
它标识接收器节点。
Expand
指标描述

vendor_jgroups_stats_sync_requests_seconds_count

向接收器节点同步请求数量。

vendor_jgroups_stats_sync_requests_seconds_sum

向接收器节点同步请求的总持续时间

注意

启用直方图后,将有百分比的存储桶可用。它们可用于创建 heat 映射,但收集和公开百分比存储桶可能会对部署性能造成负面影响。

5.9.2.2. bandwidth

Data Grid 接收和发送的所有字节都由这些指标收集。另外,所有内部消息作为心跳也计算出来。它们允许计算每个节点当前使用的带宽。

重要

指标名称取决于使用的 JGroups 传输协议。

Expand
指标协议描述

vendor_jgroups_tcp_get_num_bytes_received

TCP

节点接收的字节数。

vendor_jgroups_udp_get_num_bytes_received

UDP

vendor_jgroups_tunnel_get_num_bytes_received

TUNNEL

vendor_jgroups_tcp_get_num_bytes_sent

TCP

节点发送的字节数。

vendor_jgroups_udp_get_num_bytes_sent

UDP

vendor_jgroups_tunnel_get_num_bytes_sent

TUNNEL

5.9.2.3. 线程池

监控线程池大小是节点负载过重的良好指示器。收到的所有请求都会添加到线程池中,并在它已满后,请求将被丢弃。重新传输机制可确保与增加资源使用量进行可靠的通信。

提示

在健康的集群中,线程池永远不会接近其最大大小(默认为 200 个线程)。

注意

线程池指标不适用于虚拟线程。使用 OpenJDK 21 运行时,虚拟线程会被默认启用。

重要

指标名称取决于使用的 JGroups 传输协议。默认传输协议是 TCP。

Expand
指标协议描述

vendor_jgroups_tcp_get_thread_pool_size

TCP

线程池中当前的线程数。

vendor_jgroups_udp_get_thread_pool_size

UDP

vendor_jgroups_tunnel_get_thread_pool_size

TUNNEL

vendor_jgroups_tcp_get_largest_size

TCP

池中同时存在的最大线程数量。

vendor_jgroups_udp_get_largest_size

UDP

vendor_jgroups_tunnel_get_largest_size

TUNNEL

5.9.2.4. 流控制

流控制负责调整消息发送方的速度,到最慢的接收器的速度。这通过基于信用的系统实施,在发送时每个发送者都会减少其学分。发送者块当学号低于 0 时,只有在它从接收器收到回复时,才会恢复发送消息。

以下指标显示阻塞的消息数量以及平均阻塞时间。当值与零不同时,可能会表示接收方过载,并可能会降低集群性能。

每个节点有两个独立的流控制协议,UFC 用于单播消息,MFC 用于多播消息。

提示

健康的集群显示所有指标的值为零。

Expand
指标描述

vendor_jgroups_ufc_get_number_of_blockings

流控制的次数会阻止单播消息的发送者。

vendor_jgroups_ufc_get_average_time_blocked

尝试发送单播消息时,在流控制中平均时间被阻止(以 ms 为单位)。

vendor_jgroups_mfc_get_number_of_blockings

流控制的次数会阻止多播消息的发送者。

vendor_jgroups_mfc_get_average_time_blocked

尝试发送多播消息时,在流控制中平均时间会阻塞(以 ms 为单位)。

5.9.2.5. 重新传输

JGroups 提供可靠的消息交付。当网络中丢弃消息时,或者接收方无法处理消息时,需要重新传输。重新传输会增加资源使用量,通常是过载系统的信号。

Random Early Drop (RED)监控发送者队列。当队列接近满时,消息将被丢弃,且必须重新传输。它可防止整个发送者队列阻止线程。

提示

健康的集群显示所有指标的值为零。

Expand
指标描述

vendor_jgroups_unicast3_get_num_xmits

重新传输的消息数量。

vendor_jgroups_red_get_dropped_messages

发送者丢弃的消息总数。

vendor_jgroups_red_get_drop_rate

发送者丢弃的所有消息的百分比。

5.9.2.6. 网络分区

5.9.2.6.1. 集群大小

集群大小指标报告集群中存在的节点数量。如果不同,这可能表示节点正在加入、关闭或最糟糕的情况,则网络分区会发生。

提示

健康的集群显示所有节点中的值相同。

Expand
指标描述

vendor_cluster_size

集群中的节点数。

5.9.2.6.2. 跨站点状态

跨站点状态向其他站点报告连接状态。如果是在线,则返回 1 值(如果离线)或 0 ( 如果离线)。在状态未知的节点上使用 2 值;不是所有节点都建立到远程站点的连接,且不包含此信息。

提示

健康的集群显示一个大于零的值。

Expand
指标描述

vendor_jgroups_site_view_status

单一站点状态(如果在线则为 1)。

Tags

site=<name>
目标站点的名称。
5.9.2.6.3. 网络分区事件

由于各种原因,集群中的网络分区可能会发生。这些指标不会帮助预测网络分割,但会发出信号,并且集群已合并。

提示

健康的集群显示此指标的值为零。

Expand
指标描述

vendor_jgroups_merge3_get_num_merge_events

检测到网络分割并修复的时间。

5.9.3. Data Grid Caches

本节中的指标有助于监控 Data Grid 缓存健康和集群复制。

全局标签

cache=<name>
缓存名称。

5.9.3.1. Size

使用这两个指标监控缓存中的条目数量。如果集群缓存,每个条目都有一个所有者节点,以及不同节点的零个或多个备份副本。

提示

总和唯一的条目大小指标,以获取集群总数。

Expand
指标描述

vendor_statistics_approximate_entries

节点存储的条目数量,包括备份副本。

vendor_statistics_approximate_entries_unique

节点存储的大约数量,不包括备份副本。

5.9.3.2. 数据访问

以下指标监控缓存访问,如读取、写入及其持续时间。

5.9.3.2.1. 存储

存储操作是一个写入操作,用于写入或更新存储在缓存中的值。

Expand
指标描述

vendor_statistics_store_times_seconds_count

存储请求的总数。

vendor_statistics_store_times_seconds_sum

所有存储请求的总持续时间。

注意

启用直方图后,将有百分比的存储桶可用。它们可用于创建 heat 映射,但收集和公开百分比存储桶可能会对部署性能造成负面影响。

5.9.3.2.2. 读取

读取操作从缓存中读取值。它被分成两个组,如果找到了值,则按 键,如果未找到,则未命中。

Expand
指标描述

vendor_statistics_hit_times_seconds_count

读取点击请求的总数。

vendor_statistics_hit_times_seconds_sum

所有读取点击请求的持续时间。

vendor_statistics_miss_times_seconds_count

读取丢失请求的总数。

vendor_statistics_miss_times_seconds_sum

所有读取丢失请求的持续时间。

注意

启用直方图后,将有百分比的存储桶可用。它们可用于创建 heat 映射,但收集和公开百分比存储桶可能会对部署性能造成负面影响。

5.9.3.2.3. 删除

删除操作从缓存中删除值。它将分成两个组,一个点击(如果存在值)和miss (如果值不存在)。

Expand
指标描述

vendor_statistics_remove_hit_times_seconds_count

删除 hits 请求的总数。

vendor_statistics_remove_hit_times_seconds_sum

所有删除 hits 请求的总持续时间。

vendor_statistics_remove_miss_times_seconds_count

删除丢失的请求总数。

vendor_statistics_remove_miss_times_seconds_sum

所有删除丢失请求的持续时间。

注意

启用直方图后,将有百分比的存储桶可用。它们可用于创建 heat 映射,但收集和公开百分比存储桶可能会对部署性能造成负面影响。

5.9.3.3. 锁定

写入和删除操作会保存锁,直到值在本地集群中复制并复制到远程站点。

提示

在健康的集群中,锁定的数量应该保持恒定的状态,但死锁可能会创建临时激增。

Expand
指标描述

vendor_lock_manager_number_of_locks_held

此节点当前持有的锁定数。

5.9.3.4. Transactions

事务缓存同时使用 One-Phase-Commit 和 Two-Phase-Commit 协议来完成事务。这些指标跟踪操作持续时间。

注意

PESSMISTIC 锁定模式使用 One-Phase-Commit,不创建提交请求。

提示

在健康的集群中,回滚的数量应该保持零。死锁应该比较罕见,但会增加回滚数量。

Expand
指标描述

vendor_transactions_prepare_times_seconds_count

准备请求总数。

vendor_transactions_prepare_times_seconds_sum

所有准备请求的总持续时间。

vendor_transactions_rollback_times_seconds_count

回滚请求总数。

vendor_transactions_rollback_times_seconds_sum

所有回滚请求的总持续时间。

vendor_transactions_commit_times_seconds_count

提交请求的总数。

vendor_transactions_commit_times_seconds_sum

所有提交请求的总持续时间。

注意

启用直方图后,将有百分比的存储桶可用。它们可用于创建 heat 映射,但收集和公开百分比存储桶可能会对部署性能造成负面影响。

5.9.3.5. 状态传输

当节点加入或离开集群时,会发生状态转移。需要平衡存储的数据并保证所需的副本数。

此操作会增加资源使用量,它会影响整体性能。

Expand
指标描述

vendor_state_transfer_manager_inflight_transactional_segment_count

来自其他节点的本地节点的 in-flight 事务片段数。

vendor_state_transfer_manager_inflight_segment_transfer_count

从其他节点请求的本地节点的数量。

5.9.3.6. 集群数据复制

集群数据复制可以是故障的主要来源。这些指标不仅报告响应时间,即复制更新所需的时间,还要报告故障。

提示

在健康的集群中,平均复制时间为稳定或稍有不同。不应增加的故障数量。

Expand
指标描述

vendor_rpc_manager_replication_count

成功复制总数。

vendor_rpc_manager_replication_failures

失败的复制总数。

vendor_rpc_manager_average_replication_time

在集群中复制数据的平均时间(以毫秒为单位)。

成功比率

表达式可用于计算复制成功比率:

(vendor_rpc_manager_replication_count)
/
(vendor_rpc_manager_replication_count
 + vendor_rpc_manager_replication_failures)
Copy to Clipboard Toggle word wrap

5.9.3.7. 跨站点数据复制

与集群数据复制一样,本节中的指标会测量将数据复制到其他站点所需的时间。

提示

在健康的集群中,平均跨站点复制时间将稳定或很少的差异。

Tags

site=<name>
表示接收的站点。
Expand
指标描述

vendor_rpc_manager_cross_site_replication_times_seconds_count

跨站点请求的总数。

vendor_rpc_manager_cross_site_replication_times_seconds_sum

所有跨站点请求的总持续时间。

vendor_rpc_manager_replication_times_to_site_seconds_count

跨站点请求的总数。此指标比每个站点计数器更为详细。

vendor_rpc_manager_replication_times_to_site_seconds_sum

所有跨站点请求的总持续时间。此指标在各站点持续时间内更为详细。

vendor_rpc_manager_number_xsite_requests_received_from_site

此节点处理的跨站点请求总数。此指标比每个站点计数器更为详细。

vendor_x_site_admin_status

站点状态。值 1 表示它在线。这个值对 Data Grid CLI 命令进行了响应,并显示onlinetake-offline

注意

启用直方图后,将有百分比的存储桶可用。它们可用于创建 heat 映射,但收集和公开百分比存储桶可能会对部署性能造成负面影响。

5.9.4. 后续步骤

使用指标返回到故障排除

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat