多站点部署的嵌入式 Infinispan 指标

了解有关监控缓存健康状况的指标

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

先决条件

  • 需要为 Keycloak 启用指标。 有关更多详细信息,请遵循通过指标获得洞察力指南。

  • 一个收集指标的监控系统。

指标

全局标签

cache=<name>

缓存名称。

大小

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

对唯一条目大小指标求和,以获得集群条目的总数。
指标 描述

vendor_statistics_approximate_entries

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

vendor_statistics_approximate_entries_unique

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

数据访问

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

存储

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

指标 描述

vendor_statistics_store_times_seconds_count

存储请求的总数。

vendor_statistics_store_times_seconds_sum

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

启用直方图后,可以使用百分位桶。 这些对于创建热图很有用,但是,收集和公开百分位桶可能会对部署性能产生负面影响。

读取

读取操作从缓存中读取值。 它分为两组,如果找到值则为命中,如果未找到则为未命中。

指标 描述

vendor_statistics_hit_times_seconds_count

读取命中请求的总数。

vendor_statistics_hit_times_seconds_sum

所有读取命中请求的总持续时间。

vendor_statistics_miss_times_seconds_count

读取未命中请求的总数。

vendor_statistics_miss_times_seconds_sum

所有读取未命中请求的总持续时间。

启用直方图后,可以使用百分位桶。 这些对于创建热图很有用,但是,收集和公开百分位桶可能会对部署性能产生负面影响。

移除

移除操作从缓存中移除值。 它分为两组,如果值存在则为命中,如果值不存在则为未命中。

指标 描述

vendor_statistics_remove_hit_times_seconds_count

移除命中请求的总数。

vendor_statistics_remove_hit_times_seconds_sum

所有移除命中请求的总持续时间。

vendor_statistics_remove_miss_times_seconds_count

移除未命中请求的总数。

vendor_statistics_remove_miss_times_seconds_sum

所有移除未命中请求的总持续时间。

启用直方图后,可以使用百分位桶。 这些对于创建热图很有用,但是,收集和公开百分位桶可能会对部署性能产生负面影响。

对于 usersrealms 缓存,数据库失效会转换为移除操作。 这些指标很好地指示了数据库实体被修改并因此从缓存中移除的频率。

读取和移除操作的命中率

可以使用表达式来计算 Prometheus 等系统中缓存的命中率。 例如,读取操作的命中率可以表示为

vendor_statistics_hit_times_seconds_count
/
(vendor_statistics_hit_times_seconds_count
 + vendor_statistics_miss_times_seconds_count)

读/写比率

可以使用表达式来计算缓存的读写比率,使用上面的指标

(vendor_statistics_hit_times_seconds_count
 + vendor_statistics_miss_times_seconds_count)
/
(vendor_statistics_hit_times_seconds_count
 + vendor_statistics_miss_times_seconds_count
 + vendor_statistics_remove_hit_times_seconds_count
 + vendor_statistics_remove_miss_times_seconds_count
 + vendor_statistics_store_times_seconds_count)

驱逐

驱逐是限制缓存大小的过程,当缓存满时,会移除一个条目,为要缓存的新条目腾出空间。 由于 Keycloak 将数据库实体缓存在 usersrealmsauthorization 中,因此数据库访问始终伴随着驱逐事件。

指标 描述

vendor_statistics_evictions

驱逐事件的总数。

驱逐率

驱逐的快速增加和非常高的数据库 CPU 使用率意味着 usersrealms 缓存对于 Keycloak 的平稳运行来说太小了,因为数据需要经常从数据库重新加载,这会减慢响应速度。 如果有足够的内存可用,请考虑使用 CLI 选项 cache-embedded-users-max-countcache-embedded-realms-max-count 增加最大缓存大小

事务

事务缓存使用单阶段提交和两阶段提交协议来完成事务。 这些指标跟踪操作持续时间。

PESSMISTIC 锁定模式使用单阶段提交,并且不创建提交请求。
在健康的集群中,回滚次数应保持为零。 死锁应该很少见,但它们会增加回滚次数。
指标 描述

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

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

启用直方图后,可以使用百分位桶。 这些对于创建热图很有用,但是,收集和公开百分位桶可能会对部署性能产生负面影响。

下一步

在本页