...
A "sub-registry" can be any implementation of Micrometer's MeterRegistry
class. See the Micrometer documentation for descriptions of the available implementations, and instructions for how to configure them to send information to your monitoring system.
When you add a registry to Geode as a sub-registry to Geode, Geode adds all of its current meters to your sub-registry. It also adds any subsequently created meters and keeps your sub-registry informed of all future updates to the values of the meters.
...
How to Add a Meter Registry for Publishing
Geode offers two mechanisms to add a sub-meter registry for publishing. Which mechanism you choose depends on how you create the cache.
- 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 Adding a Sub-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 Adding a Sub-Registry to 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:
...
Note: The above APIs are considered experimental. Micrometer metrics is a new addition to Geode 1.9 and the API may change.
...
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.