将自定义 jmx 指标添加到 google 云监控 collectd 配置
Adding custom jmx metrics to google cloud monitoring collectd configuration
我已经按照描述添加了 JVM 监控插件 here
一切都很好而且我可以,但现在我想添加更多 JMX 指标。例如MemoryPool 特定计数器
所以我将此配置添加到 /opt/stackdriver/collectd/etc/collectd.d/jvm-sun-hotspot.conf
<MBean "jvm_localhost_MemoryPool">
ObjectName "java.lang:type=MemoryPool,name=*"
InstanceFrom "name"
<Value>
Type "gauge"
InstancePrefix "memorypool-usage_used"
Table false
Attribute "Usage.used"
</Value>
</MBean>
和
Collect "jvm_localhost_MemoryPool"
在 Connection
部分
它似乎是有效的 collectd 配置,但是当它被发送到 Stackdriver/Google 云监控时它被拒绝了。
012 {#012 "index": 261,#012 "valueErrors": [#012 {#012 "error": {#012 "code": 3,#012 "message": "Unsupported
collectd id: plugin: \"jvm\" type: \"gauge\" type_instance: \"memorypool-usagecommitted\""#012 }#012 }#012 ]#012 },#012 {#012
"index": 262,#012 "valueErrors": [#012 {#012 "error": {#012 "code": 3,#012 "message": "Unsupported collectd id: plug
in: \"jvm\" type: \"gauge\" type_instance: \"memorypool-usageinit\""#012 }#012 }#012 ]#012 },#012 {#012 "index": 263,#012
"valueErrors": [#012 {#012 "error": {#012 "code": 3,#012 "message": "Unsupported collectd id: plugin: \"jvm\" type: \"gau
ge\" type_instance: \"memorypool-usagemax\""#012 }#012 }#012 ]#012 },#012 {#012 "index": 264,#012 "valueErrors": [#012
{#012 "error": {#012 "code": 3,#012 "message": "Unsupported
据我了解,现在需要将其添加为自定义指标,但 this document 建议它会自动创建。
事实上,当我查看 builtin jvm metrics 的列表时,我看不到它们如何映射到 collectd 配置中的现有列表。
例如os-open_fd_count
是如何映射到 os/open_files
的?
查看 Google 的 custom collectd implementation 发送的实际 api 请求会很有帮助,但我看不到增加日志记录的方法。
我从 可以看出,我想查看的可能是自定义指标,但我该如何在 collectd 配置中执行此操作?
我试过了
InstancePrefix "custom.googleapis.com/memorypool-usage"
但还是不开心。
有没有人以前做过这个或者可以就我做错了什么提出任何建议?
故障排除文档 [1] 可能有助于确定需要转换的点,以及确保您的转换按预期运行。
[1] https://cloud.google.com/monitoring/agent/custom-metrics-agent#troubleshooting
要获得此日志记录,我需要添加 stackdriver_metric_type
元数据。
完整的链现在是
<Chain "GenericJMX_jvm">
<Rule "rewrite_custom_jmx">
<Match regex>
Plugin "^GenericJMX$"
PluginInstance "^jvm.*$"
TypeInstance "^memorypool-usage_used$"
</Match>
<Target "set">
MetaData "stackdriver_metric_type" "custom.googleapis.com/jvm/memorypool/usage_used"
MetaData "label:pool" "%{plugin_instance}"
</Target>
<Target "replace">
MetaData "label:pool" "jvm" ""
</Target>
</Rule>
<Rule "rewrite_genericjmx_to_jvm">
<Match regex>
Plugin "^GenericJMX$"
PluginInstance "^jvm.*$"
</Match>
<Target "replace">
PluginInstance "jvm" ""
</Target>
<Target "set">
Plugin "jvm"
</Target>
Target "return"
</Rule>
</Chain>
插件实例是池名称(例如 G1 Eden Space),这就是我将其复制到 'pool' 标签中的原因。
这确实在 Stackdriver 中自动创建了指标,但我还在 projects.metricDescriptors.create 方法中使用了以下主体来添加描述和单位。
{
"name": "projects/yourprojecthere/metricDescriptors/custom.googleapis.com/jvm/memorypool/usage_used",
"labels": [
{
"key": "pool",
"description": "Name of the JVM memory pool."
}
],
"metricKind": "GAUGE",
"valueType": "DOUBLE",
"unit": "By",
"description": "Current size in bytes of the memory pool.",
"type": "custom.googleapis.com/jvm/memorypool/usage_used",
"monitoredResourceTypes": [
"gce_instance"
]
}
Metric Explorer 中的结果图如下所示
我已经按照描述添加了 JVM 监控插件 here
一切都很好而且我可以,但现在我想添加更多 JMX 指标。例如MemoryPool 特定计数器
所以我将此配置添加到 /opt/stackdriver/collectd/etc/collectd.d/jvm-sun-hotspot.conf
<MBean "jvm_localhost_MemoryPool">
ObjectName "java.lang:type=MemoryPool,name=*"
InstanceFrom "name"
<Value>
Type "gauge"
InstancePrefix "memorypool-usage_used"
Table false
Attribute "Usage.used"
</Value>
</MBean>
和
Collect "jvm_localhost_MemoryPool"
在 Connection
部分
它似乎是有效的 collectd 配置,但是当它被发送到 Stackdriver/Google 云监控时它被拒绝了。
012 {#012 "index": 261,#012 "valueErrors": [#012 {#012 "error": {#012 "code": 3,#012 "message": "Unsupported
collectd id: plugin: \"jvm\" type: \"gauge\" type_instance: \"memorypool-usagecommitted\""#012 }#012 }#012 ]#012 },#012 {#012
"index": 262,#012 "valueErrors": [#012 {#012 "error": {#012 "code": 3,#012 "message": "Unsupported collectd id: plug
in: \"jvm\" type: \"gauge\" type_instance: \"memorypool-usageinit\""#012 }#012 }#012 ]#012 },#012 {#012 "index": 263,#012
"valueErrors": [#012 {#012 "error": {#012 "code": 3,#012 "message": "Unsupported collectd id: plugin: \"jvm\" type: \"gau
ge\" type_instance: \"memorypool-usagemax\""#012 }#012 }#012 ]#012 },#012 {#012 "index": 264,#012 "valueErrors": [#012
{#012 "error": {#012 "code": 3,#012 "message": "Unsupported
据我了解,现在需要将其添加为自定义指标,但 this document 建议它会自动创建。 事实上,当我查看 builtin jvm metrics 的列表时,我看不到它们如何映射到 collectd 配置中的现有列表。
例如os-open_fd_count
是如何映射到 os/open_files
的?
查看 Google 的 custom collectd implementation 发送的实际 api 请求会很有帮助,但我看不到增加日志记录的方法。
我从
我试过了
InstancePrefix "custom.googleapis.com/memorypool-usage"
但还是不开心。
有没有人以前做过这个或者可以就我做错了什么提出任何建议?
故障排除文档 [1] 可能有助于确定需要转换的点,以及确保您的转换按预期运行。
[1] https://cloud.google.com/monitoring/agent/custom-metrics-agent#troubleshooting
要获得此日志记录,我需要添加 stackdriver_metric_type
元数据。
完整的链现在是
<Chain "GenericJMX_jvm">
<Rule "rewrite_custom_jmx">
<Match regex>
Plugin "^GenericJMX$"
PluginInstance "^jvm.*$"
TypeInstance "^memorypool-usage_used$"
</Match>
<Target "set">
MetaData "stackdriver_metric_type" "custom.googleapis.com/jvm/memorypool/usage_used"
MetaData "label:pool" "%{plugin_instance}"
</Target>
<Target "replace">
MetaData "label:pool" "jvm" ""
</Target>
</Rule>
<Rule "rewrite_genericjmx_to_jvm">
<Match regex>
Plugin "^GenericJMX$"
PluginInstance "^jvm.*$"
</Match>
<Target "replace">
PluginInstance "jvm" ""
</Target>
<Target "set">
Plugin "jvm"
</Target>
Target "return"
</Rule>
</Chain>
插件实例是池名称(例如 G1 Eden Space),这就是我将其复制到 'pool' 标签中的原因。
这确实在 Stackdriver 中自动创建了指标,但我还在 projects.metricDescriptors.create 方法中使用了以下主体来添加描述和单位。
{
"name": "projects/yourprojecthere/metricDescriptors/custom.googleapis.com/jvm/memorypool/usage_used",
"labels": [
{
"key": "pool",
"description": "Name of the JVM memory pool."
}
],
"metricKind": "GAUGE",
"valueType": "DOUBLE",
"unit": "By",
"description": "Current size in bytes of the memory pool.",
"type": "custom.googleapis.com/jvm/memorypool/usage_used",
"monitoredResourceTypes": [
"gce_instance"
]
}
Metric Explorer 中的结果图如下所示