阈值
阈值检测遥测的异常状况。阈值违规不直接耦合任何操作,只会增加一个关联的计数器。阈值可以针对单个 VM 或 VM 组配置。这与触发器不同,触发器始终在 VM 组级别上工作,而不是针对单个 VM。
对于单 VM 阈值,会检查每个 VM 的遥测值,并为每个违规的 VM 创建一个阈值违规。例如,可以为已使用堆设置 一个上界,每个超过该上界的 VM 都会产生自己的阈值违规。
对于 VM 组阈值,会检查 VM 组的遥测值,无论有多少个 VM 单独违反阈值,都只创建一个阈值违规。设想一个组 中有 10 个 VM,所有 VM 的堆使用量都在上升。使用单 VM 阈值时,所有 10 个 VM 都会报告阈值违规。而实际上只 需要响应一次,而不是十次。此外,经过平均的组值更平滑,与单 VM 阈值相比,误报的阈值违规更少。
所有显示频率数据的遥测在 VM 组上都会求和。如果有 10 个 VM,每个每秒处理 10 个事务,VM 组将显示每秒 100 个 事务。如果可接受范围是针对总值而不是单个 VM 的负载定义的,那么必须将阈值配置为 VM 组阈值。
计数器在单 VM 级别和 VM 组级别上都会维护。发生阈值违规时,它会沿父层级向上冒泡,将所有关联的计数器加一。 在该层级的每个 VM 组中,都可以定义对相应阈值违规次数作出响应的触发器。
可以在 VM 组的记录设置中为每条遥测定义阈值。阈值定义关联一条遥测和可选的下界与上界。可用的单位取决于 所选遥测。
某些情况下,需要为同一遥测定义多个阈值,例如为了区分不同的严重程度。此时必须为阈值指定不同的自定义 名称,例如“高堆使用量”和“很高堆使用量”。这些定义可以作为采用不同升级策略的触发器的基础。
为避免阈值违规的误触发,可以配置界限必须被持续超过的最短时间,超过该时间后才会检测到阈值违规。阈值触发 之后还有一个抑制时间,在此期间阈值被静默,不会再次触发。这用于防止在条件振荡时频繁触发。
如果阈值被持续违反,jvmguard 在此期间不会再触发任何阈值违规。有一个复选框可以禁用此约束。禁用后,将以 配置的抑制时间为周期,按恒定频率触发新的阈值违规。
与事务一样,阈值也可以保存和加载集合。这样就可以在 VM 组配置之间复制和粘贴阈值定义。

