以下有不同的解决方案,你可以用来监视正在运行的XWiki实例:
- 安装配置JavaMelody
- 使用Profiler。使用性能分析工具需要使用特别的启动脚本,比如YourKit,启动XWiki Enterprise的命令为start_xwiki_debug.sh 8080 profiler "/Applications/YourKit Java Profiler 7.0.11.app/bin/mac"
- 从XWiki Enterprise 2.4M2开始使用JMX技术来监测运行时XWiki实例,目前以下功能可供选择:
- 监控Velocity macro caches
- 监控JBoss Cache,用户、组等文件数据缓存
- (从XE 3.1开始)监控JGroups channel以及protocols(当启动集群功能)
- (从XE 3.1开始)监控Logback 日志配置
XWiki也有一个Monitor Plugin可以用来监控执行时间。但是这个插件将被弃用,并在未来通过JMX技术所取代。
JavaMelody
为XWiki安装JavaMelody请按以下步骤(详细请查看JavaMelody user guide用户指南):
- 下载最新的javamelody.jar和jrobin-x.jar 并放在WEB-INF/lib文件下
- 编辑web.xml并添加以下信息:
...
<filter>
<filter-name>monitoring</filter-name>
<filter-class>net.bull.javamelody.MonitoringFilter</filter-class>
</filter>
... other <filter>s from the default web.xml here ...
<filter-mapping>
<filter-name>monitoring</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
... other <filter-mapping>s from the default web.xml here ...
<listener>
<listener-class>net.bull.javamelody.SessionListener</listener-class>
</listener>
... other <listener>s from the default web.xml here ...
... - 编辑hibernate.cfg.xml并添加:
<property name="jdbc.factory_class">net.bull.javamelody.HibernateBatcherFactory</property>
然后重新启动XWiki并通过http://localhost:8080/xwiki/monitoring访问JavaMelody
JMX控制台
由于JMX是一个标准,你可以使用任何兼容JMX的控制台(大多数应用服务器提供了一个基于Web的JMX控制台)。JDK自带的监控分析工具JConsole。要启动它,只需执行JConsole的可执行文件。
请注意,开始从XWiki 6.3开始,如果您使用的是Standalone Distribution安装(打包好的zip其中捆绑jetty),你现在可以使用start_xwiki.sh -j(或 start_xwiki.sh --jmx)来监控/管理jetty实例(添加Jetty-specific MBeans):
XWiki监控缓存
XWiki可以使用不同的缓存实现。如下面所示
从XWiki 3.3开始,默认的实现是JBoss Infinispan
JBoss Infinispan
由于JBoss Infinispan原生支持JMX,我们可以直接利用这个特性
在此之前XWiki Enterprise 3.5 默认是不支持JMX。若要启用它,编辑WEB-INF/cache/infinispan/config.xml,并取消提及"jmx"两个地方的注释
以下显示了缓存列表:
如何清除一个给定的缓存中的所有项:
JBoss Cache
由于JBoss Cache原生支持JMX,我们可以直接利用这个特性。
以下显示在内存中运行的实例的所有JBoss缓存,展示缓存(例如对文件缓存)中的所有元素:
显示缓存统计数据 (用于文档缓存):
监控Velocity缓存
XWiki提供Velocity缓存内容的JMX视图。
如下:
监控JGroups
使用JConsole监控JGroups:
除了使用JGroups还可以通过日志观察:
- 更改日志级别,启用日志记录
- 从集群断开节点,并重新连接
监控Logback
使用JConsole展示怎么修改日志级别:
Tomcat JMX Proxy Servlet
JMX Proxy Servlet是用来获取和设置Tomcat内部组织的轻型代理。
下面是使用JMX Servlet Proxy来展示和设置JGroups Protocol Levels的一些有用的url:
- 展示TCPPING协议当前日志级别:http://localhost:8080/manager/jmxproxy?qry=jgroups:type=protocol,cluster=event,protocol=TCPPING
- 设置TCPPING协议日志级别为info:http://localhost:8080/manager/jmxproxy?set=jgroups:type=protocol,cluster=event,protocol=TCPPING&att=Level&val=info
更多
- 在一个Wiki页面编写Groovy脚本来访问JMX MBean。
- JMX Monitoring Application
- XInit