Missing graphs and data in the monitoring plugin

Hi!

First, my current setup:

Elastix 2.4.0 bundled with Openfire 3.7.1

Monitoring plugin 1.3.2-beta1

1.6.0_24 Sun Microsystems Inc. – OpenJDK 64-Bit Server VM

I’m new to the world of openfire and I’ve hit a small snag with the monitoring plug in. All the graphs are shown as broken links.

In my search for solutions, I’ve stumbled on this : Enterprise Dashboard - Broken Images, No Stats - Openfire Support - Ignite Realtime Community Forums

It seems very similar to my issue but unfortunately, the template shown for the recreation of the “ofRRDs” table doesn’t work. I’ve narrowed it down to the IMAGE data type which seems to be invalid. It’s worth mentionning that the command mentionned seems to be for an “Enterprise” version of OF.

CREATE TABLE ofRRDs (

id NVARCHAR(100) NOT NULL,

updatedDate BIGINT NOT NULL,

bytes IMAGE NULL,

CONSTRAINT ofRRDs_pk PRIMARY KEY (id)

);

Replacing IMAGE with a valid data type(LongBlob) will allow the table to be created but it doesn’t change the broken links. I’m also afraid I’ve been quite daft and didn’t make a copy of the original ofRRDs table. I might restore a backup and redo the installation from scratch.

Things I’ve tried:

  • Updating the JDK using “yum install java-1.7.0-openjdk”. Strangely enough, Openfire still indicates that JDK 1.6.0 is used.
  • As mentionned, deleting and recreating the RRDs table.
  • yum install update

Things I will be trying :

  • Fixing “echo $JAVA_HOME” returning a blank line.
  • Upgrading Openfire to 3.8.1. This doesn’t seem to be recommended as I’m using OF as a bundled part of Elastix.

I appreciate any help or information on the matter.

Thanks!

Here are my Warning logs.

2013.09.20 22:22:59 org.jivesoftware.util.log.util.JettyLog - Error for /plugins/monitoring/graph

java.lang.NoClassDefFoundError: Could not initialize class org.jfree.chart.JFreeChart

at org.jfree.chart.ChartFactory.createXYAreaChart(ChartFactory.java:1422)

at org.jivesoftware.openfire.reporting.graph.GraphEngine.generateSparklineAreaChar t(GraphEngine.java:447)

at org.jivesoftware.openfire.reporting.graph.GraphEngine.generateSparklinesGraph(G raphEngine.java:169)

at org.jivesoftware.openfire.reporting.graph.GraphServlet.service(GraphServlet.jav a:125)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)

at org.jivesoftware.openfire.container.PluginServlet.handleServlet(PluginServlet.j ava:269)

at org.jivesoftware.openfire.container.PluginServlet.service(PluginServlet.java:10 9)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)

at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:530)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.ja va:1216)

at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:78)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.ja va:1187)

at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:164)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.ja va:1187)

at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:11 8)

at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:52)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.ja va:1187)

at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:425)

at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)

at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:494)

at org.eclipse.jetty.server.session.SessionHandler.handle(SessionHandler.java:182)

at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:93 3)

at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:362)

at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:867 )

at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)

at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandler Collection.java:245)

at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.jav a:126)

at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:113)

at org.eclipse.jetty.server.Server.handle(Server.java:334)

at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:559)

at org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConne ction.java:992)

Opening the link to the image gives me a similar error :

HTTP ERROR 500

Problem accessing /plugins/monitoring/graph. Reason:

Could not initialize class org.jfree.chart.JFreeChart

Caused by:

java.lang.NoClassDefFoundError: Could not initialize class org.jfree.chart.JFreeChart

at org.jfree.chart.ChartFactory.createXYBarChart(ChartFactory.java:1362)

at org.jivesoftware.openfire.reporting.graph.GraphEngine.generateSparklineBarGraph (GraphEngine.java:558)

at org.jivesoftware.openfire.reporting.graph.GraphEngine.generateSparklinesGraph(G raphEngine.java:166)

at org.jivesoftware.openfire.reporting.graph.GraphServlet.service(GraphServlet.jav a:125)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)

at org.jivesoftware.openfire.container.PluginServlet.handleServlet(PluginServlet.j ava:269)

at org.jivesoftware.openfire.container.PluginServlet.service(PluginServlet.java:10 9)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)

at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:530)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.ja va:1216)

at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:78)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.ja va:1187)

at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:164)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.ja va:1187)

at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:11 8)

at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:52)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.ja va:1187)

at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:425)

at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)

at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:494)

at org.eclipse.jetty.server.session.SessionHandler.handle(SessionHandler.java:182)

at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:93 3)

at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:362)

at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:867 )

at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)

at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandler Collection.java:245)

at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.jav a:126)

at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:113)

at org.eclipse.jetty.server.Server.handle(Server.java:334)

at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:559)

at org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConne ction.java:992)

at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:541)

at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:203)

at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:406)

at org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:4 62)

at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:436)

at java.lang.Thread.run(Unknown Source)

Finally, fixed. All thanks to http://community.igniterealtime.org/message/208723#208723

It seems that the Java version bundled in the 3.7.1 install breaks the graph with the latest monitoring plugin. I had to use 1.7.0_40 to get anything to display. Looking at the /etc/init.d/openfire, I assumed that if my JAVA_HOME variable was properly set up, it wouldn’t try to to install it’s own version of Java but it seems I was wrong. Even with a proper 1.7.0 install and a correct JAVA_HOME path, it used the 1.6.0 JDK.

I had to go and edit the /etc/sysconfig/openfire “JAVA_HOME” variable and point it to /usr/java/“yourversionofjava”

The next release of openfire will bundle java7.

The proper way to modify the JAVA_HOME is via /etc/sysconfig/openfire , not the init script.

daryl

Hi Daryl,

As mentionned, your method is what utilimately worked. My first try was wrongly assuming that the Openfire would detect my JAVA_HOME path and stop the 1.6.0 install. Unfortunately, something went wrong and it ignored my variable and went ahead with the default java install. It’s only then that I edited the JAVA_HOME inside /etc/sysconfig/openfire.