...
- If you create the cache using a
CacheFactory
, you can call the factory'saddSubregistryaddMeterSubregistry()
method one or more times to add sub-registries to the cache it creates. See How to Add a Meter Registry when Creating a Cache, below. - If the cache is created for you as part of a server or locator, you can implement a custom
MetricsPublishingService
service that initializes your sub-registry and adds it to the cache. See How to Add a Meter Registry when Starting a Server or Locator,
Each mechanism is described in detail below.
How to Add a Meter Registry when Creating a Cache
CacheFactory
provides a method which adds the given to add a meter registry to the cache's composite registry for publishing cache metrics to external monitoring systems:
...
Code Block | ||||
---|---|---|---|---|
| ||||
MeterRegistry prometheusRegistry = new PrometheusMeterRegistry(...); // Create and configure your registry
Cache cache = new CacheFactory()
.addMeterSubregistry(prometheusRegistry)
.create(); |
Example adding You can call this method multiple times to add multiple meter sub-registries:
...
How to Add a Meter Registry when Starting a Server or Locator
To add a sub-registry to a server or locator:
- Implement a custom metrics publishing service and put it in a jar file.
- Configure the jar file to make your custom metrics publishing service discoverable.
- Add your jar to the classpath when you start a server or locator.
Each step is described in detail below.
Implement a Custom Metrics Publishing Service
The new interface org.apache.geode.metrics.MetricsPublishingService
provides an additional way to publish metrics generated by Micrometer meters in the cache meter registryGeode's Micrometer-based metrics. Geode discovers implementations of MetricsPublishingService
during cache creation, using the standard Java ServiceLoader
mechanism.
...
Code Block | ||||
---|---|---|---|---|
| ||||
package com.application; public class MyMetricsPublishingService implements MetricsPublishingService { private volatile MeterRegistry registry; private volatile MetricsSession session; @Override public void start(MetricsSession session) { this.session = session; registry = ... // configure your meter registry and start publishing // add your registry as a sub-registry to the cache's composite registry session.addSubregistry(registry); } @Override public void stop() { ... // clean up any resources used by your meter registry ... session.removeSubregistry(registry); } } |
Package this class into a jar file.
Configure Your jar File to Make Your Custom Metrics Publishing Service Discoverable
To make your service available for loadingdiscoverable, add the following provider-configuration file in the resource directory of your application Jarjar file:
Code Block | ||||
---|---|---|---|---|
| ||||
META-INF/services/org.apache.geode.metrics.MetricsPublishingService |
...
Note: The above APIs are considered experimental. Micrometer metrics is a new addition to Geode 1.9 and the API may change.
Add Your jar File to the classpath When You Start a Server or Locator
To add your metrics publishing service to a server or locator, add your jar file to the classpath when you start the server or locator via GFSH:
Code Block | ||||
---|---|---|---|---|
| ||||
gfsh>create locator --name my-locator --classpath=<path-to-my-jar-file>
gfsh>create server --name my-server --classpath=<path-to-my-jar-file> |
Alternatively, you can add your jar file to the extensions
directory in your Geode installation. Then GFSH will add your jar file to the classpath whenever it creates a server or locator.