[IGN-5354] Metrics Dashboard has no metrics

Just updated to 8.1.13 and trying out the metrics dashboard, but it has no metrics! Do these need to be created? According to the docs it looks like there should be a bunch to select from…

Anything out of the ordinary in the Gateway log files?


I just looked into several of our 8.1.13 environments and they all have the metrics as expected, so there does seem to be some sort of issue in your environment. What version were you on before the upgrade? Is there any other area of your Gateway impacted?

Upgraded from 8.1.11. Ran on Installer on my EAM Controller, then second GW using EAM Upgrade, same results. No other issues with the GW so far, but still checking.

This looks like the culprit

java.lang.ArithmeticException: / by zero

at com.inductiveautomation.ignition.gateway.web.pages.status.serializers.MetricSnapshotSerializer.serialize(MetricSnapshotSerializer.java:42)

at com.inductiveautomation.ignition.gateway.web.pages.status.serializers.MetricSnapshotSerializer.serialize(MetricSnapshotSerializer.java:15)

at com.inductiveautomation.ignition.common.gson.internal.bind.TreeTypeAdapter.write(TreeTypeAdapter.java:81)

at com.inductiveautomation.ignition.common.gson.Gson.toJson(Gson.java:704)

at com.inductiveautomation.ignition.common.gson.Gson.toJsonTree(Gson.java:597)

at com.inductiveautomation.ignition.common.gson.Gson.toJsonTree(Gson.java:576)

at com.inductiveautomation.ignition.common.gson.internal.bind.TreeTypeAdapter$GsonContextImpl.serialize(TreeTypeAdapter.java:155)

at com.inductiveautomation.ignition.gateway.web.pages.status.serializers.MetricTimerSerializer.serialize(MetricTimerSerializer.java:30)

at com.inductiveautomation.ignition.gateway.web.pages.status.serializers.MetricTimerSerializer.serialize(MetricTimerSerializer.java:17)

at com.inductiveautomation.ignition.common.gson.internal.bind.TreeTypeAdapter.write(TreeTypeAdapter.java:81)

at com.inductiveautomation.ignition.common.gson.Gson.toJson(Gson.java:704)

at com.inductiveautomation.ignition.common.gson.Gson.toJsonTree(Gson.java:597)

at com.inductiveautomation.ignition.gateway.web.pages.status.routes.MetricsRoutes.lambda$getAvailableMetrics$0(MetricsRoutes.java:65)

at java.base/java.util.concurrent.ConcurrentHashMap.forEach(Unknown Source)

at java.base/java.util.Collections$UnmodifiableMap.forEach(Unknown Source)

at com.inductiveautomation.ignition.gateway.web.pages.status.routes.MetricsRoutes.getAvailableMetrics(MetricsRoutes.java:62)

at com.inductiveautomation.ignition.gateway.dataroutes.Route.service(Route.java:254)

at com.inductiveautomation.ignition.gateway.dataroutes.RouteGroupImpl.service(RouteGroupImpl.java:61)

at com.inductiveautomation.ignition.gateway.dataroutes.RouteGroupCollectionServlet.serviceInternal(RouteGroupCollectionServlet.java:59)

at com.inductiveautomation.ignition.gateway.dataroutes.AbstractRouteGroupServlet.service(AbstractRouteGroupServlet.java:38)

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

at org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1450)

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

at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626)

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

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

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

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

at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)

at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)

at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)

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

at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)

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

at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)

at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)

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

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

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

at com.inductiveautomation.catapult.handlers.RemoteHostNameLookupHandler.handle(RemoteHostNameLookupHandler.java:116)

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

at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:322)

at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:59)

at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)

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

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

at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388)

at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633)

at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380)

at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)

at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)

at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)

at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:555)

at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:410)

at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:164)

at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)

at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)

at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)

at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)

at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)

at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)

at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:386)

at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)

at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)


That’s a good bet. We’ll look into it.

I have the exact same issue. Also upgraded using EAM.

Is there any additional info I can provide for investigation?

No, thank you; we’re reasonably confident we found the cause from the previous stacktrace. There is a fix in place as part of the upcoming 8.1.14 release which is going through the RC process right now.

That’s a bummer. We are experiencing the same issue. We have 9 gateways all running 8.1.13. It is a large task to upgrade all of them, especially working around plant production. 1 of our gateways does get the list to populate, but the others do not. Weird. Is there any other work around?