Metrics
It is possible to enable metrics on Blocks, which will log additional information on a regular basis as Blocks runs. This may occasionally be useful in troubleshootingsome extreme situations, but should normally not be left enabled on a production server.
Most of the details provided by these metrics are internal, and of little or no value to anyone but PIXILAB. So in general you should not configure metrics unless instructed and then provide the resulting log to PIXILAB for further analysis.
To enable metrics, add the following to Blocks' configuration file:
metrics: frequency: 1 minute reporters: - type: log logger: metrics includes: - "io.dropwizard.jetty.MutableServletContextHandler.get-requests" - "io.dropwizard.jetty.MutableServletContextHandler.post-requests" - org.eclipse.jetty.util.thread.QueuedThreadPool.dw.jobs - jvm.memory.total.used - pixi.cortex.backlog.now - pixi.cortex.backlog.peak - pixi.cortex.synapse - pixi.cortex.receptors - pixi.cortex.sharedSingleExecutorQueue - pixi.cortex.sharedMultiExecutorQueue - pixi.cortex.MobileSpot.connected.Mob1
Furthermore, you must enable the metrics logger under logging in the config file:
logging: level: WARN loggers: metrics: INFO # To actually log metrics data
Metrics Available
Specify which metrics to include under include in the metrics configuration section. The following Blocks-specific metrics are available:
- pixi.cortex.backlog.now Current backlog. A large or increasing value here may indicate server overload.
- pixi.cortex.backlog.peak Peak backlog since last server start.
- pixi.cortex.synapse Total number of synapses propcessed, as well as the name of any currently executing synapse.
- pixi.cortex.receptors Current number of neuron connections, indicating the complexity of your system.
- pixi.cortex.sharedSingleExecutorQueue Tasks waiting for the sharedSingleExecutor
- pixi.cortex.sharedMultiExecutorQueue Tasks waiting for the sharedMultiExecutor
- pixi.cortex.MobileSpot.connected.Mob1 Number of connected Visitor spots, sith the last segment(s) (here "Mob1")= being the dot-separated Spot path.
In addition to those, you can also use any metric provided by Blocks' infrastructure, such as those listed below. Refer to the respective infrastructure component for details.
ch.qos.logback.core.Appender.all ch.qos.logback.core.Appender.debug ch.qos.logback.core.Appender.error ch.qos.logback.core.Appender.info ch.qos.logback.core.Appender.trace ch.qos.logback.core.Appender.warn io.dropwizard.jetty.MutableServletContextHandler.1xx-responses io.dropwizard.jetty.MutableServletContextHandler.2xx-responses io.dropwizard.jetty.MutableServletContextHandler.3xx-responses io.dropwizard.jetty.MutableServletContextHandler.4xx-responses io.dropwizard.jetty.MutableServletContextHandler.5xx-responses io.dropwizard.jetty.MutableServletContextHandler.active-dispatches io.dropwizard.jetty.MutableServletContextHandler.active-requests io.dropwizard.jetty.MutableServletContextHandler.active-suspended io.dropwizard.jetty.MutableServletContextHandler.async-dispatches io.dropwizard.jetty.MutableServletContextHandler.async-timeouts io.dropwizard.jetty.MutableServletContextHandler.connect-requests io.dropwizard.jetty.MutableServletContextHandler.delete-requests io.dropwizard.jetty.MutableServletContextHandler.dispatches io.dropwizard.jetty.MutableServletContextHandler.get-requests io.dropwizard.jetty.MutableServletContextHandler.head-requests io.dropwizard.jetty.MutableServletContextHandler.move-requests io.dropwizard.jetty.MutableServletContextHandler.options-requests io.dropwizard.jetty.MutableServletContextHandler.other-requests io.dropwizard.jetty.MutableServletContextHandler.percent-4xx-15m io.dropwizard.jetty.MutableServletContextHandler.percent-4xx-1m io.dropwizard.jetty.MutableServletContextHandler.percent-4xx-5m io.dropwizard.jetty.MutableServletContextHandler.percent-5xx-15m io.dropwizard.jetty.MutableServletContextHandler.percent-5xx-1m io.dropwizard.jetty.MutableServletContextHandler.percent-5xx-5m io.dropwizard.jetty.MutableServletContextHandler.post-requests io.dropwizard.jetty.MutableServletContextHandler.put-requests io.dropwizard.jetty.MutableServletContextHandler.requests io.dropwizard.jetty.MutableServletContextHandler.trace-requests jersey-client-blocks.created jersey-client-blocks.running jersey-client-blocks.terminated jvm.attribute.name jvm.attribute.uptime jvm.attribute.vendor jvm.buffers.direct.capacity jvm.buffers.direct.count jvm.buffers.direct.used jvm.buffers.mapped.capacity jvm.buffers.mapped.count jvm.buffers.mapped.used jvm.classloader.loaded jvm.classloader.unloaded jvm.filedescriptor jvm.gc.G1-Old-Generation.count jvm.gc.G1-Old-Generation.time jvm.gc.G1-Young-Generation.count jvm.gc.G1-Young-Generation.time jvm.memory.heap.committed jvm.memory.heap.init jvm.memory.heap.max jvm.memory.heap.usage jvm.memory.heap.used jvm.memory.non-heap.committed jvm.memory.non-heap.init jvm.memory.non-heap.max jvm.memory.non-heap.usage jvm.memory.non-heap.used jvm.memory.pools.CodeHeap-'non-nmethods'.committed" jvm.memory.pools.CodeHeap-'non-nmethods'.init" jvm.memory.pools.CodeHeap-'non-nmethods'.max" jvm.memory.pools.CodeHeap-'non-nmethods'.usage" jvm.memory.pools.CodeHeap-'non-nmethods'.used" jvm.memory.pools.CodeHeap-'non-profiled-nmethods'.committed" jvm.memory.pools.CodeHeap-'non-profiled-nmethods'.init" jvm.memory.pools.CodeHeap-'non-profiled-nmethods'.max" jvm.memory.pools.CodeHeap-'non-profiled-nmethods'.usage" jvm.memory.pools.CodeHeap-'non-profiled-nmethods'.used" jvm.memory.pools.CodeHeap-'profiled-nmethods'.committed" jvm.memory.pools.CodeHeap-'profiled-nmethods'.init" jvm.memory.pools.CodeHeap-'profiled-nmethods'.max" jvm.memory.pools.CodeHeap-'profiled-nmethods'.usage" jvm.memory.pools.CodeHeap-'profiled-nmethods'.used" jvm.memory.pools.Compressed-Class-Space.committed jvm.memory.pools.Compressed-Class-Space.init jvm.memory.pools.Compressed-Class-Space.max jvm.memory.pools.Compressed-Class-Space.usage jvm.memory.pools.Compressed-Class-Space.used jvm.memory.pools.G1-Eden-Space.committed jvm.memory.pools.G1-Eden-Space.init jvm.memory.pools.G1-Eden-Space.max jvm.memory.pools.G1-Eden-Space.usage jvm.memory.pools.G1-Eden-Space.used-after-gc jvm.memory.pools.G1-Eden-Space.used jvm.memory.pools.G1-Old-Gen.committed jvm.memory.pools.G1-Old-Gen.init jvm.memory.pools.G1-Old-Gen.max jvm.memory.pools.G1-Old-Gen.usage jvm.memory.pools.G1-Old-Gen.used-after-gc jvm.memory.pools.G1-Old-Gen.used jvm.memory.pools.G1-Survivor-Space.committed jvm.memory.pools.G1-Survivor-Space.init jvm.memory.pools.G1-Survivor-Space.max jvm.memory.pools.G1-Survivor-Space.usage jvm.memory.pools.G1-Survivor-Space.used-after-gc jvm.memory.pools.G1-Survivor-Space.used jvm.memory.pools.Metaspace.committed jvm.memory.pools.Metaspace.init jvm.memory.pools.Metaspace.max jvm.memory.pools.Metaspace.usage jvm.memory.pools.Metaspace.used jvm.memory.total.committed jvm.memory.total.init jvm.memory.total.max jvm.memory.total.used jvm.threads.blocked.count jvm.threads.count jvm.threads.daemon.count jvm.threads.deadlock.count jvm.threads.deadlocks jvm.threads.new.count jvm.threads.peak.count jvm.threads.runnable.count jvm.threads.terminated.count jvm.threads.timed_waiting.count jvm.threads.total_started.count jvm.threads.waiting.count org.apache.hc.client5.http.io.HttpClientConnectionManager.PIXILAB_Blocks.available-connections org.apache.hc.client5.http.io.HttpClientConnectionManager.PIXILAB_Blocks.leased-connections org.apache.hc.client5.http.io.HttpClientConnectionManager.PIXILAB_Blocks.max-connections org.apache.hc.client5.http.io.HttpClientConnectionManager.PIXILAB_Blocks.pending-connections org.eclipse.jetty.server.HttpConnectionFactory.8080.connections org.eclipse.jetty.util.thread.QueuedThreadPool.dw-admin.jobs org.eclipse.jetty.util.thread.QueuedThreadPool.dw-admin.jobs-queue-utilization org.eclipse.jetty.util.thread.QueuedThreadPool.dw-admin.size org.eclipse.jetty.util.thread.QueuedThreadPool.dw-admin.utilization org.eclipse.jetty.util.thread.QueuedThreadPool.dw-admin.utilization-max org.eclipse.jetty.util.thread.QueuedThreadPool.dw.jobs org.eclipse.jetty.util.thread.QueuedThreadPool.dw.jobs-queue-utilization org.eclipse.jetty.util.thread.QueuedThreadPool.dw.size org.eclipse.jetty.util.thread.QueuedThreadPool.dw.utilization org.eclipse.jetty.util.thread.QueuedThreadPool.dw.utilization-max pixi.cortex.backlog.now pixi.cortex.backlog.peak pixi.cortex.synapse pixi.receptors TimeBoundHealthCheck-pool.created TimeBoundHealthCheck-pool.running TimeBoundHealthCheck-pool.terminated