xref: /aosp_15_r20/external/opencensus-java/contrib/dropwizard5/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-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