jconsole을 통해 액세스 할 수있는 모든 JMX 데이터를 기록 할 수 있기를 원합니다. 프로그래밍 방식으로이 작업을 수행 할 수있는 방법이 있습니까? 시스템의 로깅 형식을 구축 중이며 jconsole과 유사한 도구로 볼 수있는 간격 데이터를 만들고 싶습니다.프로그래밍 방식으로 JMX 데이터를 덤프하려면 어떻게합니까?
어떻게해야합니까?
jconsole을 통해 액세스 할 수있는 모든 JMX 데이터를 기록 할 수 있기를 원합니다. 프로그래밍 방식으로이 작업을 수행 할 수있는 방법이 있습니까? 시스템의 로깅 형식을 구축 중이며 jconsole과 유사한 도구로 볼 수있는 간격 데이터를 만들고 싶습니다.프로그래밍 방식으로 JMX 데이터를 덤프하려면 어떻게합니까?
어떻게해야합니까?
java.lang.management.ManagementFactory을 사용하면 JMX 데이터에 액세스 할 수 있습니다.
예.
List<MemoryPoolMXBean> memPoolBeans = ManagementFactory.getMemoryPoolMXBeans();
for (MemoryPoolMXBean mpb : memPoolBeans) {
System.out.println("Memory Pool: " + mpb.getName());
}
일부 샘플은 SO 쿼리에서 사용할 수 있습니다 [자바] +있다 ManagementFactory
좋은 읽기 : https://www.ibm.com/developerworks/library/j-jtp09196/index.html
전체 구현을위한 원격 VM에 연결 :
Map<String,String[]> env = new HashMap<String, String[]>();
env.put(JMXConnector.CREDENTIALS, new String[]{"user","pass"});
JMXServiceURL address = new JMXServiceURL("service:rmi:///jndi/rmi://host:port/jmxrmi");
JMXConnector connector = JMXConnectorFactory.connect(address,env);
MBeanServerConnection mbs = connector.getMBeanServerConnection();
//get all mbeans
Set<ObjectInstance> beans = mbs.queryMBeans(null,null);
for(ObjectInstance instance : beans)
{
MBeanInfo info = mbs.getMBeanInfo(instance.getObjectName());
}
에서 정보, 원하는대로 개체 이름과 특성을 쿼리 할 수 있습니다.
동일한 내용을 원할 때이 command line JMX client을 시작점으로 사용했습니다.
"Attributes"명령에 대해 10.4를 원했지만 링크가 끊어졌습니다. 내가 거울을 발견 할 수있는 어떤 생각? –
나는 그것이 내가 가지고있는 버전이라고 생각한다. 여기서 얻을 수 있습니다 : http://drop.io/jmxclient – Mark
이 방법이 유용하지만 모든 개체 이름에서 모든 값을 쉽게 얻을 수있는 방법이 있습니까? 지금 당장 NA naDBeanServerConnection을 얻은 다음 mbs.getAttributes (..)를 사용하여 각 값을 개별적으로 쿼리해야합니다. 더 좋은 방법이 있습니까? –
좋아요, queryMBeans로 모든 ObjectName을 가져올 수는 있지만 모든 속성을 자동으로 가져올 수는 없습니다. –
: P. 자, 나는 모든 속성을 질의 할 수 있지만, 당신이하는 방식은 예외적으로 순환 적이다. 귀하의 답변을 편집하여 조금 더 완성한 다음 받아 들일 것입니다. –