默认情况下,Application Insights Java 3.x 会收集一些 Java 管理扩展 (JMX) 指标,但在许多情况下,这是不够的。 本文档详细介绍了 JMX 配置选项。
如何收集额外的 JMX 指标?
可以向 applicationinsights.json 文件中添加 "jmxMetrics"
部分,以配置 JMX 指标收集。 请输入要在 Azure 门户的 Application Insights 资源中显示的指标名称。 要收集的每个指标都需要对象名称和特性。 你可以在对象名称中使用 *
作为 glob 风格的通配符(详情)。
如何知道哪些指标可以配置?
说得对 - 必须知道对象名称和属性,对于不同的库、框架和应用程序服务器,这些属性各有区别,并且通常得不到良好记录。 幸运的是,很容易找到你的特定环境支持的 JMX 指标。
若要查看可用的指标,请在 DEBUG
配置文件中将自我诊断级别设置为 applicationinsights.json
,例如:
{
"selfDiagnostics": {
"level": "DEBUG"
}
}
具有对象名称和属性名称的可用 JMX 指标会显示在 Application Insights 日志文件中。
日志文件输出的外观类似于这些示例。 在某些情况下,它可能非常广泛。
还可以使用命令行工具来检查可用的 JMX 指标。
配置示例
了解哪些指标可用后,可以配置代理以收集这些指标。
在以下 Java 8 配置示例中,第一个是嵌套指标 - LastGcInfo
,其具有多个属性,想要捕获 GcThreadCount
:
"jmxMetrics": [
{
"name": "Demo - GC Thread Count",
"objectName": "java.lang:type=GarbageCollector,name=PS MarkSweep",
"attribute": "LastGcInfo.GcThreadCount"
},
{
"name": "Demo - GC Collection Count",
"objectName": "java.lang:type=GarbageCollector,name=PS MarkSweep",
"attribute": "CollectionCount"
},
{
"name": "Demo - Thread Count",
"objectName": "java.lang:type=Threading",
"attribute": "ThreadCount"
}
]
Java 17 的其他配置示例:
"jmxMetrics": [
{
"name": "Demo - G1 Collection Count Young",
"objectName": "java.lang:name=G1 Young Generation,type=GarbageCollector",
"attribute": "CollectionCount"
},
{
"name": "Demo - G1 Collection Count Old",
"objectName": "java.lang:name=G1 Old Generation,type=GarbageCollector",
"attribute": "CollectionCount"
},
{
"name": "Demo - Thread Count",
"objectName": "java.lang:type=Threading",
"attribute": "ThreadCount"
}
]
在哪里能找到 Application Insights 中的 JMX 指标?
可以通过导航到 Azure 门户中的 application insights 资源来查看在应用程序运行时收集的 JMX 指标。 在“指标”选项卡下,按所示选择下拉菜单以查看指标。