我已经安装了 alfresco 4.0d,我正在尝试使用仙人掌设置监控。我从percona得到了模板。当我尝试运行以下命令时出现错误。我使用了来自 tomcat/lib 目录的 percona 链接中提到的 jar 文件。
/opt/apache-ant-1.8.1/bin/ant -f jmx-monitor.xml -v -d
Apache Ant version 1.8.1 compiled on April 30 2010
Buildfile: /home/cacti/jmx-monitor.xml
Adding reference: ant.PropertyHelper
Detected Java version: 1.6 in: /opt/alfresco-4.0.d/java/jre
Detected OS: Linux
Adding reference: ant.ComponentHelper
Setting ro project property: ant.file -> /home/cacti/jmx-monitor.xml
Setting ro project property: ant.file.type -> file
Adding reference: ant.projectHelper
Adding reference: ant.parsing.context
Adding reference: ant.targets
parsing buildfile /home/cacti/jmx-monitor.xml with URI = file:/home/cacti/jmx-monitor.xml
Setting ro project property: ant.project.name -> JMX Monitor
Adding reference: JMX Monitor
Setting ro project property: ant.project.default-target -> status
Setting ro project property: ant.file.JMX Monitor -> /home/cacti/jmx-monitor.xml
Setting ro project property: ant.file.type.JMX Monitor -> file
Project base dir set to: /home/cacti
+Target:
+Target: status
Adding reference: ant.LocalProperties
parsing buildfile jar:file:/opt/apache-ant-1.8.1/lib/ant.jar!/org/apache/tools/ant/antlib.xml with URI = jar:file:/opt/apache-ant-1.8.1/lib/ant.jar!/org/apache/tools/ant/antlib.xml from a zip file
Setting project property: jmx.server.name -> hector
Setting project property: jmx.server.port -> 50500
Setting ro project property: ant.project.invoked-targets -> status
Attempting to create object of type org.apache.tools.ant.helper.DefaultExecutor
Adding reference: ant.executor
Build sequence for target(s) `status' is [status]
Complete build sequence is [status, ]
status:
parsing buildfile jar:file:/home/cacti/.ant/lib/catalina-ant.jar!/org/apache/catalina/ant/jmx/antlib.xml with URI = jar:file:/home/cacti/.ant/lib/catalina-ant.jar!/org/apache/catalina/ant/jmx/antlib.xml from a zip file
Class org.apache.catalina.ant.jmx.JMXAccessorTask loaded from parent loader (parentFirst)
+Datatype antlib:org.apache.catalina.ant.jmx:open org.apache.catalina.ant.jmx.JMXAccessorTask
Class org.apache.catalina.ant.jmx.JMXAccessorSetTask loaded from parent loader (parentFirst)
+Datatype antlib:org.apache.catalina.ant.jmx:set org.apache.catalina.ant.jmx.JMXAccessorSetTask
Class org.apache.catalina.ant.jmx.JMXAccessorGetTask loaded from parent loader (parentFirst)
+Datatype antlib:org.apache.catalina.ant.jmx:get org.apache.catalina.ant.jmx.JMXAccessorGetTask
Class org.apache.catalina.ant.jmx.JMXAccessorInvokeTask loaded from parent loader (parentFirst)
+Datatype antlib:org.apache.catalina.ant.jmx:invoke org.apache.catalina.ant.jmx.JMXAccessorInvokeTask
Class org.apache.catalina.ant.jmx.JMXAccessorQueryTask loaded from parent loader (parentFirst)
+Datatype antlib:org.apache.catalina.ant.jmx:query org.apache.catalina.ant.jmx.JMXAccessorQueryTask
Class org.apache.catalina.ant.jmx.JMXAccessorCreateTask loaded from parent loader (parentFirst)
+Datatype antlib:org.apache.catalina.ant.jmx:create org.apache.catalina.ant.jmx.JMXAccessorCreateTask
Class org.apache.catalina.ant.jmx.JMXAccessorUnregisterTask loaded from parent loader (parentFirst)
+Datatype antlib:org.apache.catalina.ant.jmx:unregister org.apache.catalina.ant.jmx.JMXAccessorUnregisterTask
Class org.apache.catalina.ant.jmx.JMXAccessorEqualsCondition loaded from parent loader (parentFirst)
+Datatype antlib:org.apache.catalina.ant.jmx:equals org.apache.catalina.ant.jmx.JMXAccessorEqualsCondition
Class org.apache.catalina.ant.jmx.JMXAccessorCondition loaded from parent loader (parentFirst)
+Datatype antlib:org.apache.catalina.ant.jmx:condition org.apache.catalina.ant.jmx.JMXAccessorCondition
BUILD FAILED
/home/cacti/jmx-monitor.xml:29: java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.NameNotFoundException: jmxrmi
at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:338)
at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:248)
at org.apache.catalina.ant.jmx.JMXAccessorTask.createJMXConnection(JMXAccessorTask.java:385)
at org.apache.catalina.ant.jmx.JMXAccessorTask.accessJMXConnection(JMXAccessorTask.java:441)
at org.apache.catalina.ant.jmx.JMXAccessorTask.getJMXConnection(JMXAccessorTask.java:479)
at org.apache.catalina.ant.jmx.JMXAccessorTask.execute(JMXAccessorTask.java:346)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:390)
at org.apache.tools.ant.Target.performTasks(Target.java:411)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1397)
at org.apache.tools.ant.Project.executeTarget(Project.java:1366)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1249)
at org.apache.tools.ant.Main.runBuild(Main.java:801)
at org.apache.tools.ant.Main.startAnt(Main.java:218)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Caused by: javax.naming.NameNotFoundException: jmxrmi
at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:99)
at com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:185)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(RMIConnector.java:1886)
at javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1856)
at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:257)
... 22 more
Total time: 0 seconds
jmx-monitor.xml的内容如下
<project name="JMX Monitor"
xmlns:jmx="antlib:org.apache.catalina.ant.jmx"
default="status"
basedir=".">
<property name="jmx.server.name" value="hector" />
<property name="jmx.server.port" value="50500" />
<target name="status" description="Show JMX Cluster state">
<jmx:open
host="${jmx.server.name}"
port="${jmx.server.port}"
username="controlRole"
password="change_asap"/>
<jmx:get
name="java.lang:type=Memory"
attribute="HeapMemoryUsage"
resultproperty="HeapMemoryUsage"
/>
<jmx:get
name="java.lang:type=Memory"
attribute="NonHeapMemoryUsage"
resultproperty="NonHeapMemoryUsage"
/>
<jmx:get
name="java.lang:type=OperatingSystem"
attribute="OpenFileDescriptorCount"
resultproperty="OpenFileDescriptorCount"
/>
<jmx:get
name="java.lang:type=OperatingSystem"
attribute="MaxFileDescriptorCount"
resultproperty="MaxFileDescriptorCount"
/>
<jmx:get
name="Catalina:type=ThreadPool,name=${jmx.catalina.threadpool.name}"
attribute="currentThreadsBusy"
resultproperty="currentThreadsBusy"
/>
<jmx:get
name="Catalina:type=ThreadPool,name=${jmx.catalina.threadpool.name}"
attribute="currentThreadCount"
resultproperty="currentThreadCount"
/>
<jmx:get
name="Catalina:type=ThreadPool,name=${jmx.catalina.threadpool.name}"
attribute="maxThreads"
resultproperty="maxThreads"
/>
<echo>heap_memory_used: ${HeapMemoryUsage.used}
heap_memory_committed: ${HeapMemoryUsage.committed}
heap_memory_max: ${HeapMemoryUsage.max}
non_heap_memory_used: ${NonHeapMemoryUsage.used}
non_heap_memory_committed: ${NonHeapMemoryUsage.committed}
non_heap_memory_max: ${NonHeapMemoryUsage.max}
open_file_descriptors: ${OpenFileDescriptorCount}
max_file_descriptors: ${MaxFileDescriptorCount}
current_threads_busy: ${currentThreadsBusy}
current_thread_count: ${currentThreadCount}
max_threads: ${maxThreads}
</echo>
</target>
</project>
更新
一旦我设置了所需的值,我就可以在 Windows 64 位上使用 jconsole 监视某些内容。
### RMI service ports ###
alfresco.rmi.services.port=50500
monitor.rmi.service.port=50508
alfresco.rmi.services.external.host=172.16.0.49
然后ctl.sh
——-Dcom.sun.management.jmxremote=true -Djava.rmi.server.hostname=172.16.0.36
我的仙人掌服务器是172.16.0.15
,我的带有 jconsole 的 Windows 64 位是172.16.0.49
,我的露天服务器是172.16.0.36
. 如果我可以用 jconsole 做到这一点,我如何用 cacti 进行监控?
当我跑步时,ant -e -q -f jmx-monitor.xml
我得到以下信息
BUILD FAILED
/home/cacti/jmx-monitor.xml:22: Problem: failed to create task or type antlib:org.apache.catalina.ant.jmx:open
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.
No types or tasks have been defined in this namespace yet
This appears to be an antlib declaration.
Action: Check that the implementing library exists in one of:
-/usr/share/ant/lib
-/root/.ant/lib
-a directory added on the command line with the -lib argument
我试过使用端口 9012、50500、50508
在 jconsole 上,我使用以下命令service:jmx:rmi:///jndi/rmi://172.16.0.36:50500/alfresco/jmxrmi
,它与凭据一起使用webapps/alfresco/WEB-INF/classes/alfresco/alfresco-jmxrmi.*
我已更新setenv.sh
并添加
CATALINA_OPTS="-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=%9012%
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"
export CATALINA_OPTS
我可以使用 jconsole url 监控 tomcat:service:jmx:rmi:///jndi/rmi://172.16.0.36:9012/jmxrmi