外部 Infinispan 部署
本文档包含有关可用于监控部署性能的外部 Infinispan 指标的详细信息。
启用的 Infinispan 服务器指标
Infinispan 在端点 /metrics
中公开指标。默认情况下,它们已启用。我们建议启用属性 name-as-tags
,因为它使指标名称独立于缓存名称。
要配置 Infinispan 服务器中的指标,只需按如下面的 XML 中所示启用即可。
<infinispan>
<cache-container statistics="true">
<metrics gauges="true" histograms="false" name-as-tags="true" />
</cache-container>
</infinispan>
在 Kubernetes 中使用 Infinispan 运算符,可以通过使用带有自定义配置的 ConfigMap
来启用指标。下面是一个示例。
apiVersion: v1
kind: ConfigMap
metadata:
name: cluster-config
data:
infinispan-config.yaml: >
infinispan:
cacheContainer:
metrics:
gauges: true
namesAsTags: true
histograms: false
apiVersion: infinispan.org/v1
kind: Infinispan
metadata:
name: infinispan
annotations:
infinispan.org/monitoring: 'true' (1)
spec:
configMapName: "cluster-config" (2)
1 | 启用部署的监控。 |
2 | 设置带有自定义配置的 ConfigMap 名称。 |
集群和网络
本节介绍有助于监控 Infinispan 节点之间通信以识别可能出现的网络问题的指标。
全局标签
-
cluster=<name>
:集群名称。如果从多个集群收集指标,则此标签有助于识别它们属于哪个集群。 -
node=<node>
:报告指标的节点的名称。
响应时间
以下指标公开远程请求的响应时间。响应时间是在两个节点之间测量的,包括处理时间。所有请求都由这些指标衡量,并且响应时间应该在整个集群生命周期内保持稳定。
在健康集群中,响应时间将保持稳定。响应时间增加可能表示集群已降级或某个节点负载过重。 |
标签
-
node=<node>
:它标识发送方节点。 -
target_node=<node>
:它标识接收方节点。
指标 | 说明 |
---|---|
|
对接收方节点的同步请求数。 |
|
对接收方节点的同步请求的总持续时间 |
当启用直方图时,百分位数桶可用。这些桶对于创建热图很有用,但是收集和公开百分位数桶可能会对部署性能产生负面影响。 |
带宽
Infinispan 接收和发送的所有字节都由这些指标收集。此外,所有内部消息(如心跳)也都会被计数。它们允许计算每个节点当前使用的带宽。
指标名称取决于使用的 JGroups 传输协议。 |
指标 | 协议 | 说明 |
---|---|---|
|
|
节点接收的总字节数。 |
|
|
|
|
|
|
|
|
节点发送的总字节数。 |
|
|
|
|
|
线程池
监控线程池大小是判断节点是否负载过重的良好指标。接收到的所有请求都将添加到线程池中以进行处理,并且当线程池满时,请求将被丢弃。重新传输机制确保了可靠的通信,同时增加了资源使用量。
在健康集群中,线程池永远不会接近其最大大小(默认情况下为 200 个线程)。 |
线程池指标在使用虚拟线程时不可用。 |
指标名称取决于使用的 JGroups 传输协议。 |
指标 | 协议 | 说明 |
---|---|---|
|
|
线程池中的当前线程数。 |
|
|
|
|
|
|
|
|
池中曾经同时存在的最大线程数。 |
|
|
|
|
|
流量控制
流量控制通过调整消息发送方的速率以适应最慢的接收方的速率来随时间推移。这是通过基于信用的系统实现的,在该系统中,每个发送方在发送时都会减少其信用额度。当信用额度降至 0 以下时,发送方会阻塞,并且只有在从接收方收到补充消息时才会恢复发送消息。
以下指标显示阻塞消息的数量和平均阻塞时间。当某个值不同于零时,它可能表示接收方已过载,可能会降低集群性能。
每个节点都有两个独立的流量控制协议,UFC
用于单播消息,MFC
用于多播消息。
健康集群显示所有指标的值均为零。 |
指标 | 说明 |
---|---|
|
流量控制阻塞单播消息发送方的次数。 |
|
在尝试发送单播消息时,流量控制阻塞的平均时间(以毫秒计)。 |
|
流量控制阻塞多播消息发送方的次数。 |
|
在尝试发送多播消息时,流量控制阻塞的平均时间(以毫秒计)。 |
重新传输
JGroups 提供可靠的消息传递。当消息在网络上被丢弃,或者接收方无法处理消息时,需要重新传输。重新传输会增加资源使用量,通常是系统过载的信号。
随机早期丢弃 (RED) 监控发送方队列。当队列几乎已满时,消息将被丢弃,并且必须进行重新传输。它可以防止线程因发送方队列已满而被阻塞。
健康集群显示所有指标的值均为零。 |
指标 | 说明 |
---|---|
|
重新传输的消息数。 |
|
发送方丢弃的消息总数。 |
|
发送方丢弃的所有消息的百分比。 |
网络分区
集群大小
集群大小指标报告集群中存在的节点数。如果它不同,则可能表示某个节点正在加入、关闭,或者在最坏的情况下,正在发生网络分区。
健康集群显示所有节点中的相同值。 |
指标 | 说明 |
---|---|
|
集群中的节点数。 |
Infinispan 缓存
本节中的指标有助于监控 Infinispan 缓存的健康状况和集群复制。
全局标签
-
cache=<name>
:缓存名称。
大小
使用这两个指标监控缓存中的条目数。如果缓存是集群的,则每个条目都有一个所有者节点和零个或多个不同节点的备份副本。
将唯一条目大小指标加起来以获得集群中的总条目数。 |
指标 | 说明 |
---|---|
|
节点存储的条目(包括备份副本)的近似数量。 |
|
节点存储的条目(不包括备份副本)的近似数量。 |
数据访问
以下指标监控缓存访问,例如读取、写入及其持续时间。
存储
存储操作是写入操作,它写入或更新存储在缓存中的值。
指标 | 说明 |
---|---|
|
存储请求总数。 |
|
所有存储请求的总持续时间。 |
当启用直方图时,百分位数桶可用。这些桶对于创建热图很有用,但是收集和公开百分位数桶可能会对部署性能产生负面影响。 |
读取
读取操作从缓存中读取值。它分为两类,如果找到值,则为命中,如果未找到,则为未命中。
指标 | 说明 |
---|---|
|
读取命中请求总数。 |
|
所有读取命中请求的总持续时间。 |
|
读取未命中请求总数。 |
|
所有读取未命中请求的总持续时间。 |
当启用直方图时,百分位数桶可用。这些桶对于创建热图很有用,但是收集和公开百分位数桶可能会对部署性能产生负面影响。 |
移除
移除操作从缓存中移除值。它分为两类,如果值存在,则为命中,如果值不存在,则为未命中。
指标 | 说明 |
---|---|
|
移除命中请求总数。 |
|
所有移除命中请求的总持续时间。 |
|
移除未命中请求总数。 |
|
所有移除未命中请求的总持续时间。 |
当启用直方图时,百分位数桶可用。这些桶对于创建热图很有用,但是收集和公开百分位数桶可能会对部署性能产生负面影响。 |