跳转到内容

遥测

jvmguard 从四种不同类型的来源观测标量值:

  • 由 jvmguard 收集器管理的实体的计数,例如已连接 VM 的数量或事务数量。这不是在受监控 VM 中的直接测量, 而是在 jvmguard 服务器中的计算。
  • 在受监控 VM 内部测量的遥测,例如堆大小、CPU 使用率或活动线程数。
  • 在记录设置中配置的 MBean 遥测。
  • 使用 jvmguard API 中的遥测注解定义的声明式遥测。

所有遥测都可以在“遥测”视图中找到。每个标准遥测、MBean 遥测和声明式遥测在“遥测”节点下都有自己的条目。

许多遥测是堆叠面积图,各条线相加得到一个总值。例如,“事务”遥测显示事务总数随时间的变化,并按各种 策略违规拆分成单独的线条。

直接激活一个遥测视图时,显示的是截至当前时间的 10 分钟间隔。这里显示的数据以一分钟的分辨率记录。其他不从 事务观测获取数据的遥测,分辨率为 10 秒。可以用遥测顶部的导航按钮或遥测边缘的悬停按钮向过去移动,但到了 某个时刻,每分钟一个数据点的分辨率就会结束。jvmguard 会将遥测逐步合并为更粗粒度的分辨率,并将其保留逐步 更长的时间。缩放到总跨度至少为 3 小时的间隔时,会显示分辨率为 2 分钟、历史记录更长的合并数据点。此时可以 比之前的更高分辨率向过去移动更远。

分辨率和保留时间发生变化的所有显示间隔的完整表格如下:

显示间隔 分辨率 保留时间
10 分钟 10 秒(基于事务的数据为 1 分钟) 6 小时(基于事务的数据为 48 小时)
3 小时 2 分钟 10 天
3 天 1 小时 1 年
30 天 12 小时 不限

向更早或更晚的时间移动时,显示间隔的起点会移动整个显示范围。

在这些显示间隔之间,还有许多其他间隔,它们只增加显示的时间跨度,但使用相同的分辨率。使用遥测顶部或上下文 菜单中的缩放按钮,可以更改缩放级别以查看更多或更少的数据。在遥测上双击时,如果可能,会以所选时间点为中心 放大。

有些遥测有多条不相加为总值的数据线。在这种情况下,图表上方会有一个下拉框,遥测以折线图显示。

再举一个例子,堆遥测显示已使用堆内存随时间的变化。

将鼠标悬停在图表上可以获得详细数值。在堆叠面积图中,可以点击图例项来切换单条数据线。

在遥测的上下文菜单中,有一些操作可以跳转到所选时间点的相关视图。对于所有遥测,都可以跳转到调用树和热点 视图。

VM 视图以所谓的 “sparkline” 形式显示当前遥测数据的小型版本。sparkline 没有带刻度的坐标轴,用于直观地呈现 观测标量值的近期变化。图形后面跟着当前数值。上标表示观测到的最大值,下标表示显示时间范围内的最小值。

选择“遥测”视图时,“概览”选项卡以 sparkline 形式显示最近一小时和最近一天的所有遥测,当前值与最大值、 最小值一起显示在单独的列中。

在“VM”视图中,可以配置一组 sparkline 列。这样就可以对不同 VM 和 VM 组的受监控值进行相对评估。sparkline 可以分别缩放,也可以按组使用统一刻度,或者对所有 VM 使用统一刻度。

sparkline 列集合在“VM”视图工具栏的“遥测”选择器中选择。

点击“VM”视图或遥测概览中的 sparkline,会激活完整的遥测视图,其时间间隔与所选 sparkline 中显示的间隔 最为接近。

许多应用程序服务器和框架发布的 MBean 带有对监控很有意义的值。MBean 发布的所有数值都可以由 jvmguard 代理 轮询并成为遥测的一部分。为此,并不需要 JMX 服务器实际对外开放,只要 MBean 在内部注册到了任何一个 MBean 服务器即可。

在记录设置的“遥测”步骤中,可以添加 MBean 遥测及其遥测线。遥测定义遥测的名称、单位和整体行为,遥测线定义 实际数据。

如果遥测线是某个总值的组成部分,可以将它们堆叠成面积图。如果应对来自不同 VM 的受监控值取平均,请选择 “对组内所有 VM 的值取平均”,否则值会被求和。求和适用于业务度量,例如“已登录用户数”,或共享资源的使用 情况,例如“数据库连接数”。

可配置的单位是基本单位,单位前缀会按需添加。例如,选择“字节”单位后,遥测中的大值会自动显示为 “kB”、 “MB” 和 “GB”。有时需要应用一个缩放因子,才能将记录值转换为所选单位。缩放因子以 10 的负幂次添加。例如, 要乘以 0.01,缩放因子为 2。

每条 MBean 线由一个 MBean 对象名和一个 MBean 值路径定义。获取这些设置最简单的方式是点击 MBean 线配置对话框中的选择按钮。此时会显示一个 MBean 属性浏览器,可以从受监控的 VM 中选择一个数值。配置的线名会显示在遥测的图例中。

jvmguard 不会创建尚不存在的平台 MBean 服务器,因此如果配置了来自平台 MBean 服务器的遥测,必须在应用程序 启动时调用

ManagementFactory.getPlatformMBeanServer();

以确保受监控 VM 重启后该遥测仍能工作。

要监控应用程序中的任意标量值,可以添加一个返回数值(基本类型或基本类型包装类)的 public static 无参方法, 然后用 @Telemetry 注解标注该方法。必须确保包含该方法的 类确实被加载,否则 jvmguard 不会检测到该注解方法。

要显示自定义遥测,请进入“遥测”视图,并在遥测下拉框中找到该遥测。

注解遥测一旦被 jvmguard 检测到,就会一直显示在此列表中,无论当前已连接的 VM 中是否存在该注解方法。要停用 这样的遥测,请进入常规设置,打开“显示”选项卡,使用隐藏的声明式遥测选择器。在这里可以隐藏选定的遥测。 注意,遥测按名称匹配,而不是按注解方法匹配。

更多信息请参阅 dev.jvmguard.annotation.Telemetry 类的 Javadoc,jvmguard 安装目录的 api/doc 目录中也有这份文档。

所有显示的时间都以服务器的时区表示。如果处于不同的时区,显示的时间与本地挂钟时间之间会存在时差。