Skip to content

Commit 088123e

Browse files
committed
extracting functions
1 parent 72c9816 commit 088123e

File tree

3 files changed

+80
-86
lines changed

3 files changed

+80
-86
lines changed

awsagentprovider/src/main/java/software/amazon/opentelemetry/javaagent/providers/AwsApplicationSignalsCustomizerProvider.java

Lines changed: 8 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,10 @@
2727
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider;
2828
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
2929
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
30-
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
3130
import io.opentelemetry.sdk.metrics.Aggregation;
32-
import io.opentelemetry.sdk.metrics.InstrumentSelector;
3331
import io.opentelemetry.sdk.metrics.InstrumentType;
3432
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
3533
import io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder;
36-
import io.opentelemetry.sdk.metrics.View;
3734
import io.opentelemetry.sdk.metrics.export.MetricExporter;
3835
import io.opentelemetry.sdk.metrics.export.MetricReader;
3936
import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader;
@@ -153,7 +150,9 @@ private SdkTracerProviderBuilder customizeTracerProviderBuilder(
153150
SdkTracerProviderBuilder tracerProviderBuilder, ConfigProperties configProps) {
154151
if (isApplicationSignalsEnabled(configProps)) {
155152
logger.info("AWS Application Signals enabled");
156-
Duration exportInterval = getMetricExportInterval(configProps);
153+
Duration exportInterval =
154+
SDKMeterProviderBuilder.getMetricExportInterval(
155+
configProps, DEFAULT_METRIC_EXPORT_INTERVAL, logger);
157156
// Construct and set local and remote attributes span processor
158157
tracerProviderBuilder.addSpanProcessor(
159158
AttributePropagatingSpanProcessorBuilder.create().build());
@@ -186,13 +185,16 @@ private SdkMeterProviderBuilder customizeMeterProvider(
186185
String jmxRuntimeScopeName = "io.opentelemetry.jmx";
187186
registeredScopeNames.add(jmxRuntimeScopeName);
188187

189-
configureMetricFilter(configProps, sdkMeterProviderBuilder, registeredScopeNames);
188+
SDKMeterProviderBuilder.configureMetricFilter(
189+
configProps, sdkMeterProviderBuilder, registeredScopeNames, logger);
190190

191191
MetricExporter metricsExporter =
192192
ApplicationSignalsExporterProvider.INSTANCE.createExporter(configProps);
193193
MetricReader metricReader =
194194
ScopeBasedPeriodicMetricReader.create(metricsExporter, registeredScopeNames)
195-
.setInterval(getMetricExportInterval(configProps))
195+
.setInterval(
196+
SDKMeterProviderBuilder.getMetricExportInterval(
197+
configProps, DEFAULT_METRIC_EXPORT_INTERVAL, logger))
196198
.build();
197199
sdkMeterProviderBuilder.registerMetricReader(metricReader);
198200

@@ -201,44 +203,6 @@ private SdkMeterProviderBuilder customizeMeterProvider(
201203
return sdkMeterProviderBuilder;
202204
}
203205

204-
private static void configureMetricFilter(
205-
ConfigProperties configProps,
206-
SdkMeterProviderBuilder sdkMeterProviderBuilder,
207-
Set<String> registeredScopeNames) {
208-
Set<String> exporterNames =
209-
DefaultConfigProperties.getSet(configProps, "otel.metrics.exporter");
210-
if (exporterNames.contains("none")) {
211-
for (String scope : registeredScopeNames) {
212-
sdkMeterProviderBuilder.registerView(
213-
InstrumentSelector.builder().setMeterName(scope).build(),
214-
View.builder().setAggregation(Aggregation.defaultAggregation()).build());
215-
216-
logger.log(Level.FINE, "Registered scope {0}", scope);
217-
}
218-
sdkMeterProviderBuilder.registerView(
219-
InstrumentSelector.builder().setName("*").build(),
220-
View.builder().setAggregation(Aggregation.drop()).build());
221-
}
222-
}
223-
224-
private static Duration getMetricExportInterval(ConfigProperties configProps) {
225-
Duration exportInterval =
226-
configProps.getDuration("otel.metric.export.interval", DEFAULT_METRIC_EXPORT_INTERVAL);
227-
logger.log(
228-
Level.FINE,
229-
String.format("AWS Application Signals Metrics export interval: %s", exportInterval));
230-
// Cap export interval to 60 seconds. This is currently required for metrics-trace correlation
231-
// to work correctly.
232-
if (exportInterval.compareTo(DEFAULT_METRIC_EXPORT_INTERVAL) > 0) {
233-
exportInterval = DEFAULT_METRIC_EXPORT_INTERVAL;
234-
logger.log(
235-
Level.INFO,
236-
String.format(
237-
"AWS Application Signals metrics export interval capped to %s", exportInterval));
238-
}
239-
return exportInterval;
240-
}
241-
242206
private SpanExporter customizeSpanExporter(
243207
SpanExporter spanExporter, ConfigProperties configProps) {
244208
if (isApplicationSignalsEnabled(configProps)) {

awsagentprovider/src/main/java/software/amazon/opentelemetry/javaagent/providers/OtelJMXMetricsCustomizerProvider.java

Lines changed: 8 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,9 @@
2121
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider;
2222
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
2323
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
24-
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
2524
import io.opentelemetry.sdk.metrics.Aggregation;
26-
import io.opentelemetry.sdk.metrics.InstrumentSelector;
2725
import io.opentelemetry.sdk.metrics.InstrumentType;
2826
import io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder;
29-
import io.opentelemetry.sdk.metrics.View;
3027
import io.opentelemetry.sdk.metrics.export.MetricExporter;
3128
import io.opentelemetry.sdk.metrics.export.MetricReader;
3229
import java.time.Duration;
@@ -36,8 +33,9 @@
3633
import java.util.logging.Logger;
3734

3835
/**
39-
* You can control when these customizations are applied using the property otel.jmx.enabled or the
40-
* environment variable OTEL_JMX_ENABLED_CONFIG. This flag is disabled by default.
36+
* You can control when these customizations are applied using both the properties -
37+
* otel.jmx.enabled and otel.jmx.exporter.metrics.endpoint or the environment variable
38+
* OTEL_JMX_ENABLED_CONFIG and OTEL_JMX_ENDPOINT_CONFIG. These flags are disabled by default.
4139
*/
4240
public class OtelJMXMetricsCustomizerProvider implements AutoConfigurationCustomizerProvider {
4341
private static final Duration DEFAULT_METRIC_EXPORT_INTERVAL = Duration.ofMinutes(1);
@@ -64,12 +62,15 @@ private SdkMeterProviderBuilder customizeMeterProvider(
6462
String jmxRuntimeScopeName = "io.opentelemetry.jmx";
6563
registeredScopeNames.add(jmxRuntimeScopeName);
6664

67-
configureMetricFilter(configProps, sdkMeterProviderBuilder, registeredScopeNames);
65+
SDKMeterProviderBuilder.configureMetricFilter(
66+
configProps, sdkMeterProviderBuilder, registeredScopeNames, logger);
6867

6968
MetricExporter metricsExporter = JMXExporterProvider.INSTANCE.createExporter(configProps);
7069
MetricReader metricReader =
7170
ScopeBasedPeriodicMetricReader.create(metricsExporter, registeredScopeNames)
72-
.setInterval(getMetricExportInterval(configProps))
71+
.setInterval(
72+
SDKMeterProviderBuilder.getMetricExportInterval(
73+
configProps, DEFAULT_METRIC_EXPORT_INTERVAL, logger))
7374
.build();
7475
sdkMeterProviderBuilder.registerMetricReader(metricReader);
7576

@@ -78,41 +79,6 @@ private SdkMeterProviderBuilder customizeMeterProvider(
7879
return sdkMeterProviderBuilder;
7980
}
8081

81-
private static void configureMetricFilter(
82-
ConfigProperties configProps,
83-
SdkMeterProviderBuilder sdkMeterProviderBuilder,
84-
Set<String> registeredScopeNames) {
85-
Set<String> exporterNames =
86-
DefaultConfigProperties.getSet(configProps, "otel.metrics.exporter");
87-
if (exporterNames.contains("none")) {
88-
for (String scope : registeredScopeNames) {
89-
sdkMeterProviderBuilder.registerView(
90-
InstrumentSelector.builder().setMeterName(scope).build(),
91-
View.builder().setAggregation(Aggregation.defaultAggregation()).build());
92-
93-
logger.log(Level.FINE, "Registered scope {0}", scope);
94-
}
95-
sdkMeterProviderBuilder.registerView(
96-
InstrumentSelector.builder().setName("*").build(),
97-
View.builder().setAggregation(Aggregation.drop()).build());
98-
}
99-
}
100-
101-
private static Duration getMetricExportInterval(ConfigProperties configProps) {
102-
Duration exportInterval =
103-
configProps.getDuration("otel.metric.export.interval", DEFAULT_METRIC_EXPORT_INTERVAL);
104-
logger.log(Level.FINE, String.format("Otel JMX Metrics export interval: %s", exportInterval));
105-
// Cap export interval to 60 seconds. This is currently required for metrics-trace correlation
106-
// to work correctly.
107-
if (exportInterval.compareTo(DEFAULT_METRIC_EXPORT_INTERVAL) > 0) {
108-
exportInterval = DEFAULT_METRIC_EXPORT_INTERVAL;
109-
logger.log(
110-
Level.INFO,
111-
String.format("Otel JMX Metrics export interval capped to %s", exportInterval));
112-
}
113-
return exportInterval;
114-
}
115-
11682
private enum JMXExporterProvider {
11783
INSTANCE;
11884

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/*
2+
* Copyright Amazon.com, Inc. or its affiliates.
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+
* A copy of the License is located at
7+
*
8+
* http://aws.amazon.com/apache2.0
9+
*
10+
* or in the "license" file accompanying this file. This file is distributed
11+
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
12+
* express or implied. See the License for the specific language governing
13+
* permissions and limitations under the License.
14+
*/
15+
16+
package software.amazon.opentelemetry.javaagent.providers;
17+
18+
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
19+
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
20+
import io.opentelemetry.sdk.metrics.Aggregation;
21+
import io.opentelemetry.sdk.metrics.InstrumentSelector;
22+
import io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder;
23+
import io.opentelemetry.sdk.metrics.View;
24+
import java.time.Duration;
25+
import java.util.Set;
26+
import java.util.logging.Level;
27+
import java.util.logging.Logger;
28+
29+
public class SDKMeterProviderBuilder {
30+
static void configureMetricFilter(
31+
ConfigProperties configProps,
32+
SdkMeterProviderBuilder sdkMeterProviderBuilder,
33+
Set<String> registeredScopeNames,
34+
Logger logger) {
35+
Set<String> exporterNames =
36+
DefaultConfigProperties.getSet(configProps, "otel.metrics.exporter");
37+
if (exporterNames.contains("none")) {
38+
for (String scope : registeredScopeNames) {
39+
sdkMeterProviderBuilder.registerView(
40+
InstrumentSelector.builder().setMeterName(scope).build(),
41+
View.builder().setAggregation(Aggregation.defaultAggregation()).build());
42+
43+
logger.log(Level.FINE, "Registered scope {0}", scope);
44+
}
45+
sdkMeterProviderBuilder.registerView(
46+
InstrumentSelector.builder().setName("*").build(),
47+
View.builder().setAggregation(Aggregation.drop()).build());
48+
}
49+
}
50+
51+
static Duration getMetricExportInterval(
52+
ConfigProperties configProps, Duration exportIntervalEnvVar, Logger logger) {
53+
Duration exportInterval =
54+
configProps.getDuration("otel.metric.export.interval", exportIntervalEnvVar);
55+
logger.log(Level.FINE, String.format("Metrics export interval: %s", exportInterval));
56+
// Cap export interval to 60 seconds. This is currently required for metrics-trace correlation
57+
// to work correctly.
58+
if (exportInterval.compareTo(exportIntervalEnvVar) > 0) {
59+
exportInterval = exportIntervalEnvVar;
60+
logger.log(Level.INFO, String.format("Metrics export interval capped to %s", exportInterval));
61+
}
62+
return exportInterval;
63+
}
64+
}

0 commit comments

Comments
 (0)