docs/observability.md
This feature is available only in Redisson PRO
Redisson provides integration the most popular monitoring systems through Micrometer framework.
1. AppOptics
Required dependency:
io.micrometermicrometer-registry-appopticsClass: org.redisson.config.metrics.AppOpticsMeterRegistryProvider
Parameters:
uri - AppOptics host urihostTag - tag mapped to hostapiToken - AppOptics api tokennumThreads - number of threads used by scheduler (default is 2)step - update interval in ISO-8601 format (default is 1 min)batchSize - number of measurements sent per request (default is 500)2. Atlas
Required dependency:
io.micrometermicrometer-registry-atlasClass: org.redisson.config.metrics.AtlasMeterRegistryProvider
Parameters:
uri - Atlas host uriconfigUri - Atlas LWC endpoint uri to retrieve current subscriptionsevalUri - Atlas LWC endpoint uri to evaluate the data for a subscriptionnumThreads - number of threads used by scheduler (default is 4)step - update interval in ISO-8601 format (default is 1 min)batchSize - number of measurements sent per request (default is 10000)3. Azure
Required dependency:
io.micrometermicrometer-registry-azure-monitorClass: org.redisson.config.metrics.AzureMonitorMeterRegistryProvider
Parameters:
instrumentationKey - instrumentation keynumThreads - number of threads used by scheduler (default is 2)step - update interval in ISO-8601 format (default is 1 min)batchSize - number of measurements sent per request (default is 500)4. Amazon CloudWatch
Required dependency:
io.micrometermicrometer-registry-cloudwatchClass: org.redisson.config.metrics.CloudWatchMeterRegistryProvider
Parameters:
accessKey - AWS access keysecretKey - AWS secret access keynamespace - namespace valuenumThreads - number of threads used by scheduler (default is 2)step - update interval in ISO-8601 format (default is 1 min)batchSize - number of measurements sent per request (default is 500)5. Datadog
Required dependency:
io.micrometermicrometer-registry-datadogClass: org.redisson.config.metrics.DatadogMeterRegistryProvider
Parameters:
uri - Datadog host urihostTag - tag mapped to hostapiKey - api keynumThreads - number of threads used by scheduler (default is 2)step - update interval in ISO-8601 format (default is 1 min)batchSize - number of measurements sent per request (default is 500)6. Dropwizard
Class: org.redisson.config.metrics.DropwizardMeterRegistryProvider
Parameters:
sharedRegistryName - name used to store instance in SharedMetricRegistriesnameMapper - custom implementation of io.micrometer.core.instrument.util.HierarchicalNameMapper7. Dynatrace
Class: org.redisson.config.metrics.DynatraceMeterRegistryProvider
Parameters:
uri - Dynatrace host uriapiToken - api tokendeviceId - device idnumThreads - number of threads used by scheduler (default is 2)step - update interval in ISO-8601 format (default is 1 min)batchSize - number of measurements sent per request (default is 500)8. Elastic
Required dependency:
io.micrometermicrometer-registry-elasticClass: org.redisson.config.metrics.ElasticMeterRegistryProvider
Parameters:
host - Elasticsearch host uriuserName - user namepassword - passwordnumThreads - number of threads used by scheduler (default is 2)step - update interval in ISO-8601 format (default is 1 min)batchSize - number of measurements sent per request (default is 500)9. Ganglia
Required dependency:
io.micrometermicrometer-registry-gangliaClass: org.redisson.config.metrics.GangliaMeterRegistryProvider
Parameters:
host - Ganglia host addressport - Ganglia portnumThreads - number of threads used by scheduler (default is 2)step - update interval in ISO-8601 format (default is 1 min)batchSize - number of measurements sent per request (default is 500)10. Graphite
Required dependency:
io.micrometermicrometer-registry-graphiteClass: org.redisson.config.metrics.GraphiteMeterRegistryProvider
Parameters:
host - Graphite host addressport - Graphite port11. Humio
Required dependency:
io.micrometermicrometer-registry-humioClass: org.redisson.config.metrics.HumioMeterRegistryProvider
Parameters:
uri - Humio host urirepository - repository nameapiToken - api tokennumThreads - number of threads used by scheduler (default is 2)step - update interval in ISO-8601 format (default is 1 min)batchSize - number of measurements sent per request (default is 500)12. Influx
Required dependency:
io.micrometermicrometer-registry-influxClass: org.redisson.config.metrics.InfluxMeterRegistryProvider
Parameters:
uri - Influx host uridb - db nameuserName - user namepassword - passwordnumThreads - number of threads used by scheduler (default is 2)step - update interval in ISO-8601 format (default is 1 min)batchSize - number of measurements sent per request (default is 500)13. JMX
Required dependency:
io.micrometermicrometer-registry-jmxClass: org.redisson.config.metrics.JmxMeterRegistryProvider
Parameters:
domain - domain namesharedRegistryName - name used to store instance in SharedMetricRegistries14. Kairos
Required dependency:
io.micrometermicrometer-registry-kairosClass: org.redisson.config.metrics.KairosMeterRegistryProvider
Parameters:
uri - Kairos host uriuserName - user namepassword - passwordnumThreads - number of threads used by scheduler (default is 2)step - update interval in ISO-8601 format (default is 1 min)batchSize - number of measurements sent per request (default is 500)15. NewRelic
Required dependency:
io.micrometermicrometer-registry-new-relicClass: org.redisson.config.metrics.NewRelicMeterRegistryProvider
Parameters:
uri - NewRelic host uriapiKey - api keyaccountId - account idnumThreads - number of threads used by scheduler (default is 2)step - update interval in ISO-8601 format (default is 1 min)batchSize - number of measurements sent per request (default is 500)16. Prometheus
Required dependency:
io.micrometermicrometer-registry-prometheusClass: org.redisson.config.metrics.MeterRegistryWrapper
Parameters:
registry - instance of PrometheusMeterRegistry object17. SingnalFx
Required dependency:
io.micrometermicrometer-registry-signalfxClass: org.redisson.config.metrics.SingnalFxMeterRegistryProvider
Parameters:
apiHost - SingnalFx host uriaccessToken - access tokensource - application instance idnumThreads - number of threads used by scheduler (default is 2)step - update interval in ISO-8601 format (default is 10 secs)batchSize - number of measurements sent per request (default is 500)18. Stackdriver
Required dependency:
io.micrometermicrometer-registry-stackdriverClass: org.redisson.config.metrics.StackdriverMeterRegistryProvider
Parameters:
projectId - project idnumThreads - number of threads used by scheduler (default is 2)step - update interval in ISO-8601 format (default is 1 min)batchSize - number of measurements sent per request (default is 500)19. Statsd
Required dependency:
io.micrometermicrometer-registry-statsdClass: org.redisson.config.metrics.StatsdMeterRegistryProvider
Parameters:
host - Statsd host addressport - Statsd portflavor - metrics format ETSY/DATADOG/TELEGRAF/SYSDIG20. Wavefront
Required dependency:
io.micrometermicrometer-registry-wavefrontClass: org.redisson.config.metrics.WavefrontMeterRegistryProvider
Parameters:
uri - Wavefront host urisource - application instance idapiToken - api tokennumThreads - number of threads used by scheduler (default is 2)step - update interval in ISO-8601 format (default is 1 min)batchSize - number of measurements sent per request (default is 500)JMX config
Config config = ... // Redisson PRO config object
JmxMeterRegistryProvider provider = new JmxMeterRegistryProvider();
provider.setDomain("appStats");
config.setMeterRegistryProvider(provider);
Prometheus config
Config config = ... // Redisson PRO config object
PrometheusMeterRegistry registry = ...
config.setMeterRegistryProvider(new MeterRegistryWrapper(registry));
Dynatrace config
Config config = ... // Redisson PRO config object
DynatraceMeterRegistryProvider p = new DynatraceMeterRegistryProvider();
p.setApiToken("Hg3M0iadsQC2Pcjk6QIW0g");
p.setUri("https://qtd9012301.live.dynatrace.com/");
p.setDeviceId("myHost");
config.setMeterRegistryProvider(p);
Influx config
Config config = ... // Redisson PRO config object
InfluxMeterRegistryProvider provider = new InfluxMeterRegistryProvider();
provider.setUri("http://localhost:8086/");
provider.setDb("myinfluxdb");
provider.setUserName("admin");
provider.setPassword("admin");
config.setMeterRegistryProvider(provider);
YAML config is appended to Redisson config.
JMX config
meterRegistryProvider: !<org.redisson.config.metrics.JmxMeterRegistryProvider>
domain: "appStats"
Dynatrace config
meterRegistryProvider: !<org.redisson.config.metrics.DynatraceMeterRegistryProvider>
apiToken: "Hg3M0iadsQC2Pcjk6QIW0g"
uri: "https://qtd9012301.live.dynatrace.com"
deviceId: "myHost"
Influx config
meterRegistryProvider: !<org.redisson.config.metrics.InfluxMeterRegistryProvider>
uri: "http://localhost:8086/"
db: "myinfluxdb"
userName: "admin"
password: "admin"
The following metrics are available:
Configuration metrics
redisson.license.expiration-year - A Gauge of the number of the license expiration yearredisson.license.expiration-month - A Gauge of the number of the license expiration monthredisson.license.expiration-day - A Gauge of the number of the license expiration dayredisson.license.active-instances - A Gauge of the number of active Redisson PRO clientsredisson.executor-pool-size - A Gauge of the number of executor threads pool sizeredisson.netty-pool-size - A Gauge of the number of netty threads pool sizeredisson.netty-tasks-pending - A Gauge of pending tasks in Netty event executorMetrics per Redis or Valkey node
Base name: redisson.redis.<host>:<port>
status - A Gauge of the number value of Redis or Valkey node status [1 = connected, -1 = disconnected]
type - A Gauge of the number value of Redis or Valkey node type [1 = MASTER, 2 = SLAVE, 3 = SENTINEL]
total-response-bytes - A Meter of the total amount of bytes received from Redis or Valkey
response-bytes - A Histogram of the number of bytes received from Redis or Valkey
total-request-bytes - A Meter of the total amount of bytes sent to Redis or Valkey
request-bytes - A Histogram of the number of bytes sent to Redis or Valkey
connections.active - A Counter of the number of busy connections
connections.free - A Counter of the number of free connections
connections.max-pool-size - A Counter of the number of maximum connection pool size
connections.reconnected - A Counter of the number of reconnected connections
connections.total - A Counter of the number of total connections in pool
publish-subscribe-connections.active - A Counter of the number of active publish subscribe connections
publish-subscribe-connections.free - A Counter of the number of free publish subscribe connections
publish-subscribe-connections.max-pool-size - A Counter of the number of maximum publish subscribe connection pool size
publish-subscribe-connections.total - A Counter of the number of total publish subscribe connections in pool
operations.total - A Meter of the number of total executed operations
operations.total-failed - A Meter of the number of total failed operations
operations.total-successful - A Meter of the number of total successful operations
operations.latency - A Histogram of the number of operations latency in milliseconds
operations.retry-attempt - A Histogram of the number of operations retry attempts
Metrics per RRemoteService object
Base name: redisson.remote-service.<name>
invocations.total - A Meter of the number of total executed invocationsinvocations.total-failed - A Meter of the number of total failed to execute invocationsinvocations.total-successful - A Meter of the number of total successful to execute invocationsMetrics per RExecutorService object
Base name: redisson.executor-service.<name>
tasks.submitted - A Meter of the number of submitted tasks
tasks.executed - A Meter of the number of executed tasks
workers.active - A Gauge of the number of busy task workers
workers.free - A Gauge of the number of free task workers
workers.total - A Gauge of the number of total task workers
workers.tasks-executed.total - A Meter of the number of total executed tasks by workers
workers.tasks-executed.total-failed - A Meter of the number of total failed to execute tasks by workers
workers.tasks-executed.total-successful - A Meter of the number of total successful to execute tasks by workers
Metrics per RMap object
Base name: redisson.map.<name>
hits - A Meter of the number of get requests for data contained in the cachemisses - A Meter of the number of get requests for data not contained in the cacheputs - A Meter of the number of puts to the cacheremovals - A Meter of the number of removals from the cacheMetrics per RMapCache object
Base name: redisson.map-cache.<name>
hits - A Meter of the number of get requests for data contained in the cachemisses - A Meter of the number of get requests for data not contained in the cacheputs - A Meter of the number of puts to the cacheremovals - A Meter of the number of removals from the cacheMetrics per RMapCacheV2 object
Base name: redisson.map-cache-v2.<name>
hits - A Meter of the number of get requests for data contained in the cachemisses - A Meter of the number of get requests for data not contained in the cacheputs - A Meter of the number of puts to the cacheremovals - A Meter of the number of removals from the cacheMetrics per RMapCacheNative object
Base name: redisson.map-cache-native.<name>
hits - A Meter of the number of get requests for data contained in the cachemisses - A Meter of the number of get requests for data not contained in the cacheputs - A Meter of the number of puts to the cacheremovals - A Meter of the number of removals from the cacheMetrics per RClusteredMapCache object
Base name: redisson.clustered-map-cache.<name>
hits - A Meter of the number of get requests for data contained in the cachemisses - A Meter of the number of get requests for data not contained in the cacheputs - A Meter of the number of puts to the cacheremovals - A Meter of the number of removals from the cacheMetrics per RClusteredMapCacheNative object
Base name: redisson.clustered-map-cache-native.<name>
hits - A Meter of the number of get requests for data contained in the cachemisses - A Meter of the number of get requests for data not contained in the cacheputs - A Meter of the number of puts to the cacheremovals - A Meter of the number of removals from the cacheMetrics per RLocalCachedMap object
Base name: redisson.local-cached-map.<name>
hits - A Meter of the number of get requests for data contained in the cache
misses - A Meter of the number of get requests for data not contained in the cache
puts - A Meter of the number of puts to the cache
removals - A Meter of the number of removals from the cache
local-cache.hits - A Meter of the number of get requests for data contained in the local cache
local-cache.misses - A Meter of the number of get requests for data contained in the local cache
local-cache.evictions - A Meter of the number of evictions for data contained in the local cache
local-cache.size - A Gauge of the number of local cache size
Metrics per RClusteredLocalCachedMap object
Base name: redisson.clustered-local-cached-map.<name>
hits - A Meter of the number of get requests for data contained in the cache
misses - A Meter of the number of get requests for data not contained in the cache
puts - A Meter of the number of puts to the cache
removals - A Meter of the number of removals from the cache
local-cache.hits - A Meter of the number of get requests for data contained in the local cache
local-cache.misses - A Meter of the number of get requests for data contained in the local cache
local-cache.evictions - A Meter of the number of evictions for data contained in the local cache
local-cache.size - A Gauge of the number of local cache size
Metrics per RLocalCachedMapCache object
Base name: redisson.local-cached-map-cache.<name>
hits - A Meter of the number of get requests for data contained in the cache
misses - A Meter of the number of get requests for data not contained in the cache
puts - A Meter of the number of puts to the cache
removals - A Meter of the number of removals from the cache
local-cache.hits - A Meter of the number of get requests for data contained in the local cache
local-cache.misses - A Meter of the number of get requests for data contained in the local cache
local-cache.evictions - A Meter of the number of evictions for data contained in the local cache
local-cache.size - A Gauge of the number of local cache size
Metrics per RLocalCachedMapCacheV2 object
Base name: redisson.local-cached-map-cache-v2.<name>
hits - A Meter of the number of get requests for data contained in the cache
misses - A Meter of the number of get requests for data not contained in the cache
puts - A Meter of the number of puts to the cache
removals - A Meter of the number of removals from the cache
local-cache.hits - A Meter of the number of get requests for data contained in the local cache
local-cache.misses - A Meter of the number of get requests for data contained in the local cache
local-cache.evictions - A Meter of the number of evictions for data contained in the local cache
local-cache.size - A Gauge of the number of local cache size
Metrics per RLocalCachedMapCacheNative object
Base name: redisson.local-cached-map-cache-native.<name>
hits - A Meter of the number of get requests for data contained in the cache
misses - A Meter of the number of get requests for data not contained in the cache
puts - A Meter of the number of puts to the cache
removals - A Meter of the number of removals from the cache
local-cache.hits - A Meter of the number of get requests for data contained in the local cache
local-cache.misses - A Meter of the number of get requests for data contained in the local cache
local-cache.evictions - A Meter of the number of evictions for data contained in the local cache
local-cache.size - A Gauge of the number of local cache size
Metrics per RClusteredLocalCachedMapCache object
Base name: redisson.clustered-local-cached-map-cache.<name>
hits - A Meter of the number of get requests for data contained in the cache
misses - A Meter of the number of get requests for data not contained in the cache
puts - A Meter of the number of puts to the cache
removals - A Meter of the number of removals from the cache
local-cache.hits - A Meter of the number of get requests for data contained in the local cache
local-cache.misses - A Meter of the number of get requests for data contained in the local cache
local-cache.evictions - A Meter of the number of evictions for data contained in the local cache
local-cache.size - A Gauge of the number of the local cache size
Metrics per RJsonStore object
Base name: redisson.jsonstore.<name>
hits - A Meter of the number of get requests for data contained in the cachemisses - A Meter of the number of get requests for data not contained in the cacheputs - A Meter of the number of puts to the cacheremovals - A Meter of the number of removals from the cacheMetrics per RLocalCachedJsonStore object
Base name: redisson.local-cached-jsonstore.<name>
hits - A Meter of the number of get requests for data contained in the cache
misses - A Meter of the number of get requests for data not contained in the cache
puts - A Meter of the number of puts to the cache
removals - A Meter of the number of removals from the cache
local-cache.hits - A Meter of the number of get requests for data contained in the local cache
local-cache.misses - A Meter of the number of get requests for data contained in the local cache
local-cache.evictions - A Meter of the number of evictions for data contained in the local cache
local-cache.size - A Gauge of the number of the local cache size
Metrics per RTopic object
Base name: redisson.topic.<name>
messages-sent - A Meter of the number of messages sent for the topicmessages-received - A Meter of the number of messages received for the topicMetrics per RClusteredTopic object
Base name: redisson.clustered-topic.<name>
messages-sent - A Meter of the number of messages sent for the topicmessages-received - A Meter of the number of messages received for the topicMetrics per RReliableTopic object
Base name: redisson.reliable-topic.<name>
messages-sent - A Meter of the number of messages sent for the topicmessages-received - A Meter of the number of messages received for the topicMetrics per RClusteredReliableTopic object
Base name: redisson.clustered-reliable-topic.<name>
messages-sent - A Meter of the number of messages sent for the topicmessages-received - A Meter of the number of messages received for the topicMetrics per RShardedTopic object
Base name: redisson.sharded-topic.<name>
messages-sent - A Meter of the number of messages sent for the topicmessages-received - A Meter of the number of messages received for the topicMetrics per RBucket object
Base name: redisson.bucket.<name>
gets - A Meter of the number of get operations executed for the objectsets - A Meter of the number of set operations executed for the objectMetrics per JCache object
Base name: redisson.JCache.<name>
cache.evictions - A Meter of the number of evictions for data contained in JCachecache.puts - A Meter of the number of puts to the JCachehit.cache.gets - A Meter of the number of get requests for data contained in JCachemiss.cache.gets - A Meter of the number of get requests for data contained in JCacheThis feature is available only in Redisson PRO
Redisson provides integration with the most popular tracer libraries through Micrometer Observation API and Micrometer Tracing framework. This feature allows to gather extra statistics about invoked Redisson methods: name, arguments, invocation path, duration and frequency.
Configuration metrics per Tracing event.
invocation - Redisson method with arguments. Arguments are included only if includeArgs set trueobject_name - Redisson object nameaddress - Redis or Valkey server addressusername - username used to connect to Redis or Valkey serverConfiguration example:
OkHttpSender sender = OkHttpSender.create("http://localhost:9411/api/v2/spans");
AsyncZipkinSpanHandler zipkinSpanHandler = AsyncZipkinSpanHandler.create(sender);
StrictCurrentTraceContext braveCurrentTraceContext = StrictCurrentTraceContext.create();
Tracing tracing = Tracing.newBuilder()
.localServiceName("myservice")
.currentTraceContext(braveCurrentTraceContext)
.sampler(Sampler.ALWAYS_SAMPLE)
.addSpanHandler(zipkinSpanHandler)
.build();
Config config = ... // Redisson PRO config object
config.setTracingProvider(new BraveTracingProvider(tracing));
Required dependencies:
io.zipkin.reporter2, artifactId: zipkin-sender-okhttp3io.zipkin.reporter2, artifactId: zipkin-reporter-braveConfiguration example:
SpanExporter spanExporter = new ZipkinSpanExporterBuilder()
.setSender(URLConnectionSender.create("http://localhost:9411/api/v2/spans"))
.build();
SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
.addSpanProcessor(BatchSpanProcessor.builder(spanExporter).build())
.build();
OpenTelemetrySdk openTelemetrySdk = OpenTelemetrySdk.builder()
.setPropagators(ContextPropagators.create(B3Propagator.injectingSingleHeader()))
.setTracerProvider(sdkTracerProvider)
.build();
io.opentelemetry.api.trace.Tracer otelTracer = openTelemetrySdk.getTracerProvider().get("io.micrometer.micrometer-tracing");
Config config = ... // Redisson PRO config object
config.setTracingProvider(new OtelTracingProvider(otelTracer, openTelemetrySdk.getPropagators()));
Required dependencies:
io.opentelemetry, artifactId: opentelemetry-exporter-zipkinio.zipkin.reporter2, artifactId: zipkin-sender-urlconnection