Skip to content

Commit ffafe25

Browse files
ptraversbogdandrutu
authored andcommitted
Add named meter and meter factory (#668)
* Add named meters with factory provider * Fix documentation to instantiate a meter from a meter factory * Fix documentation incorrectly referencing meter not meter factory * Fix MeterFactor not Meter Co-Authored-By: Armin Ruech <[email protected]> * Fix MeterFactor not Meter Co-Authored-By: Armin Ruech <[email protected]> * Fix MeterFactory not Meter Co-Authored-By: Armin Ruech <[email protected]> * Fix over 100 characters in line * Refactor meter example names to my_library_example
1 parent 6607bd7 commit ffafe25

30 files changed

+279
-77
lines changed

api/src/main/java/io/opentelemetry/OpenTelemetry.java

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,11 @@
1919
import io.opentelemetry.distributedcontext.DefaultDistributedContextManager;
2020
import io.opentelemetry.distributedcontext.DistributedContextManager;
2121
import io.opentelemetry.distributedcontext.spi.DistributedContextManagerProvider;
22-
import io.opentelemetry.metrics.DefaultMeter;
22+
import io.opentelemetry.metrics.DefaultMeterFactory;
23+
import io.opentelemetry.metrics.DefaultMeterFactoryProvider;
2324
import io.opentelemetry.metrics.Meter;
24-
import io.opentelemetry.metrics.spi.MeterProvider;
25+
import io.opentelemetry.metrics.MeterFactory;
26+
import io.opentelemetry.metrics.spi.MeterFactoryProvider;
2527
import io.opentelemetry.trace.DefaultTracerFactory;
2628
import io.opentelemetry.trace.DefaultTracerFactoryProvider;
2729
import io.opentelemetry.trace.Tracer;
@@ -38,7 +40,7 @@
3840
* <p>The telemetry objects are lazy-loaded singletons resolved via {@link ServiceLoader} mechanism.
3941
*
4042
* @see TracerFactory
41-
* @see MeterProvider
43+
* @see MeterFactoryProvider
4244
* @see DistributedContextManagerProvider
4345
*/
4446
@ThreadSafe
@@ -47,7 +49,7 @@ public final class OpenTelemetry {
4749
@Nullable private static volatile OpenTelemetry instance;
4850

4951
private final TracerFactory tracerFactory;
50-
private final Meter meter;
52+
private final MeterFactory meterFactory;
5153
private final DistributedContextManager contextManager;
5254

5355
/**
@@ -63,14 +65,15 @@ public static TracerFactory getTracerFactory() {
6365
}
6466

6567
/**
66-
* Returns a singleton {@link Meter}.
68+
* Returns a singleton {@link MeterFactory}.
6769
*
68-
* @return registered meter or default via {@link DefaultMeter#getInstance()}.
69-
* @throws IllegalStateException if a specified meter (via system properties) could not be found.
70+
* @return registered MeterFactory or default via {@link DefaultMeterFactory#getInstance()}.
71+
* @throws IllegalStateException if a specified MeterFactory (via system properties) could not be
72+
* found.
7073
* @since 0.1.0
7174
*/
72-
public static Meter getMeter() {
73-
return getInstance().meter;
75+
public static MeterFactory getMeterFactory() {
76+
return getInstance().meterFactory;
7477
}
7578

7679
/**
@@ -105,8 +108,11 @@ private OpenTelemetry() {
105108
? tracerFactoryProvider.create()
106109
: DefaultTracerFactoryProvider.getInstance().create();
107110

108-
MeterProvider meterProvider = loadSpi(MeterProvider.class);
109-
meter = meterProvider != null ? meterProvider.create() : DefaultMeter.getInstance();
111+
MeterFactoryProvider meterFactoryProvider = loadSpi(MeterFactoryProvider.class);
112+
meterFactory =
113+
meterFactoryProvider != null
114+
? meterFactoryProvider.create()
115+
: DefaultMeterFactoryProvider.getInstance().create();
110116
DistributedContextManagerProvider contextManagerProvider =
111117
loadSpi(DistributedContextManagerProvider.class);
112118
contextManager =

api/src/main/java/io/opentelemetry/metrics/CounterDouble.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
* <pre>{@code
3030
* class YourClass {
3131
*
32-
* private static final Meter meter = OpenTelemetry.getMeter();
32+
* private static final Meter meter = OpenTelemetry.getMeterFactory().get("my_library_name");
3333
* private static final CounterDouble counter =
3434
* meter.
3535
* .counterDoubleBuilder("processed_jobs")

api/src/main/java/io/opentelemetry/metrics/CounterLong.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
* <pre>{@code
3030
* class YourClass {
3131
*
32-
* private static final Meter meter = OpenTelemetry.getMeter();
32+
* private static final Meter meter = OpenTelemetry.getMeterFactory().get("my_library_name");
3333
* private static final CounterLong counter =
3434
* meter.
3535
* .counterLongBuilder("processed_jobs")
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/*
2+
* Copyright 2019, OpenTelemetry Authors
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package io.opentelemetry.metrics;
18+
19+
public class DefaultMeterFactory implements MeterFactory {
20+
21+
private static final MeterFactory instance = new DefaultMeterFactory();
22+
23+
public static MeterFactory getInstance() {
24+
return instance;
25+
}
26+
27+
@Override
28+
public Meter get(String instrumentationName) {
29+
return get(instrumentationName, null);
30+
}
31+
32+
@Override
33+
public Meter get(String instrumentationName, String instrumentationVersion) {
34+
return DefaultMeter.getInstance();
35+
}
36+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/*
2+
* Copyright 2019, OpenTelemetry Authors
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package io.opentelemetry.metrics;
18+
19+
import io.opentelemetry.metrics.spi.MeterFactoryProvider;
20+
21+
public class DefaultMeterFactoryProvider implements MeterFactoryProvider {
22+
private static final MeterFactoryProvider instance = new DefaultMeterFactoryProvider();
23+
24+
public static MeterFactoryProvider getInstance() {
25+
return instance;
26+
}
27+
28+
@Override
29+
public MeterFactory create() {
30+
return DefaultMeterFactory.getInstance();
31+
}
32+
}

api/src/main/java/io/opentelemetry/metrics/GaugeDouble.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
* <pre>{@code
3030
* class YourClass {
3131
*
32-
* private static final Meter meter = OpenTelemetry.getMeter();
32+
* private static final Meter meter = OpenTelemetry.getMeterFactory().get("my_library_name");
3333
* private static final GaugeDouble gauge =
3434
* meter
3535
* .gaugeDoubleBuilder("processed_jobs")

api/src/main/java/io/opentelemetry/metrics/GaugeLong.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
* <pre>{@code
3030
* class YourClass {
3131
*
32-
* private static final Meter meter = OpenTelemetry.getMeter();
32+
* private static final Meter meter = OpenTelemetry.getMeterFactory().get("my_library_name");
3333
* private static final GaugeLong gauge =
3434
* meter
3535
* .gaugeLongBuilder("processed_jobs")

api/src/main/java/io/opentelemetry/metrics/MeasureDouble.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
* <pre>{@code
2727
* class YourClass {
2828
*
29-
* private static final Meter meter = OpenTelemetry.getMeter();
29+
* private static final Meter meter = OpenTelemetry.getMeterFactory().get("my_library_name");
3030
* private static final MeasureDouble measure =
3131
* meter.
3232
* .measureDoubleBuilder("doWork_latency")

api/src/main/java/io/opentelemetry/metrics/MeasureLong.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
* <pre>{@code
2727
* class YourClass {
2828
*
29-
* private static final Meter meter = OpenTelemetry.getMeter();
29+
* private static final Meter meter = OpenTelemetry.getMeterFactory().get("my_library_name");
3030
* private static final MeasureLong measure =
3131
* meter.
3232
* .measureLongBuilder("doWork_latency")

api/src/main/java/io/opentelemetry/metrics/Meter.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
*
3636
* <pre>{@code
3737
* class MyClass {
38-
* private static final Meter meter = Metrics.getMeter();
38+
* private static final Meter meter = Metrics.getMeterFactory().get("my_library_name");
3939
* private static final MeasureDouble cacheHit = meter.measureDoubleBuilder("cache_hit").build();
4040
*
4141
* Response serverHandler(Request request) {
@@ -53,7 +53,7 @@
5353
*
5454
* <pre>{@code
5555
* class YourClass {
56-
* private static final Meter meter = Metrics.getMeter();
56+
* private static final Meter meter = Metrics.getMeterFactory().get("my_library_name");
5757
* private static final CounterLong collectionMetric =
5858
* meter
5959
* .counterLongBuilder("collection")
@@ -83,7 +83,7 @@
8383
*
8484
* <pre>{@code
8585
* class YourClass {
86-
* private static final Meter meter = Metrics.getMeter();
86+
* private static final Meter meter = Metrics.getMeterFactory().get("my_library_name");
8787
* private static final List<String> keys = Collections.singletonList("Name");
8888
* private static final List<String> values = Collections.singletonList("Inbound");
8989
* private static final GaugeDouble gauge =

0 commit comments

Comments
 (0)