xref: /aosp_15_r20/external/opencensus-java/contrib/dropwizard/README.md (revision a24ffb47c3166327784aa05b149974e82e8f71b8)
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-dropwizard</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-dropwizard: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 com.codahale.metrics.MetricRegistry codahaleRegistry =
39*a24ffb47SSadaf Ebrahimi    new com.codahale.metrics.MetricRegistry();
40*a24ffb47SSadaf Ebrahimi
41*a24ffb47SSadaf Ebrahimi  // Create a Dropwizard counter.
42*a24ffb47SSadaf Ebrahimi  static final com.codahale.metrics.Counter requests = codahaleRegistry.counter("requests");
43*a24ffb47SSadaf Ebrahimi
44*a24ffb47SSadaf Ebrahimi  public static void main(String[] args) {
45*a24ffb47SSadaf Ebrahimi
46*a24ffb47SSadaf Ebrahimi    // Increment the requests.
47*a24ffb47SSadaf Ebrahimi    requests.inc();
48*a24ffb47SSadaf Ebrahimi
49*a24ffb47SSadaf Ebrahimi    // Hook the Dropwizard registry into the OpenCensus registry
50*a24ffb47SSadaf Ebrahimi    // via the DropWizardMetrics metric producer.
51*a24ffb47SSadaf Ebrahimi    io.opencensus.metrics.Metrics.getExportComponent().getMetricProducerManager().add(
52*a24ffb47SSadaf Ebrahimi          new io.opencensus.contrib.dropwizard.DropWizardMetrics(
53*a24ffb47SSadaf Ebrahimi            Collections.singletonList(codahaleRegistry)));
54*a24ffb47SSadaf Ebrahimi
55*a24ffb47SSadaf Ebrahimi  }
56*a24ffb47SSadaf Ebrahimi}
57*a24ffb47SSadaf Ebrahimi```
58*a24ffb47SSadaf Ebrahimi
59*a24ffb47SSadaf Ebrahimi## Translation to OpenCensus Metrics
60*a24ffb47SSadaf Ebrahimi
61*a24ffb47SSadaf EbrahimiThis section describes how each of the DropWizard metrics translate into OpenCensus metrics.
62*a24ffb47SSadaf Ebrahimi
63*a24ffb47SSadaf Ebrahimi### DropWizard Counters
64*a24ffb47SSadaf Ebrahimi
65*a24ffb47SSadaf EbrahimiGiven a DropWizard Counter with name `cache_evictions`, the following values are reported:
66*a24ffb47SSadaf Ebrahimi
67*a24ffb47SSadaf Ebrahimi* name: codahale_<initial_metric_name>_<initial_type> (ex: codahale_cache_evictions_counter)
68*a24ffb47SSadaf Ebrahimi* description: Collected from Dropwizard (metric=<metric_name>, type=<class_name>)
69*a24ffb47SSadaf Ebrahimi(ex: Collected from Dropwizard (metric=cache_evictions, type=com.codahale.metrics.Counter))
70*a24ffb47SSadaf Ebrahimi* type: GAUGE_INT64
71*a24ffb47SSadaf Ebrahimi* unit: 1
72*a24ffb47SSadaf Ebrahimi
73*a24ffb47SSadaf EbrahimiNote: OpenCensus's CUMULATIVE_INT64 type represent monotonically increasing values. Since
74*a24ffb47SSadaf EbrahimiDropWizard Counter goes up/down, it make sense to report them as OpenCensus GAUGE_INT64.
75*a24ffb47SSadaf Ebrahimi
76*a24ffb47SSadaf Ebrahimi### DropWizard Gauges
77*a24ffb47SSadaf Ebrahimi
78*a24ffb47SSadaf EbrahimiGiven a DropWizard Gauge with name `line_requests`, the following values are reported:
79*a24ffb47SSadaf Ebrahimi
80*a24ffb47SSadaf Ebrahimi* name: codahale_<initial_metric_name>_<initial_type> (ex: codahale_line_requests_gauge)
81*a24ffb47SSadaf Ebrahimi* description: Collected from Dropwizard (metric=<metric_name>, type=<class_name>)
82*a24ffb47SSadaf Ebrahimi* type: GAUGE_INT64 or GAUGE_DOUBLE
83*a24ffb47SSadaf Ebrahimi* unit: 1
84*a24ffb47SSadaf Ebrahimi
85*a24ffb47SSadaf EbrahimiNote: For simplicity, OpenCensus uses GAUGE_DOUBLE type for any Number and GAUGE_INT64
86*a24ffb47SSadaf Ebrahimitype for Boolean values.
87*a24ffb47SSadaf Ebrahimi
88*a24ffb47SSadaf Ebrahimi### DropWizard Meters
89*a24ffb47SSadaf Ebrahimi
90*a24ffb47SSadaf EbrahimiGiven a DropWizard Meter with name `get_requests`, the following values are reported:
91*a24ffb47SSadaf Ebrahimi
92*a24ffb47SSadaf Ebrahimi* name: codahale_<initial_metric_name>_<initial_type> (ex: codahale_get_requests_meter)
93*a24ffb47SSadaf Ebrahimi* description: Collected from Dropwizard (metric=<metric_name>, type=<class_name>)
94*a24ffb47SSadaf Ebrahimi* type: CUMULATIVE_INT64
95*a24ffb47SSadaf Ebrahimi* unit: 1
96*a24ffb47SSadaf Ebrahimi
97*a24ffb47SSadaf Ebrahimi### DropWizard Histograms
98*a24ffb47SSadaf Ebrahimi
99*a24ffb47SSadaf EbrahimiGiven a DropWizard Histogram with name `results`, the following values are reported:
100*a24ffb47SSadaf Ebrahimi
101*a24ffb47SSadaf Ebrahimi* name: codahale_<initial_metric_name>_<initial_type> (ex: codahale_results_histogram)
102*a24ffb47SSadaf Ebrahimi* description: Collected from Dropwizard (metric=<metric_name>, type=<class_name>)
103*a24ffb47SSadaf Ebrahimi* type: SUMMARY
104*a24ffb47SSadaf Ebrahimi* unit: 1
105*a24ffb47SSadaf Ebrahimi
106*a24ffb47SSadaf Ebrahimi### DropWizard Timers
107*a24ffb47SSadaf Ebrahimi
108*a24ffb47SSadaf EbrahimiGiven a DropWizard Timer with name `requests`, the following values are reported:
109*a24ffb47SSadaf Ebrahimi* name: codahale_<initial_metric_name>_<initial_type> (ex: codahale_requests_timer)
110*a24ffb47SSadaf Ebrahimi* description: Collected from Dropwizard (metric=<metric_name>, type=<class_name>)
111*a24ffb47SSadaf Ebrahimi* type: SUMMARY
112*a24ffb47SSadaf Ebrahimi* unit: 1
113