我想监视(通过SNMP)我系统上运行的几个JBoss MBean的一些属性:
我已将我的attributes.xml配置为低于snmp-adaptor.sar以包含:
<mbean name="jboss.ha:service=HASingletonDeployer">
<attribute name="MasterNode" oid=".1.2.3.4.1.22"/>
<attribute name="PartitionName" oid=".1.2.3.4.1.23"/>
<attribute name="TargetStopMethodArgument" oid=".1.2.3.4.1.24"/>
<attribute name="TargetName" oid=".1.2.3.4.1.25"/>
<attribute name="State" oid=".1.2.3.4.1.26"/>
<attribute name="StateString" oid=".1.2.3.4.1.27"/>
<attribute name="ClusterPartition" oid=".1.2.3.4.1.28"/>
</mbean>
但是使用我的MIB浏览器,我只能在get()
或String
属性上成功Int
。布尔或对象将返回SNMP错误。因此,适配器甚至不会“发布”这些情况的OID。
对于上面的列表,MasterNode
,TargetName
和ClusterPartition
在SNMP get()
上失败,其余的都成功。
对此有何解决方法?
更多信息:来自org.jboss.ha.singleton.HASingletonController
的JMX控制台:
(姓名/类型)
TargetName javax.management.ObjectName
StateString java.lang.String
MasterNode boolean
ClusterPartition org.jboss.ha.framework.server.ClusterPartitionMBean
TargetStartMethod java.lang.String
TargetStartMethodArgument java.lang.String
State int
TargetStopMethodArgument java.lang.String
PartitionName java.lang.String
(其中包括)
答案 0 :(得分:1)
JBoss SNMP适配器具有非常原始的逻辑,用于将Java类型映射到SNMP类型。它可以处理String,Integer,Long,这就是它。这部分是因为SNMP具有非常窄的可用类型范围(例如,它没有布尔值),部分原因是SNMP适配器还没有很好地开发。
向RedHat提交了一个issue,但与此同时,您可以选择重写SNMP适配器(毕竟是开放源代码),或者编写重新公开所需的MBean信息为String / Long / Integer(例如将布尔值暴露为1或0)。