Skip to content

Commit ffbb4e8

Browse files
committed
extracting functions
1 parent 05a8209 commit ffbb4e8

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
@@ -26,13 +26,10 @@
2626
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider;
2727
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
2828
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
29-
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
3029
import io.opentelemetry.sdk.metrics.Aggregation;
31-
import io.opentelemetry.sdk.metrics.InstrumentSelector;
3230
import io.opentelemetry.sdk.metrics.InstrumentType;
3331
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
3432
import io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder;
35-
import io.opentelemetry.sdk.metrics.View;
3633
import io.opentelemetry.sdk.metrics.export.MetricExporter;
3734
import io.opentelemetry.sdk.metrics.export.MetricReader;
3835
import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader;
@@ -152,7 +149,9 @@ private SdkTracerProviderBuilder customizeTracerProviderBuilder(
152149
SdkTracerProviderBuilder tracerProviderBuilder, ConfigProperties configProps) {
153150
if (isApplicationSignalsEnabled(configProps)) {
154151
logger.info("AWS Application Signals enabled");
155-
Duration exportInterval = getMetricExportInterval(configProps);
152+
Duration exportInterval =
153+
SDKMeterProviderBuilder.getMetricExportInterval(
154+
configProps, DEFAULT_METRIC_EXPORT_INTERVAL, logger);
156155
// Construct and set local and remote attributes span processor
157156
tracerProviderBuilder.addSpanProcessor(
158157
AttributePropagatingSpanProcessorBuilder.create().build());
@@ -187,13 +186,16 @@ private SdkMeterProviderBuilder customizeMeterProvider(
187186
String jmxRuntimeScopeName = "io.opentelemetry.jmx";
188187
registeredScopeNames.add(jmxRuntimeScopeName);
189188

190-
configureMetricFilter(configProps, sdkMeterProviderBuilder, registeredScopeNames);
189+
SDKMeterProviderBuilder.configureMetricFilter(
190+
configProps, sdkMeterProviderBuilder, registeredScopeNames, logger);
191191

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

@@ -202,44 +204,6 @@ private SdkMeterProviderBuilder customizeMeterProvider(
202204
return sdkMeterProviderBuilder;
203205
}
204206

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