1*a24ffb47SSadaf Ebrahimi# OpenCensus DropWizard Util for Java 2*a24ffb47SSadaf Ebrahimi 3*a24ffb47SSadaf EbrahimiThe *OpenCensus DropWizard Util for Java* provides an easy way to translate Dropwizard metrics to 4*a24ffb47SSadaf EbrahimiOpenCensus. 5*a24ffb47SSadaf Ebrahimi 6*a24ffb47SSadaf Ebrahimi## Quickstart 7*a24ffb47SSadaf Ebrahimi 8*a24ffb47SSadaf Ebrahimi### Prerequisites 9*a24ffb47SSadaf Ebrahimi 10*a24ffb47SSadaf EbrahimiAssuming, you already have both the OpenCensus and Dropwizard client libraries setup and working 11*a24ffb47SSadaf Ebrahimiinside your application. 12*a24ffb47SSadaf Ebrahimi 13*a24ffb47SSadaf Ebrahimi### Add the dependencies to your project 14*a24ffb47SSadaf Ebrahimi 15*a24ffb47SSadaf EbrahimiFor Maven add to your `pom.xml`: 16*a24ffb47SSadaf Ebrahimi```xml 17*a24ffb47SSadaf Ebrahimi<dependencies> 18*a24ffb47SSadaf Ebrahimi <dependency> 19*a24ffb47SSadaf Ebrahimi <groupId>io.opencensus</groupId> 20*a24ffb47SSadaf Ebrahimi <artifactId>opencensus-contrib-dropwizard5</artifactId> 21*a24ffb47SSadaf Ebrahimi <version>0.28.3</version> 22*a24ffb47SSadaf Ebrahimi </dependency> 23*a24ffb47SSadaf Ebrahimi</dependencies> 24*a24ffb47SSadaf Ebrahimi``` 25*a24ffb47SSadaf Ebrahimi 26*a24ffb47SSadaf EbrahimiFor Gradle add to your dependencies: 27*a24ffb47SSadaf Ebrahimi```groovy 28*a24ffb47SSadaf Ebrahimicompile 'io.opencensus:opencensus-contrib-dropwizard5:0.28.3' 29*a24ffb47SSadaf Ebrahimi``` 30*a24ffb47SSadaf Ebrahimi 31*a24ffb47SSadaf Ebrahimi### And the following code: 32*a24ffb47SSadaf Ebrahimi 33*a24ffb47SSadaf Ebrahimi```java 34*a24ffb47SSadaf Ebrahimiimport java.util.Collections; 35*a24ffb47SSadaf Ebrahimi 36*a24ffb47SSadaf Ebrahimipublic class YourClass { 37*a24ffb47SSadaf Ebrahimi // Create registry for Dropwizard metrics. 38*a24ffb47SSadaf Ebrahimi static final io.dropwizard.metrics5.MetricRegistry codahaleRegistry = 39*a24ffb47SSadaf Ebrahimi new io.dropwizard.metrics5.MetricRegistry(); 40*a24ffb47SSadaf Ebrahimi 41*a24ffb47SSadaf Ebrahimi // Create a Dropwizard counter. 42*a24ffb47SSadaf Ebrahimi Map<String, String> tags = new HashMap<>(); 43*a24ffb47SSadaf Ebrahimi tags.put("tag1", "value1"); 44*a24ffb47SSadaf Ebrahimi tags.put("tag2", "value2"); 45*a24ffb47SSadaf Ebrahimi static final io.dropwizard.metrics5.Counter requests = 46*a24ffb47SSadaf Ebrahimi codahaleRegistry.counter(new MetricName("requests", tags)); 47*a24ffb47SSadaf Ebrahimi 48*a24ffb47SSadaf Ebrahimi public static void main(String[] args) { 49*a24ffb47SSadaf Ebrahimi 50*a24ffb47SSadaf Ebrahimi // Increment the requests. 51*a24ffb47SSadaf Ebrahimi requests.inc(); 52*a24ffb47SSadaf Ebrahimi 53*a24ffb47SSadaf Ebrahimi // Hook the Dropwizard registry into the OpenCensus registry 54*a24ffb47SSadaf Ebrahimi // via the DropWizardMetrics metric producer. 55*a24ffb47SSadaf Ebrahimi io.opencensus.metrics.Metrics.getExportComponent().getMetricProducerManager().add( 56*a24ffb47SSadaf Ebrahimi new io.opencensus.contrib.dropwizard.DropWizardMetrics( 57*a24ffb47SSadaf Ebrahimi Collections.singletonList(codahaleRegistry))); 58*a24ffb47SSadaf Ebrahimi 59*a24ffb47SSadaf Ebrahimi } 60*a24ffb47SSadaf Ebrahimi} 61*a24ffb47SSadaf Ebrahimi``` 62*a24ffb47SSadaf Ebrahimi 63*a24ffb47SSadaf Ebrahimi## Translation to OpenCensus Metrics 64*a24ffb47SSadaf Ebrahimi 65*a24ffb47SSadaf EbrahimiThis section describes how each of the DropWizard metrics translate into OpenCensus metrics. 66*a24ffb47SSadaf Ebrahimi 67*a24ffb47SSadaf Ebrahimi### DropWizard Counters 68*a24ffb47SSadaf Ebrahimi 69*a24ffb47SSadaf EbrahimiGiven a DropWizard Counter with name `cache_evictions`, the following values are reported: 70*a24ffb47SSadaf Ebrahimi 71*a24ffb47SSadaf Ebrahimi* name: dropwizard5_<initial_metric_name>_<initial_type> (ex: codahale_cache_evictions_counter) 72*a24ffb47SSadaf Ebrahimi* description: Collected from Dropwizard (metric=<metric_name>, type=<class_name>) 73*a24ffb47SSadaf Ebrahimi(ex: Collected from Dropwizard (metric=cache_evictions, type=io.dropwizard.metrics5.Counter)) 74*a24ffb47SSadaf Ebrahimi* type: GAUGE_INT64 75*a24ffb47SSadaf Ebrahimi* unit: 1 76*a24ffb47SSadaf Ebrahimi* labels: metrics tags are converted to label keys/values 77*a24ffb47SSadaf Ebrahimi 78*a24ffb47SSadaf EbrahimiNote: OpenCensus's CUMULATIVE_INT64 type represent monotonically increasing values. Since 79*a24ffb47SSadaf EbrahimiDropWizard Counter goes up/down, it make sense to report them as OpenCensus GAUGE_INT64. 80*a24ffb47SSadaf Ebrahimi 81*a24ffb47SSadaf Ebrahimi### DropWizard Gauges 82*a24ffb47SSadaf Ebrahimi 83*a24ffb47SSadaf EbrahimiGiven a DropWizard Gauge with name `line_requests`, the following values are reported: 84*a24ffb47SSadaf Ebrahimi 85*a24ffb47SSadaf Ebrahimi* name: dropwizard5_<initial_metric_name>_<initial_type> (ex: codahale_line_requests_gauge) 86*a24ffb47SSadaf Ebrahimi* description: Collected from Dropwizard (metric=<metric_name>, type=<class_name>) 87*a24ffb47SSadaf Ebrahimi* type: GAUGE_INT64 or GAUGE_DOUBLE 88*a24ffb47SSadaf Ebrahimi* unit: 1 89*a24ffb47SSadaf Ebrahimi* labels: metrics tags are converted to label keys/values 90*a24ffb47SSadaf Ebrahimi 91*a24ffb47SSadaf Ebrahimi 92*a24ffb47SSadaf EbrahimiNote: For simplicity, OpenCensus uses GAUGE_DOUBLE type for any Number and GAUGE_INT64 93*a24ffb47SSadaf Ebrahimitype for Boolean values. 94*a24ffb47SSadaf Ebrahimi 95*a24ffb47SSadaf Ebrahimi### DropWizard Meters 96*a24ffb47SSadaf Ebrahimi 97*a24ffb47SSadaf EbrahimiGiven a DropWizard Meter with name `get_requests`, the following values are reported: 98*a24ffb47SSadaf Ebrahimi 99*a24ffb47SSadaf Ebrahimi* name: dropwizard5_<initial_metric_name>_<initial_type> (ex: codahale_get_requests_meter) 100*a24ffb47SSadaf Ebrahimi* description: Collected from Dropwizard (metric=<metric_name>, type=<class_name>) 101*a24ffb47SSadaf Ebrahimi* type: CUMULATIVE_INT64 102*a24ffb47SSadaf Ebrahimi* unit: 1 103*a24ffb47SSadaf Ebrahimi* labels: metrics tags are converted to label keys/values 104*a24ffb47SSadaf Ebrahimi 105*a24ffb47SSadaf Ebrahimi 106*a24ffb47SSadaf Ebrahimi### DropWizard Histograms 107*a24ffb47SSadaf Ebrahimi 108*a24ffb47SSadaf EbrahimiGiven a DropWizard Histogram with name `results`, the following values are reported: 109*a24ffb47SSadaf Ebrahimi 110*a24ffb47SSadaf Ebrahimi* name: dropwizard5_<initial_metric_name>_<initial_type> (ex: codahale_results_histogram) 111*a24ffb47SSadaf Ebrahimi* description: Collected from Dropwizard (metric=<metric_name>, type=<class_name>) 112*a24ffb47SSadaf Ebrahimi* type: SUMMARY 113*a24ffb47SSadaf Ebrahimi* unit: 1 114*a24ffb47SSadaf Ebrahimi* labels: metrics tags are converted to label keys/values 115*a24ffb47SSadaf Ebrahimi 116*a24ffb47SSadaf Ebrahimi 117*a24ffb47SSadaf Ebrahimi### DropWizard Timers 118*a24ffb47SSadaf Ebrahimi 119*a24ffb47SSadaf EbrahimiGiven a DropWizard Timer with name `requests`, the following values are reported: 120*a24ffb47SSadaf Ebrahimi* name: dropwizard5_<initial_metric_name>_<initial_type> (ex: codahale_requests_timer) 121*a24ffb47SSadaf Ebrahimi* description: Collected from Dropwizard (metric=<metric_name>, type=<class_name>) 122*a24ffb47SSadaf Ebrahimi* type: SUMMARY 123*a24ffb47SSadaf Ebrahimi* unit: 124*a24ffb47SSadaf Ebrahimi* labels: metrics tags are converted to label keys/values 125*a24ffb47SSadaf Ebrahimi 126