blob: 7e7ea1db2c56d84d364a338fb42a695c53286996 [file]
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Java Driver for Apache Cassandra® Documentation">
<link rel="canonical" href="https://apache.github.io/cassandra-java-driver/core/metrics/">
<link rel="prev" href="../speculative_execution/">
<link rel="next" href="../logging/">
<link rel="icon" href="../../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.17">
<title>Metrics - Java Driver for Apache Cassandra</title>
<link rel="stylesheet" href="../../assets/stylesheets/main.7e37652d.min.css">
<link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="blue" data-md-color-accent="blue">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#metrics" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="../.." title="Java Driver for Apache Cassandra" class="md-header__button md-logo" aria-label="Java Driver for Apache Cassandra" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Java Driver for Apache Cassandra
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Metrics
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="blue" data-md-color-accent="blue" aria-hidden="true" type="radio" name="__palette" id="__palette_0">
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg>
</a>
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/apache/cassandra-java-driver" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
</div>
<div class="md-source__repository">
apache/cassandra-java-driver
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
<div class="md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href="../../HOME-README/" class="md-tabs__link">
Home
</a>
</li>
<li class="md-tabs__item md-tabs__item--active">
<a href="../.." class="md-tabs__link">
Manual
</a>
</li>
<li class="md-tabs__item">
<a href="../../api/" class="md-tabs__link">
API References
</a>
</li>
<li class="md-tabs__item">
<a href="../../faq-README/" class="md-tabs__link">
FAQ
</a>
</li>
<li class="md-tabs__item">
<a href="../../changelog-README/" class="md-tabs__link">
Changelog
</a>
</li>
<li class="md-tabs__item">
<a href="../../upgrade-README/" class="md-tabs__link">
Upgrade Guide
</a>
</li>
</ul>
</div>
</nav>
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../.." title="Java Driver for Apache Cassandra" class="md-nav__button md-logo" aria-label="Java Driver for Apache Cassandra" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
</a>
Java Driver for Apache Cassandra
</label>
<div class="md-nav__source">
<a href="https://github.com/apache/cassandra-java-driver" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
</div>
<div class="md-source__repository">
apache/cassandra-java-driver
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../HOME-README/" class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" checked>
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="">
<span class="md-ellipsis">
Manual
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
Manual
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../.." class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../api_conventions/" class="md-nav__link">
<span class="md-ellipsis">
API Conventions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../case_sensitivity/" class="md-nav__link">
<span class="md-ellipsis">
Case Sensitivity
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../cloud/" class="md-nav__link">
<span class="md-ellipsis">
Cloud
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_5" checked>
<label class="md-nav__link" for="__nav_2_5" id="__nav_2_5_label" tabindex="">
<span class="md-ellipsis">
Core
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_5_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_2_5">
<span class="md-nav__icon md-icon"></span>
Core
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../integration/" class="md-nav__link">
<span class="md-ellipsis">
Integration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../configuration/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../authentication/" class="md-nav__link">
<span class="md-ellipsis">
Authentication
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../ssl/" class="md-nav__link">
<span class="md-ellipsis">
SSL
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../load_balancing/" class="md-nav__link">
<span class="md-ellipsis">
Load Balancing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../pooling/" class="md-nav__link">
<span class="md-ellipsis">
Pooling
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../reconnection/" class="md-nav__link">
<span class="md-ellipsis">
Reconnection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../retries/" class="md-nav__link">
<span class="md-ellipsis">
Retries
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../speculative_execution/" class="md-nav__link">
<span class="md-ellipsis">
Speculative Execution
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Metrics
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Metrics
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#metrics" class="md-nav__link">
<span class="md-ellipsis">
Metrics
</span>
</a>
<nav class="md-nav" aria-label="Metrics">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#quick-overview" class="md-nav__link">
<span class="md-ellipsis">
Quick overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#selecting-a-metrics-library" class="md-nav__link">
<span class="md-ellipsis">
Selecting a Metrics Library
</span>
</a>
<nav class="md-nav" aria-label="Selecting a Metrics Library">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#dropwizard-metrics" class="md-nav__link">
<span class="md-ellipsis">
Dropwizard Metrics
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#micrometer" class="md-nav__link">
<span class="md-ellipsis">
Micrometer
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#microprofile-metrics" class="md-nav__link">
<span class="md-ellipsis">
MicroProfile Metrics
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#other-metrics-libraries" class="md-nav__link">
<span class="md-ellipsis">
Other Metrics libraries
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#enabling-specific-driver-metrics" class="md-nav__link">
<span class="md-ellipsis">
Enabling specific driver metrics
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#selecting-a-metric-identifier-style" class="md-nav__link">
<span class="md-ellipsis">
Selecting a metric identifier style
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#using-an-external-metric-registry" class="md-nav__link">
<span class="md-ellipsis">
Using an external metric registry
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#programmatic-access-to-driver-metrics" class="md-nav__link">
<span class="md-ellipsis">
Programmatic access to driver metrics
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#exposing-driver-metrics-with-jmx" class="md-nav__link">
<span class="md-ellipsis">
Exposing driver metrics with JMX
</span>
</a>
<nav class="md-nav" aria-label="Exposing driver metrics with JMX">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#dropwizard-metrics_1" class="md-nav__link">
<span class="md-ellipsis">
Dropwizard Metrics
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#exporting-metrics-with-other-protocols" class="md-nav__link">
<span class="md-ellipsis">
Exporting metrics with other protocols
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../logging/" class="md-nav__link">
<span class="md-ellipsis">
Logging
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_5_13" >
<label class="md-nav__link" for="__nav_2_5_13" id="__nav_2_5_13_label" tabindex="0">
<span class="md-ellipsis">
Statements
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_5_13_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_5_13">
<span class="md-nav__icon md-icon"></span>
Statements
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../statements/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../statements/batch/" class="md-nav__link">
<span class="md-ellipsis">
Batch
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../statements/per_query_keyspace/" class="md-nav__link">
<span class="md-ellipsis">
Per Query Keyspace
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../statements/prepared/" class="md-nav__link">
<span class="md-ellipsis">
Prepared
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../statements/simple/" class="md-nav__link">
<span class="md-ellipsis">
Simple
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../paging/" class="md-nav__link">
<span class="md-ellipsis">
Paging
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../async/" class="md-nav__link">
<span class="md-ellipsis">
Async Programming
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../reactive/" class="md-nav__link">
<span class="md-ellipsis">
Reactive Streams
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../custom_codecs/" class="md-nav__link">
<span class="md-ellipsis">
Custom Codecs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../temporal_types/" class="md-nav__link">
<span class="md-ellipsis">
Temporal Types
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../tuples/" class="md-nav__link">
<span class="md-ellipsis">
Tuples
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../udts/" class="md-nav__link">
<span class="md-ellipsis">
UDTs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../compression/" class="md-nav__link">
<span class="md-ellipsis">
Compression
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../address_resolution/" class="md-nav__link">
<span class="md-ellipsis">
Address Resolution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../request_tracker/" class="md-nav__link">
<span class="md-ellipsis">
Request Tracker
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../throttling/" class="md-nav__link">
<span class="md-ellipsis">
Throttling
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../tracing/" class="md-nav__link">
<span class="md-ellipsis">
Tracing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../performance/" class="md-nav__link">
<span class="md-ellipsis">
Performance
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_5_27" >
<label class="md-nav__link" for="__nav_2_5_27" id="__nav_2_5_27_label" tabindex="0">
<span class="md-ellipsis">
Metadata
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_5_27_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_5_27">
<span class="md-nav__icon md-icon"></span>
Metadata
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../metadata/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../metadata/node/" class="md-nav__link">
<span class="md-ellipsis">
Node
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../metadata/schema/" class="md-nav__link">
<span class="md-ellipsis">
Schema
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../metadata/token/" class="md-nav__link">
<span class="md-ellipsis">
Token
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../control_connection/" class="md-nav__link">
<span class="md-ellipsis">
Control Connection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../native_protocol/" class="md-nav__link">
<span class="md-ellipsis">
Native Protocol
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../non_blocking/" class="md-nav__link">
<span class="md-ellipsis">
Non-blocking
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../query_timestamps/" class="md-nav__link">
<span class="md-ellipsis">
Query Timestamps
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../idempotence/" class="md-nav__link">
<span class="md-ellipsis">
Idempotence
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../detachable_types/" class="md-nav__link">
<span class="md-ellipsis">
Detachable Types
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_5_34" >
<label class="md-nav__link" for="__nav_2_5_34" id="__nav_2_5_34_label" tabindex="0">
<span class="md-ellipsis">
DSE
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_5_34_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_5_34">
<span class="md-nav__icon md-icon"></span>
DSE
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../dse/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../dse/geotypes/" class="md-nav__link">
<span class="md-ellipsis">
Geotypes
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_5_34_3" >
<label class="md-nav__link" for="__nav_2_5_34_3" id="__nav_2_5_34_3_label" tabindex="0">
<span class="md-ellipsis">
Graph
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_5_34_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_5_34_3">
<span class="md-nav__icon md-icon"></span>
Graph
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../dse/graph/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_5_34_3_2" >
<label class="md-nav__link" for="__nav_2_5_34_3_2" id="__nav_2_5_34_3_2_label" tabindex="0">
<span class="md-ellipsis">
Fluent
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="5" aria-labelledby="__nav_2_5_34_3_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_5_34_3_2">
<span class="md-nav__icon md-icon"></span>
Fluent
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../dse/graph/fluent/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../dse/graph/fluent/explicit/" class="md-nav__link">
<span class="md-ellipsis">
Explicit
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../dse/graph/fluent/implicit/" class="md-nav__link">
<span class="md-ellipsis">
Implicit
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../dse/graph/options/" class="md-nav__link">
<span class="md-ellipsis">
Options
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../dse/graph/results/" class="md-nav__link">
<span class="md-ellipsis">
Results
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../dse/graph/script/" class="md-nav__link">
<span class="md-ellipsis">
Script
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../graalvm/" class="md-nav__link">
<span class="md-ellipsis">
GraalVM
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../shaded_jar/" class="md-nav__link">
<span class="md-ellipsis">
Shaded JAR
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../bom/" class="md-nav__link">
<span class="md-ellipsis">
BOM
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_6" >
<label class="md-nav__link" for="__nav_2_6" id="__nav_2_6_label" tabindex="">
<span class="md-ellipsis">
Query Builder
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_6">
<span class="md-nav__icon md-icon"></span>
Query Builder
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../query_builder/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../query_builder/select/" class="md-nav__link">
<span class="md-ellipsis">
Select
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../query_builder/insert/" class="md-nav__link">
<span class="md-ellipsis">
Insert
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../query_builder/update/" class="md-nav__link">
<span class="md-ellipsis">
Update
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../query_builder/delete/" class="md-nav__link">
<span class="md-ellipsis">
Delete
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_6_6" >
<label class="md-nav__link" for="__nav_2_6_6" id="__nav_2_6_6_label" tabindex="0">
<span class="md-ellipsis">
Schema
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_6_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_6_6">
<span class="md-nav__icon md-icon"></span>
Schema
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../query_builder/schema/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../query_builder/schema/aggregate/" class="md-nav__link">
<span class="md-ellipsis">
Aggregate
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../query_builder/schema/function/" class="md-nav__link">
<span class="md-ellipsis">
Function
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../query_builder/schema/index/" class="md-nav__link">
<span class="md-ellipsis">
Index
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../query_builder/schema/keyspace/" class="md-nav__link">
<span class="md-ellipsis">
Keyspace
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../query_builder/schema/materialized_view/" class="md-nav__link">
<span class="md-ellipsis">
Materialized View
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../query_builder/schema/table/" class="md-nav__link">
<span class="md-ellipsis">
Table
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../query_builder/schema/type/" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../query_builder/truncate/" class="md-nav__link">
<span class="md-ellipsis">
Truncate
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../query_builder/condition/" class="md-nav__link">
<span class="md-ellipsis">
Condition
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../query_builder/relation/" class="md-nav__link">
<span class="md-ellipsis">
Relation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../query_builder/term/" class="md-nav__link">
<span class="md-ellipsis">
Term
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../query_builder/idempotence/" class="md-nav__link">
<span class="md-ellipsis">
Idempotence
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_7" >
<label class="md-nav__link" for="__nav_2_7" id="__nav_2_7_label" tabindex="">
<span class="md-ellipsis">
Mapper
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_7">
<span class="md-nav__icon md-icon"></span>
Mapper
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../mapper/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../mapper/entities/" class="md-nav__link">
<span class="md-ellipsis">
Entities
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_7_3" >
<label class="md-nav__link" for="__nav_2_7_3" id="__nav_2_7_3_label" tabindex="0">
<span class="md-ellipsis">
DAOs
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_7_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_7_3">
<span class="md-nav__icon md-icon"></span>
DAOs
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../mapper/daos/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../mapper/daos/custom_types/" class="md-nav__link">
<span class="md-ellipsis">
Custom Types
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../mapper/daos/delete/" class="md-nav__link">
<span class="md-ellipsis">
Delete
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../mapper/daos/getentity/" class="md-nav__link">
<span class="md-ellipsis">
Get Entity
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../mapper/daos/increment/" class="md-nav__link">
<span class="md-ellipsis">
Increment
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../mapper/daos/insert/" class="md-nav__link">
<span class="md-ellipsis">
Insert
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../mapper/daos/null_saving/" class="md-nav__link">
<span class="md-ellipsis">
Null Saving
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../mapper/daos/query/" class="md-nav__link">
<span class="md-ellipsis">
Query
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../mapper/daos/queryprovider/" class="md-nav__link">
<span class="md-ellipsis">
Query Provider
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../mapper/daos/select/" class="md-nav__link">
<span class="md-ellipsis">
Select
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../mapper/daos/setentity/" class="md-nav__link">
<span class="md-ellipsis">
Set Entity
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../mapper/daos/statement_attributes/" class="md-nav__link">
<span class="md-ellipsis">
Statement Attributes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../mapper/daos/update/" class="md-nav__link">
<span class="md-ellipsis">
Update
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../mapper/mapper/" class="md-nav__link">
<span class="md-ellipsis">
Mapper
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_7_5" >
<label class="md-nav__link" for="__nav_2_7_5" id="__nav_2_7_5_label" tabindex="0">
<span class="md-ellipsis">
Configuration
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_7_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_7_5">
<span class="md-nav__icon md-icon"></span>
Configuration
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../mapper/config/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../mapper/config/kotlin/" class="md-nav__link">
<span class="md-ellipsis">
Kotlin
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../mapper/config/lombok/" class="md-nav__link">
<span class="md-ellipsis">
Lombok
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../mapper/config/record/" class="md-nav__link">
<span class="md-ellipsis">
Record
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../mapper/config/scala/" class="md-nav__link">
<span class="md-ellipsis">
Scala
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8" >
<label class="md-nav__link" for="__nav_2_8" id="__nav_2_8_label" tabindex="">
<span class="md-ellipsis">
Developer
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_8">
<span class="md-nav__icon md-icon"></span>
Developer
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../developer/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_2" >
<label class="md-nav__link" for="__nav_2_8_2" id="__nav_2_8_2_label" tabindex="0">
<span class="md-ellipsis">
Common
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_8_2">
<span class="md-nav__icon md-icon"></span>
Common
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../developer/common/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../developer/common/concurrency/" class="md-nav__link">
<span class="md-ellipsis">
Concurrency
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../developer/common/context/" class="md-nav__link">
<span class="md-ellipsis">
Context
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../developer/common/event_bus/" class="md-nav__link">
<span class="md-ellipsis">
Event Bus
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../developer/native_protocol/" class="md-nav__link">
<span class="md-ellipsis">
Native Protocol
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../developer/netty_pipeline/" class="md-nav__link">
<span class="md-ellipsis">
Netty Pipeline
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../developer/request_execution/" class="md-nav__link">
<span class="md-ellipsis">
Request Execution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../developer/admin/" class="md-nav__link">
<span class="md-ellipsis">
Admin
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../osgi/" class="md-nav__link">
<span class="md-ellipsis">
OSGi
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../api/" class="md-nav__link">
<span class="md-ellipsis">
API References
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../faq-README/" class="md-nav__link">
<span class="md-ellipsis">
FAQ
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../changelog-README/" class="md-nav__link">
<span class="md-ellipsis">
Changelog
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../upgrade-README/" class="md-nav__link">
<span class="md-ellipsis">
Upgrade Guide
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#metrics" class="md-nav__link">
<span class="md-ellipsis">
Metrics
</span>
</a>
<nav class="md-nav" aria-label="Metrics">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#quick-overview" class="md-nav__link">
<span class="md-ellipsis">
Quick overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#selecting-a-metrics-library" class="md-nav__link">
<span class="md-ellipsis">
Selecting a Metrics Library
</span>
</a>
<nav class="md-nav" aria-label="Selecting a Metrics Library">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#dropwizard-metrics" class="md-nav__link">
<span class="md-ellipsis">
Dropwizard Metrics
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#micrometer" class="md-nav__link">
<span class="md-ellipsis">
Micrometer
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#microprofile-metrics" class="md-nav__link">
<span class="md-ellipsis">
MicroProfile Metrics
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#other-metrics-libraries" class="md-nav__link">
<span class="md-ellipsis">
Other Metrics libraries
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#enabling-specific-driver-metrics" class="md-nav__link">
<span class="md-ellipsis">
Enabling specific driver metrics
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#selecting-a-metric-identifier-style" class="md-nav__link">
<span class="md-ellipsis">
Selecting a metric identifier style
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#using-an-external-metric-registry" class="md-nav__link">
<span class="md-ellipsis">
Using an external metric registry
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#programmatic-access-to-driver-metrics" class="md-nav__link">
<span class="md-ellipsis">
Programmatic access to driver metrics
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#exposing-driver-metrics-with-jmx" class="md-nav__link">
<span class="md-ellipsis">
Exposing driver metrics with JMX
</span>
</a>
<nav class="md-nav" aria-label="Exposing driver metrics with JMX">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#dropwizard-metrics_1" class="md-nav__link">
<span class="md-ellipsis">
Dropwizard Metrics
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#exporting-metrics-with-other-protocols" class="md-nav__link">
<span class="md-ellipsis">
Exporting metrics with other protocols
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1>Metrics</h1>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<h2 id="metrics">Metrics<a class="headerlink" href="#metrics" title="Permanent link">&para;</a></h2>
<h3 id="quick-overview">Quick overview<a class="headerlink" href="#quick-overview" title="Permanent link">&para;</a></h3>
<ul>
<li><code>advanced.metrics</code> in the configuration. All metrics disabled by default. To enable, select the
metrics library to use, then define which individual metrics to activate.</li>
<li>some metrics are per node, others global to the session, or both.</li>
<li>unlike driver 3, JMX is not provided out of the box. You need to add the dependency manually.</li>
</ul>
<hr />
<p>The driver is able to report measurements of its internal behavior to a variety of metrics
libraries, and ships with bindings for three popular ones: <a href="https://metrics.dropwizard.io/4.1.2">Dropwizard Metrics</a> , <a href="https://micrometer.io/docs">Micrometer
Metrics</a> and <a href="https://github.com/eclipse/microprofile-metrics">MicroProfile Metrics</a>.</p>
<h3 id="selecting-a-metrics-library">Selecting a Metrics Library<a class="headerlink" href="#selecting-a-metrics-library" title="Permanent link">&para;</a></h3>
<h4 id="dropwizard-metrics">Dropwizard Metrics<a class="headerlink" href="#dropwizard-metrics" title="Permanent link">&para;</a></h4>
<p>Dropwizard is the driver's default metrics library; there is no additional configuration nor any
extra dependency to add if you wish to use Dropwizard.</p>
<h4 id="micrometer">Micrometer<a class="headerlink" href="#micrometer" title="Permanent link">&para;</a></h4>
<p>To use Micrometer you must:</p>
<ol>
<li>Define <code>MicrometerMetricsFactory</code> as the metrics factory to use in the driver configuration: </li>
</ol>
<div class="highlight"><pre><span></span><code>datastax-java-driver.advanced.metrics {
factory.class = MicrometerMetricsFactory
}
</code></pre></div>
<ol>
<li>Add a dependency to <code>java-driver-metrics-micrometer</code> in your application. This separate driver
module contains the actual bindings for Micrometer, and depends itself on the Micrometer library:</li>
</ol>
<div class="highlight"><pre><span></span><code><span class="nt">&lt;dependency&gt;</span>
<span class="w"> </span><span class="nt">&lt;groupId&gt;</span>org.apache.cassandra<span class="nt">&lt;/groupId&gt;</span>
<span class="w"> </span><span class="nt">&lt;artifactId&gt;</span>java-driver-metrics-micrometer<span class="nt">&lt;/artifactId&gt;</span>
<span class="w"> </span><span class="nt">&lt;version&gt;</span>${driver.version}<span class="nt">&lt;/version&gt;</span>
<span class="nt">&lt;/dependency&gt;</span>
</code></pre></div>
<ol>
<li>You should also exclude Dropwizard and HdrHistogram, which are two transitive dependencies of the
driver, because they are not relevant when using Micrometer:</li>
</ol>
<div class="highlight"><pre><span></span><code><span class="nt">&lt;dependency&gt;</span>
<span class="w"> </span><span class="nt">&lt;groupId&gt;</span>org.apache.cassandra<span class="nt">&lt;/groupId&gt;</span>
<span class="w"> </span><span class="nt">&lt;artifactId&gt;</span>java-driver-core<span class="nt">&lt;/artifactId&gt;</span>
<span class="w"> </span><span class="nt">&lt;exclusions&gt;</span>
<span class="w"> </span><span class="nt">&lt;exclusion&gt;</span>
<span class="w"> </span><span class="nt">&lt;groupId&gt;</span>io.dropwizard.metrics<span class="nt">&lt;/groupId&gt;</span>
<span class="w"> </span><span class="nt">&lt;artifactId&gt;</span>metrics-core<span class="nt">&lt;/artifactId&gt;</span>
<span class="w"> </span><span class="nt">&lt;/exclusion&gt;</span>
<span class="w"> </span><span class="nt">&lt;exclusion&gt;</span>
<span class="w"> </span><span class="nt">&lt;groupId&gt;</span>org.hdrhistogram<span class="nt">&lt;/groupId&gt;</span>
<span class="w"> </span><span class="nt">&lt;artifactId&gt;</span>HdrHistogram<span class="nt">&lt;/artifactId&gt;</span>
<span class="w"> </span><span class="nt">&lt;/exclusion&gt;</span>
<span class="w"> </span><span class="nt">&lt;/exclusions&gt;</span>
<span class="nt">&lt;/dependency&gt;</span>
</code></pre></div>
<h4 id="microprofile-metrics">MicroProfile Metrics<a class="headerlink" href="#microprofile-metrics" title="Permanent link">&para;</a></h4>
<p>To use MicroProfile Metrics you must:</p>
<ol>
<li>Define <code>MicroProfileMetricsFactory</code> as the metrics factory to use in the driver configuration:</li>
</ol>
<div class="highlight"><pre><span></span><code>datastax-java-driver.advanced.metrics {
factory.class = MicroProfileMetricsFactory
}
</code></pre></div>
<ol>
<li>Add a dependency to <code>java-driver-metrics-microprofile</code> in your application. This separate driver
module contains the actual bindings for MicroProfile, and depends itself on the MicroProfile Metrics
library:</li>
</ol>
<div class="highlight"><pre><span></span><code><span class="nt">&lt;dependency&gt;</span>
<span class="w"> </span><span class="nt">&lt;groupId&gt;</span>org.apache.cassandra<span class="nt">&lt;/groupId&gt;</span>
<span class="w"> </span><span class="nt">&lt;artifactId&gt;</span>java-driver-metrics-microprofile<span class="nt">&lt;/artifactId&gt;</span>
<span class="w"> </span><span class="nt">&lt;version&gt;</span>${driver.version}<span class="nt">&lt;/version&gt;</span>
<span class="nt">&lt;/dependency&gt;</span>
</code></pre></div>
<ol>
<li>You should also exclude Dropwizard and HdrHistogram, which are two transitive dependencies of the
driver, because they are not relevant when using MicroProfile Metrics:</li>
</ol>
<div class="highlight"><pre><span></span><code><span class="nt">&lt;dependency&gt;</span>
<span class="w"> </span><span class="nt">&lt;groupId&gt;</span>org.apache.cassandra<span class="nt">&lt;/groupId&gt;</span>
<span class="w"> </span><span class="nt">&lt;artifactId&gt;</span>java-driver-core<span class="nt">&lt;/artifactId&gt;</span>
<span class="w"> </span><span class="nt">&lt;exclusions&gt;</span>
<span class="w"> </span><span class="nt">&lt;exclusion&gt;</span>
<span class="w"> </span><span class="nt">&lt;groupId&gt;</span>io.dropwizard.metrics<span class="nt">&lt;/groupId&gt;</span>
<span class="w"> </span><span class="nt">&lt;artifactId&gt;</span>metrics-core<span class="nt">&lt;/artifactId&gt;</span>
<span class="w"> </span><span class="nt">&lt;/exclusion&gt;</span>
<span class="w"> </span><span class="nt">&lt;exclusion&gt;</span>
<span class="w"> </span><span class="nt">&lt;groupId&gt;</span>org.hdrhistogram<span class="nt">&lt;/groupId&gt;</span>
<span class="w"> </span><span class="nt">&lt;artifactId&gt;</span>HdrHistogram<span class="nt">&lt;/artifactId&gt;</span>
<span class="w"> </span><span class="nt">&lt;/exclusion&gt;</span>
<span class="w"> </span><span class="nt">&lt;/exclusions&gt;</span>
<span class="nt">&lt;/dependency&gt;</span>
</code></pre></div>
<h4 id="other-metrics-libraries">Other Metrics libraries<a class="headerlink" href="#other-metrics-libraries" title="Permanent link">&para;</a></h4>
<p>Other metrics libraries can also be used. However, you will need to provide a custom
metrics factory. Simply implement the
<code>com.datastax.oss.driver.internal.core.metrics.MetricsFactory</code> interface for your library of choice,
then pass the fully-qualified name of that implementation class to the driver using the
<code>advanced.metrics.factory.class</code> option. See the <a href="../configuration/reference/">reference configuration</a>.</p>
<p>You will certainly need to add the metrics library as a dependency to your application as well.
It is also recommended excluding Dropwizard and HdrHistogram, as shown above.</p>
<h3 id="enabling-specific-driver-metrics">Enabling specific driver metrics<a class="headerlink" href="#enabling-specific-driver-metrics" title="Permanent link">&para;</a></h3>
<p>Now that the metrics library is configured, you need to activate the driver metrics you are
interested in.</p>
<p>There are two categories of driver metrics:</p>
<ul>
<li>session-level: the measured data is global to a <code>Session</code> instance. For example, <code>connected-nodes</code>
measures the number of nodes to which we have connections.</li>
<li>node-level: the data is specific to a node (and therefore there is one metric instance per node).
For example, <code>pool.open-connections</code> measures the number of connections open to this particular
node.</li>
</ul>
<p>To find out which metrics are available, see the <a href="../configuration/reference/">reference configuration</a>. It contains a
commented-out line for each metric, with detailed explanations on its intended usage.</p>
<p>By default, all metrics are disabled. You can turn them on individually in the configuration, by
adding their name to these lists:</p>
<div class="highlight"><pre><span></span><code>datastax-java-driver.advanced.metrics {
session.enabled = [ connected-nodes, cql-requests ]
node.enabled = [ pool.open-connections, pool.in-flight ]
}
</code></pre></div>
<p>If you specify a metric that doesn't exist, it will be ignored, and a warning will be logged.</p>
<p>Finally, if you are using Dropwizard or Micrometer and enabled any metric of timer type, such as
<code>cql-requests</code>, it is also possible to provide additional configuration to fine-tune the underlying
histogram's characteristics and precision, such as its highest expected latency, its number of
significant digits to use, and its refresh interval. Again, see the <a href="../configuration/reference/">reference configuration</a> for
more details.</p>
<h3 id="selecting-a-metric-identifier-style">Selecting a metric identifier style<a class="headerlink" href="#selecting-a-metric-identifier-style" title="Permanent link">&para;</a></h3>
<p>Most metric libraries uniquely identify a metric by a name and, optionally, by a set of key-value
pairs, usually called tags.</p>
<p>The <code>advanced.metrics.id-generator.class</code> option is used to customize how the driver generates
metric identifiers. The driver ships with two built-in implementations:</p>
<ul>
<li>
<p><code>DefaultMetricIdGenerator</code>: generates identifiers composed solely of (unique) metric names; it
does not generate tags. All metric names start with the name of the session (see <code>session-name</code> in
the configuration), and in the case of node-level metrics, this is followed by <code>.nodes.</code>, followed
by a textual representation of the node's address. All names end with the metric distinctive name.
See below for examples. This generator is mostly suitable for use with metrics libraries that do
not support tags, like Dropwizard.</p>
</li>
<li>
<p><code>TaggingMetricIdGenerator</code>: generates identifiers composed of a name and one or two tags.
Session-level metric names start with the <code>session.</code> prefix followed by the metric distinctive
name; node-level metric names start with the <code>nodes.</code> prefix followed by the metric distinctive
name. Session-level tags will include a <code>session</code> tag whose value is the session name (see
<code>session-name</code> in the configuration); node-level tags will include the same <code>session</code> tag, and
also a <code>node</code> tag whose value is the node's address. See below for examples. This generator is
mostly suitable for use with metrics libraries that support tags, like Micrometer or MicroProfile
Metrics.</p>
</li>
</ul>
<p>For example, here is how each one of them generates identifiers for the session metric "bytes-sent",
assuming that the session is named "s0":</p>
<ul>
<li><code>DefaultMetricIdGenerator</code>:</li>
<li>name:<code>s0.bytes-sent</code></li>
<li>tags: <code>{}</code></li>
<li><code>TaggingMetricIdGenerator</code>:</li>
<li>name: <code>session.bytes-sent</code></li>
<li>tags: <code>{ "session" : "s0" }</code></li>
</ul>
<p>Here is how each one of them generates identifiers for the node metric "bytes-sent", assuming that
the session is named "s0", and the node's broadcast address is 10.1.2.3:9042:</p>
<ul>
<li><code>DefaultMetricIdGenerator</code>:</li>
<li>name : <code>s0.nodes.10_1_2_3:9042.bytes-sent</code></li>
<li>tags: <code>{}</code></li>
<li><code>TaggingMetricIdGenerator</code>:</li>
<li>name <code>nodes.bytes-sent</code></li>
<li>tags: <code>{ "session" : "s0", "node" : "\10.1.2.3:9042" }</code></li>
</ul>
<p>As shown above, both built-in implementations generate names that are path-like structures separated
by dots. This is indeed the most common expected format by reporting tools.</p>
<p>Finally, it is also possible to define a global prefix for all metric names; this can be done with
the <code>advanced.metrics.id-generator.prefix</code> option.</p>
<p>The prefix should not start nor end with a dot or any other path separator; the following are two
valid examples: <code>cassandra</code> or <code>myapp.prod.cassandra</code>.</p>
<p>For example, if this prefix is set to <code>cassandra</code>, here is how the session metric "bytes-sent" would
be named, assuming that the session is named "s0":</p>
<ul>
<li>with <code>DefaultMetricIdGenerator</code>: <code>cassandra.s0.bytes-sent</code></li>
<li>with <code>TaggingMetricIdGenerator</code>: <code>cassandra.session.bytes-sent</code></li>
</ul>
<p>Here is how the node metric "bytes-sent" would be named, assuming that the session is named "s0",
and the node's broadcast address is 10.1.2.3:9042:</p>
<ul>
<li>with <code>DefaultMetricIdGenerator</code>: <code>cassandra.s0.nodes.10_1_2_3:9042.bytes-sent</code></li>
<li>with <code>TaggingMetricIdGenerator</code>: <code>cassandra.nodes.bytes-sent</code></li>
</ul>
<h3 id="using-an-external-metric-registry">Using an external metric registry<a class="headerlink" href="#using-an-external-metric-registry" title="Permanent link">&para;</a></h3>
<p>Regardless of which metrics library is used, you can provide an external metric registry object when
building a session. This allows the driver to transparently export its operational metrics to
whatever reporting system you want to use.</p>
<p>To pass a metric registry object to the session, use the <code>CqlSessionBuilder.withMetricRegistry()</code>
method:</p>
<div class="highlight"><pre><span></span><code><span class="n">CqlSessionBuilder</span><span class="w"> </span><span class="n">builder</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">CqlSession</span><span class="p">.</span><span class="na">builder</span><span class="p">();</span>
<span class="n">builder</span><span class="p">.</span><span class="na">withMetricRegistry</span><span class="p">(</span><span class="n">myRegistryObject</span><span class="p">);</span>
<span class="n">CqlSession</span><span class="w"> </span><span class="n">session</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">builder</span><span class="p">.</span><span class="na">build</span><span class="p">();</span>
</code></pre></div>
<p>Beware that the driver does not inspect the provided object, it simply passes it to the metrics
factory in use; it is the user's responsibility to provide registry objects compatible with the
metrics library in use. For reference, here are the expected base types for the three built-in
metrics libraries:</p>
<ul>
<li>Dropwizard: <code>com.codahale.metrics.MetricRegistry</code></li>
<li>Micrometer: <code>io.micrometer.core.instrument.MeterRegistry</code></li>
<li>MicroProfile: <code>org.eclipse.microprofile.metrics.MetricRegistry</code></li>
</ul>
<p><strong>NOTE:</strong> MicroProfile <strong>requires</strong> an external instance of its registry to be provided. For
Micrometer, if no registry object is provided, Micrometer's <code>globalRegistry</code> will be used. For
Dropwizard, if no registry object is provided, an instance of <code>MetricRegistry</code> will be created and
used (in which case, it can be retrieved programmatically if needed, see below).</p>
<h3 id="programmatic-access-to-driver-metrics">Programmatic access to driver metrics<a class="headerlink" href="#programmatic-access-to-driver-metrics" title="Permanent link">&para;</a></h3>
<p>Programmatic access to driver metrics is only available when using Dropwizard Metrics. Users of
other libraries are encouraged to provide an external registry when creating the driver session (see
above), then use it to gain programmatic access to the driver metrics.</p>
<p>The Dropwizard <code>MetricRegistry</code> object is exposed in the driver API via
<code>session.getMetrics().getRegistry()</code>. You can retrieve it and, for example, configure a <code>Reporter</code>
to send the metrics to a monitoring tool.</p>
<p><strong>NOTE:</strong> Beware that <code>session.getMetrics()</code> is not available when using other metrics libraries,
and will throw a <code>NoClassDefFoundError</code> at runtime if accessed in such circumstances.</p>
<h3 id="exposing-driver-metrics-with-jmx">Exposing driver metrics with JMX<a class="headerlink" href="#exposing-driver-metrics-with-jmx" title="Permanent link">&para;</a></h3>
<p>Unlike previous driver versions, JMX support is not included out of the box.</p>
<p>The way to add JMX support to your application depends largely on the metrics library being used. We
show below instructions for Dropwizard only. Micrometer also has support for JMX: please refer to
its <a href="https://micrometer.io/docs/registry/jmx">official documentation</a>.</p>
<h4 id="dropwizard-metrics_1">Dropwizard Metrics<a class="headerlink" href="#dropwizard-metrics_1" title="Permanent link">&para;</a></h4>
<p>Add the following dependency to your application (make sure the version matches the <code>metrics-core</code>
dependency of the driver):</p>
<div class="highlight"><pre><span></span><code><span class="nt">&lt;dependency&gt;</span>
<span class="w"> </span><span class="nt">&lt;groupId&gt;</span>io.dropwizard.metrics<span class="nt">&lt;/groupId&gt;</span>
<span class="w"> </span><span class="nt">&lt;artifactId&gt;</span>metrics-jmx<span class="nt">&lt;/artifactId&gt;</span>
<span class="w"> </span><span class="nt">&lt;version&gt;</span>4.1.2<span class="nt">&lt;/version&gt;</span>
<span class="nt">&lt;/dependency&gt;</span>
</code></pre></div>
<p>Then create a JMX reporter for the registry:</p>
<div class="highlight"><pre><span></span><code><span class="n">MetricRegistry</span><span class="w"> </span><span class="n">registry</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">session</span><span class="p">.</span><span class="na">getMetrics</span><span class="p">()</span>
<span class="w"> </span><span class="p">.</span><span class="na">orElseThrow</span><span class="p">(()</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">IllegalStateException</span><span class="p">(</span><span class="s">&quot;Metrics are disabled&quot;</span><span class="p">))</span>
<span class="w"> </span><span class="p">.</span><span class="na">getRegistry</span><span class="p">();</span>
<span class="n">JmxReporter</span><span class="w"> </span><span class="n">reporter</span><span class="w"> </span><span class="o">=</span>
<span class="w"> </span><span class="n">JmxReporter</span><span class="p">.</span><span class="na">forRegistry</span><span class="p">(</span><span class="n">registry</span><span class="p">)</span>
<span class="w"> </span><span class="p">.</span><span class="na">inDomain</span><span class="p">(</span><span class="s">&quot;com.datastax.oss.driver&quot;</span><span class="p">)</span>
<span class="w"> </span><span class="p">.</span><span class="na">build</span><span class="p">();</span>
<span class="n">reporter</span><span class="p">.</span><span class="na">start</span><span class="p">();</span>
</code></pre></div>
<p>Note: by default, the JMX reporter exposes all metrics in a flat structure (for example,
<code>pool.open-connections</code> and <code>pool.in-flight</code> appear as root elements). If you prefer a hierarchical
structure (<code>open-connections</code> and <code>in-flight</code> nested into a <code>pool</code> sub-domain), use a custom object
factory:</p>
<div class="highlight"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">com.codahale.metrics.jmx.JmxReporter</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">com.codahale.metrics.jmx.ObjectNameFactory</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">com.google.common.base.Splitter</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">com.google.common.base.Strings</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">javax.management.MalformedObjectNameException</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">javax.management.ObjectName</span><span class="p">;</span>
<span class="n">ObjectNameFactory</span><span class="w"> </span><span class="n">objectNameFactory</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">type</span><span class="p">,</span><span class="w"> </span><span class="n">domain</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="p">)</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">StringBuilder</span><span class="w"> </span><span class="n">objectName</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">StringBuilder</span><span class="p">(</span><span class="n">domain</span><span class="p">).</span><span class="na">append</span><span class="p">(</span><span class="sc">&#39;:&#39;</span><span class="p">);</span>
<span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="n">String</span><span class="o">&gt;</span><span class="w"> </span><span class="n">nameParts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Splitter</span><span class="p">.</span><span class="na">on</span><span class="p">(</span><span class="sc">&#39;.&#39;</span><span class="p">).</span><span class="na">splitToList</span><span class="p">(</span><span class="n">name</span><span class="p">);</span>
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">namePart</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">nameParts</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="n">isLast</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">nameParts</span><span class="p">.</span><span class="na">size</span><span class="p">()</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
<span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">key</span><span class="w"> </span><span class="o">=</span>
<span class="w"> </span><span class="n">isLast</span><span class="w"> </span><span class="o">?</span><span class="w"> </span><span class="s">&quot;name&quot;</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">Strings</span><span class="p">.</span><span class="na">padStart</span><span class="p">(</span><span class="n">Integer</span><span class="p">.</span><span class="na">toString</span><span class="p">(</span><span class="n">i</span><span class="p">),</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="sc">&#39;0&#39;</span><span class="p">);</span>
<span class="w"> </span><span class="n">objectName</span><span class="p">.</span><span class="na">append</span><span class="p">(</span><span class="n">key</span><span class="p">).</span><span class="na">append</span><span class="p">(</span><span class="sc">&#39;=&#39;</span><span class="p">).</span><span class="na">append</span><span class="p">(</span><span class="n">namePart</span><span class="p">);</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">isLast</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">objectName</span><span class="p">.</span><span class="na">append</span><span class="p">(</span><span class="sc">&#39;,&#39;</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">ObjectName</span><span class="p">(</span><span class="n">objectName</span><span class="p">.</span><span class="na">toString</span><span class="p">());</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">MalformedObjectNameException</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">RuntimeException</span><span class="p">(</span><span class="n">e</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">};</span>
<span class="n">JmxReporter</span><span class="w"> </span><span class="n">reporter</span><span class="w"> </span><span class="o">=</span>
<span class="w"> </span><span class="n">JmxReporter</span><span class="p">.</span><span class="na">forRegistry</span><span class="p">(</span><span class="n">registry</span><span class="p">)</span>
<span class="w"> </span><span class="p">.</span><span class="na">inDomain</span><span class="p">(</span><span class="s">&quot;com.datastax.oss.driver&quot;</span><span class="p">)</span>
<span class="w"> </span><span class="p">.</span><span class="na">createsObjectNamesWith</span><span class="p">(</span><span class="n">objectNameFactory</span><span class="p">)</span>
<span class="w"> </span><span class="p">.</span><span class="na">build</span><span class="p">();</span>
<span class="n">reporter</span><span class="p">.</span><span class="na">start</span><span class="p">();</span>
</code></pre></div>
<h3 id="exporting-metrics-with-other-protocols">Exporting metrics with other protocols<a class="headerlink" href="#exporting-metrics-with-other-protocols" title="Permanent link">&para;</a></h3>
<p>Dropwizard Metrics has built-in reporters for other output formats: JSON (via a servlet), stdout,
CSV files, SLF4J logs and Graphite. Refer to their <a href="https://metrics.dropwizard.io/4.1.2/getting-started.html">manual</a> for more details.</p>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
Back to top
</button>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.tabs", "navigation.sections", "navigation.top", "search.highlight", "search.share"], "search": "../../assets/javascripts/workers/search.973d3a69.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
<script src="../../assets/javascripts/bundle.92b07e13.min.js"></script>
</body>
</html>