这能够发现 全部JMX MBeans或MBean属性,或指定用于发现这些对象的模式。
必须了解发现规则配置的Mbean和Mbean属性之间的区别。 MBean是一个对象,可以表示设备,应用程序或需要管理的任何资源。例如一个代表web-server的Mbean。 它的属性是连接数,线程数,请求超时,http文件缓存,内存使用等。 用普通人的语言理解这个想法的话,我们可以将咖啡机定义为Mbean,它具有以下被监控的点:每杯水量,一段时间内的平均水消耗量,每杯所需的咖啡豆数量,咖啡豆和补水时间等。
在发现规则 配置中, 在类型区域选择 JMX agent。
该键值为:
你可以参考 使用手册里的 ObjectName以获取指定对象名称模式的选项。
如果未传递任何参数,则意味着请求JMX中的所有MBean属性。
不指定JMX发现的参数或尝试接收范围广泛的所有属性 *:type=*,name=*
可能会导致潜在的性能问题。
此监控项从Zabbix Java gateway 3.4开始支持。
键值举例:
jmx.discovery #Retrieve all JMX MBean attributes
jmx.discovery[beans] #Retrieve all JMX MBeans
jmx.discovery[attributes,"*:type=GarbageCollector,name=*"] #Retrieve all garbage collector attributes
jmx.discovery[beans,"*:type=GarbageCollector,name=*"] #Retrieve all garbage collectors
此监控项反馈一个JSON对象。例如,在发现MBean属性(为清楚起见重新格式化):
{
"data":[
{
"{#JMXVALUE}":"0",
"{#JMXTYPE}":"java.lang.Long",
"{#JMXOBJ}":"java.lang:type=GarbageCollector,name=PS Scavenge",
"{#JMXDESC}":"java.lang:type=GarbageCollector,name=PS Scavenge,CollectionCount",
"{#JMXATTR}":"CollectionCount"
},
{
"{#JMXVALUE}":"0",
"{#JMXTYPE}":"java.lang.Long",
"{#JMXOBJ}":"java.lang:type=GarbageCollector,name=PS Scavenge",
"{#JMXDESC}":"java.lang:type=GarbageCollector,name=PS Scavenge,CollectionTime",
"{#JMXATTR}":"CollectionTime"
},
{
"{#JMXVALUE}":"true",
"{#JMXTYPE}":"java.lang.Boolean",
"{#JMXOBJ}":"java.lang:type=GarbageCollector,name=PS Scavenge",
"{#JMXDESC}":"java.lang:type=GarbageCollector,name=PS Scavenge,Valid",
"{#JMXATTR}":"Valid"
},
{
"{#JMXVALUE}":"PS Scavenge",
"{#JMXTYPE}":"java.lang.String",
"{#JMXOBJ}":"java.lang:type=GarbageCollector,name=PS Scavenge",
"{#JMXDESC}":"java.lang:type=GarbageCollector,name=PS Scavenge,Name",
"{#JMXATTR}":"Name"
},
{
"{#JMXVALUE}":"java.lang:type=GarbageCollector,name=PS Scavenge",
"{#JMXTYPE}":"javax.management.ObjectName",
"{#JMXOBJ}":"java.lang:type=GarbageCollector,name=PS Scavenge",
"{#JMXDESC}":"java.lang:type=GarbageCollector,name=PS Scavenge,ObjectName",
"{#JMXATTR}":"ObjectName"
}
]
}
在发现MBean属性(为清楚起见重新格式化):
{
"data":[
{
"{#JMXDOMAIN}":"java.lang",
"{#JMXTYPE}":"GarbageCollector",
"{#JMXOBJ}":"java.lang:type=GarbageCollector,name=PS Scavenge",
"{#JMXNAME}":"PS Scavenge"
}
]
}
以下宏支持在发现规则中的过滤器,监控项,触发器和图表的原型中的应用:
宏 | 述 |
---|---|
发现MBean属性 | |
{#JMXVALUE} | Attribute value. |
{#JMXTYPE} | Attribute type. |
{#JMXOBJ} | Object name. |
{#JMXDESC} | Object name including attribute name. |
{#JMXATTR} | Attribute name. |
发现MBeans | |
{#JMXDOMAIN} | MBean domain. (Zabbix reserved name) |
{#JMXOBJ} | Object name. (Zabbix reserved name) |
{#JMX<key property>} | MBean properties (like {#JMXTYPE}, {#JMXNAME}). Some important notes to pay attention to when defining MBean attribute name that is created from MBean property name by the following algorithm: * attribute name case is changed to uppercase; * attribute name case is ignored (no LLD macro is generated) in case it consists of not supported characters. Supported characters can be described by the following regular expression: "A-Z0-9_\."; * if an attribute name is called "obj" or "domain" it will be replaced with the values of Zabbix properties {#JMXOBJ} and {#JMXDOMAIN} (supported since Zabbix 3.4.3.). |
请考虑 jmx.discovery (以 "beans" 模式) 的例子. MBean定义了以下属性:
作为JMX发现的结果,将生成以下LLD宏:
忽略的属性是:
让我们回顾两个使用Mbean创建LLD规则的实际示例。 要了解收集Mbeans的LLD规则与收集Mbean属性的LLD规则之间的区别,请查看下表:
MBean1 | MBean2 | MBean3 |
MBean1Attribute1 | MBean2Attribute1 | MBean3Attribute1 |
MBean1Attribute2 | MBean2Attribute2 | MBean3Attribute2 |
MBean1Attribute3 | MBean2Attribute3 | MBean3Attribute3 |
规则将会反馈三个对象: 该列的顶行: MBean1, MBean2, MBean3.
有关对象的更多信息,请参阅 支持宏 表格, 发现MBean 部分。
收集Mbeans(无属性)的发现规则配置如下所示:
使用键值:
能发现所有没有属性的垃圾收集器。 由于垃圾收集器具有相同的属性集,我们可以通过以下方式在项原型中使用所需的属性:
使用键值:
LLD发现规则将导致与此接近的内容(为两个垃圾收集器发现的监控项):
这条规则将会反馈9个对象:MBean1Attribute1, MBean2Attribute1, Mbean3Attribute1,MBean1Attribute2,MBean2Attribute2, Mbean3Attribute2, MBean1Attribute3, MBean2Attribute3, Mbean3Attribute3.
更多有关于对象的信息,请参考 支持宏 表格, 发现MBean属性 部分.
收集MBean属性的发现规则配置如以下所示:
使用键值:
将发现具有单个项属性的所有垃圾收集器。
在这种特殊情况下,将从原型为每个MBean属性创建一个监控项。这种配置的主要缺点是从触发器原型的触发器创建是不可能的,因为所有属性只有一个监控项原型。因此,此设置可用于数据收集,但不建议用于自动监控。