jvm jstat
我一直缺少在JStat中配置自定义标头的可能性 。 当然,有很多预定义的数据集,但是如果我们可以创建自己的数据集,那就更好了。 正如您可能已经设计的那样,我正在写这篇文章,因为这样的功能当然是可用的:)不幸的是我没有在任何文档中找到它,所以现在我将尝试填补这一空白。
我们要做的第一件事是为自定义描述符提供可能的JStat选项。 该描述符只是一个文本文件,其中包含我们称为“ jstat规范语言”的内容。 为了使该自定义文件可用于JStat,我们应将其放在以下路径中:
$HOME/.jvmstat/jstat_options
如果要查看捆绑的选项,请参考OpenJDK存储库中的文件 。
规范语言与json文件非常相似,并且包含选项元素组。 每个选项都应被威胁为一组列,这些列可以在单个jstat执行中显示。 仅举一些预定义的选项:gcnew,gccause或printcompilation。
每个选项元素都包含几个列段。 我认为列的含义很明显:)而且,在此描述符中最重要的只是列规范。
每列必须至少包含两个节点: header和data 。 标头用于描述列,并且可以使用特殊的字符^对齐,我将其称为“抓地力”。 Grip表示它将标题粘贴在列的特定侧面,因此:
- ^名称将向左对齐,
- ^名称^将居中,
- 名称^将在右侧对齐。
下一个重要节点是数据列。 它使用PerfCounter度量标准,并且能够进行一些基本的算术运算-例如加,减,除,乘以及使用括号将运算分组。 您还可以分组如果您想查看通过此机制可用的所有指标,则可以调用
$jcmd <PID> PerfCounter.print
并查看输出值。
样本最小文件内容可以像这样:
option customgc {column {header "Tenuring"data sun.gc.policy.tenuringThreshold}
}
当我们使用以下命令调用它时:
$jstat -customgc <PID> 1s 3
我们将看到类似以下内容:
Tenuring
6
4
5
我们还可以使用这些操作来显示例如联合年轻一代的用法:
option customgc {column {header "YoungC"data sun.gc.generation.0.space.0.used + sun.gc.generation.0.space.1.used + sun.gc.generation.0.space.2.used}
}
另外还有四列用于设置我们的列的布局。
- 首先是路线设置。 通过将align元素设置为上述值之一,可以选择是否要将数据对齐到左,中或右。
- 对于数字量度,我们可以通过在格式节点中输入字符串来指定用作DecimalFormat输入的字符串。
- 我们还可以通过添加具有特定长度的width元素来指定列的大小。
- 最后但并非最不重要的是缩放功能。 因为大多数指标仅包含来自JVM的原始输出,所以我们需要对其进行一些转换,以使其对人眼有用。 这可以通过将scale属性设置为以下值之一(令牌列)来完成。
代币 因子 描述 生的 1个 没有缩放 百分 1/100 转换成百分比 ķ 1024 公斤 中号 1024 * 1024 兆 G 1024 * 1024 * 1024 千兆 ñ 10 ^ -9 纳米 ü 10 ^ -6 微 米 10 ^ -3 毫 我们 10 ^ -6 微秒 多发性硬化症 10 ^ -3 毫秒 s 1个 秒 分 1/60 分钟 H 1/3600 小时
现在,让我们看一看优美的示例,该示例将展示我们如何使用其他属性:
option customgc {column {header "YoungC^"data sun.gc.generation.0.space.0.used + sun.gc.generation.0.space.1.used + sun.gc.generation.0.space.2.usedalign rightscale Mwidth 7format "0.0"}column {header "OldC^"data sun.gc.generation.1.space.0.usedalign rightscale Mwidth 7format "0.0"}
}
产生:
YoungC OldC67.7 161.037.8 165.492.2 182.8
主题结束:)祝你好运!
翻译自: https://www.javacodegeeks.com/2015/03/using-jstat-to-report-custom-jvm-metric-sets.html
jvm jstat