From a47afbc9597bdb246d1558263332192b8f3ddde8 Mon Sep 17 00:00:00 2001 From: Stuart Tettemer Date: Mon, 18 Sep 2023 21:24:41 -0500 Subject: [PATCH 01/13] Sketch of metering API --- .../elasticsearch/tracing/apm/APMTracer.java | 63 ++++++++++++++++++- .../tracing/apm/DoubleGauge.java | 19 ++++++ .../tracing/apm/DoubleHistogram.java | 19 ++++++ .../tracing/apm/OtelDoubleGauge.java | 50 +++++++++++++++ .../tracing/apm/OtelDoubleHistogram.java | 55 ++++++++++++++++ .../elasticsearch/tracing/apm/OtelHelper.java | 39 ++++++++++++ .../tracing/apm/APMTracerTests.java | 3 +- .../java/org/elasticsearch/tracing/Meter.java | 12 ++++ .../org/elasticsearch/tracing/MetricName.java | 41 ++++++++++++ 9 files changed, 298 insertions(+), 3 deletions(-) create mode 100644 modules/apm/src/main/java/org/elasticsearch/tracing/apm/DoubleGauge.java create mode 100644 modules/apm/src/main/java/org/elasticsearch/tracing/apm/DoubleHistogram.java create mode 100644 modules/apm/src/main/java/org/elasticsearch/tracing/apm/OtelDoubleGauge.java create mode 100644 modules/apm/src/main/java/org/elasticsearch/tracing/apm/OtelDoubleHistogram.java create mode 100644 modules/apm/src/main/java/org/elasticsearch/tracing/apm/OtelHelper.java create mode 100644 server/src/main/java/org/elasticsearch/tracing/Meter.java create mode 100644 server/src/main/java/org/elasticsearch/tracing/MetricName.java diff --git a/modules/apm/src/main/java/org/elasticsearch/tracing/apm/APMTracer.java b/modules/apm/src/main/java/org/elasticsearch/tracing/apm/APMTracer.java index 09eff0c820745..5933b2e66254d 100644 --- a/modules/apm/src/main/java/org/elasticsearch/tracing/apm/APMTracer.java +++ b/modules/apm/src/main/java/org/elasticsearch/tracing/apm/APMTracer.java @@ -10,6 +10,7 @@ import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.api.metrics.Meter; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.SpanBuilder; import io.opentelemetry.api.trace.SpanKind; @@ -34,6 +35,7 @@ import org.elasticsearch.core.Nullable; import org.elasticsearch.core.Releasable; import org.elasticsearch.tasks.Task; +import org.elasticsearch.tracing.MetricName; import org.elasticsearch.tracing.SpanId; import java.security.AccessController; @@ -62,6 +64,8 @@ public class APMTracer extends AbstractLifecycleComponent implements org.elastic /** Holds in-flight span information. */ private final Map spans = ConcurrentCollections.newConcurrentMap(); + private final Map doubleGauges = ConcurrentCollections.newConcurrentMap(); + private final Map doubleHistograms = ConcurrentCollections.newConcurrentMap(); private volatile boolean enabled; private volatile APMServices services; @@ -86,7 +90,7 @@ public void setNodeName(String nodeName) { /** * This class is used to make all OpenTelemetry services visible at once */ - record APMServices(Tracer tracer, OpenTelemetry openTelemetry) {} + record APMServices(Tracer tracer, Meter meter, OpenTelemetry openTelemetry) {} public APMTracer(Settings settings) { this.includeNames = APM_TRACING_NAMES_INCLUDE_SETTING.get(settings); @@ -150,8 +154,9 @@ APMServices createApmServices() { return AccessController.doPrivileged((PrivilegedAction) () -> { var openTelemetry = GlobalOpenTelemetry.get(); var tracer = openTelemetry.getTracer("elasticsearch", Version.CURRENT.toString()); + var meter = openTelemetry.getMeter("elasticsearch"); - return new APMServices(tracer, openTelemetry); + return new APMServices(tracer, meter, openTelemetry); }); } @@ -424,6 +429,11 @@ Map getSpans() { return spans; } + // TODO(stu): remove + APMServices getServices() { + return services; + } + private static CharacterRunAutomaton buildAutomaton(List includePatterns, List excludePatterns) { Automaton includeAutomaton = patternsToAutomaton(includePatterns); Automaton excludeAutomaton = patternsToAutomaton(excludePatterns); @@ -452,4 +462,53 @@ private static Automaton patternsToAutomaton(List patterns) { } return Operations.union(automata); } + + public DoubleGauge registerDoubleGauge(MetricName name, String description, T unit) { + return doubleGauges.compute(name, (k, v) -> { + if (v != null) { + throw new IllegalStateException("double gauge [" + name.getRawName() + "] already registered"); + } + return OtelDoubleGauge.build(services.meter, name, description, unit); + } + ); + } + + public void recordDoubleGauge(MetricName name, double value) { + DoubleGauge gauge = doubleGauges.get(name); + if (gauge != null) { + gauge.record(value); + } + } + + public void recordDoubleGauge(MetricName name, double value, Map attributes) { + DoubleGauge gauge = doubleGauges.get(name); + if (gauge != null) { + gauge.record(value, attributes); + } + } + + public DoubleHistogram registerDoubleHistogram(MetricName name, String description, T unit) { + return doubleHistograms.compute(name, (k, v) -> { + if (v != null) { + throw new IllegalStateException("double histogram [" + name.getRawName() + "] already registered"); + } + return OtelDoubleHistogram.build(services.meter, name, description, unit); + } + ); + } + + public void recordDoubleHistogram(MetricName name, double value) { + DoubleHistogram histogram = doubleHistograms.get(name); + if (histogram != null) { + histogram.record(value); + } + } + + public void recordDoubleHistogram(MetricName name, double value, Map attributes) { + DoubleHistogram histogram = doubleHistograms.get(name); + if (histogram != null) { + histogram.record(value, attributes); + } + } + } diff --git a/modules/apm/src/main/java/org/elasticsearch/tracing/apm/DoubleGauge.java b/modules/apm/src/main/java/org/elasticsearch/tracing/apm/DoubleGauge.java new file mode 100644 index 0000000000000..934321fad7e89 --- /dev/null +++ b/modules/apm/src/main/java/org/elasticsearch/tracing/apm/DoubleGauge.java @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.tracing.apm; + +import java.util.Map; + +/** + * Record non-additive double values + */ +public interface DoubleGauge { + void record(double value); + void record(double value, Map attributes); +} diff --git a/modules/apm/src/main/java/org/elasticsearch/tracing/apm/DoubleHistogram.java b/modules/apm/src/main/java/org/elasticsearch/tracing/apm/DoubleHistogram.java new file mode 100644 index 0000000000000..46d0b78b0b02e --- /dev/null +++ b/modules/apm/src/main/java/org/elasticsearch/tracing/apm/DoubleHistogram.java @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.tracing.apm; + +import org.elasticsearch.common.util.concurrent.ThreadContext; + +import java.util.Map; + +public interface DoubleHistogram { + void record(double value); + void record(double value, Map attributes); + void record(double value, Map attributes, ThreadContext threadContext); +} diff --git a/modules/apm/src/main/java/org/elasticsearch/tracing/apm/OtelDoubleGauge.java b/modules/apm/src/main/java/org/elasticsearch/tracing/apm/OtelDoubleGauge.java new file mode 100644 index 0000000000000..5b3c7f472c0d3 --- /dev/null +++ b/modules/apm/src/main/java/org/elasticsearch/tracing/apm/OtelDoubleGauge.java @@ -0,0 +1,50 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.tracing.apm; + +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.metrics.Meter; +import io.opentelemetry.api.metrics.ObservableDoubleMeasurement; + +import org.elasticsearch.tracing.MetricName; + +import java.util.Map; + +public class OtelDoubleGauge implements DoubleGauge { + private final ObservableDoubleMeasurement gauge; + private final MetricName name; + private final String description; + private final T unit; + + private OtelDoubleGauge(ObservableDoubleMeasurement gauge, MetricName name, String description, T unit) { + this.gauge = gauge; + this.name = name; + this.description = description; + this.unit = unit; + } + + public static OtelDoubleGauge build(Meter meter, MetricName name, String description, T unit) { + return new OtelDoubleGauge<>( + meter.gaugeBuilder(name.getRawName()).setDescription(description).setUnit(unit.toString()).buildObserver(), + name, + description, + unit + ); + } + + @Override + public void record(double value) { + gauge.record(value); + } + + @Override + public void record(double value, Map attributes) { + gauge.record(value, OtelHelper.fromMap(attributes)); + } +} diff --git a/modules/apm/src/main/java/org/elasticsearch/tracing/apm/OtelDoubleHistogram.java b/modules/apm/src/main/java/org/elasticsearch/tracing/apm/OtelDoubleHistogram.java new file mode 100644 index 0000000000000..0fcd9f0a96853 --- /dev/null +++ b/modules/apm/src/main/java/org/elasticsearch/tracing/apm/OtelDoubleHistogram.java @@ -0,0 +1,55 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.tracing.apm; + +import io.opentelemetry.api.metrics.Meter; +import io.opentelemetry.api.metrics.ObservableDoubleMeasurement; + +import org.elasticsearch.common.util.concurrent.ThreadContext; +import org.elasticsearch.tracing.MetricName; + +import java.util.Map; + +public class OtelDoubleHistogram implements DoubleHistogram { + private final io.opentelemetry.api.metrics.DoubleHistogram histogram; + private final MetricName name; + private final String description; + private final T unit; + + public OtelDoubleHistogram(io.opentelemetry.api.metrics.DoubleHistogram histogram, MetricName name, String description, T unit) { + this.histogram = histogram; + this.name = name; + this.description = description; + this.unit = unit; + } + + public static OtelDoubleHistogram build(Meter meter, MetricName name, String description, T unit) { + return new OtelDoubleHistogram<>( + meter.histogramBuilder(name.getRawName()).setDescription(description).setUnit(unit.toString()).build(), + name, + description, + unit + ); + } + + @Override + public void record(double value) { + histogram.record(value); + } + + @Override + public void record(double value, Map attributes) { + histogram.record(value, OtelHelper.fromMap(attributes)); + } + + @Override + public void record(double value, Map attributes, ThreadContext threadContext) { + throw new UnsupportedOperationException("unimplemented"); + } +} diff --git a/modules/apm/src/main/java/org/elasticsearch/tracing/apm/OtelHelper.java b/modules/apm/src/main/java/org/elasticsearch/tracing/apm/OtelHelper.java new file mode 100644 index 0000000000000..ab8ec870d0bcc --- /dev/null +++ b/modules/apm/src/main/java/org/elasticsearch/tracing/apm/OtelHelper.java @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.tracing.apm; + +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.context.Context; + +import java.util.Map; + +class OtelHelper { + static Attributes fromMap(Map attributes) { + if (attributes == null || attributes.isEmpty()) { + return Attributes.empty(); + } + var builder = Attributes.builder(); + attributes.forEach((k, v) -> { + if (v instanceof String value) { + builder.put(k, value); + } else if (v instanceof Long value) { + builder.put(k, value); + } else if (v instanceof Double value) { + builder.put(k, value); + } else if (v instanceof Boolean value) { + builder.put(k, value); + } else { + throw new IllegalArgumentException( + "attributes do not support value type of [" + v.getClass().getCanonicalName() + "]" + ); + } + }); + return builder.build(); + } +} diff --git a/modules/apm/src/test/java/org/elasticsearch/tracing/apm/APMTracerTests.java b/modules/apm/src/test/java/org/elasticsearch/tracing/apm/APMTracerTests.java index e9654229fbb77..4b394cd1ec85e 100644 --- a/modules/apm/src/test/java/org/elasticsearch/tracing/apm/APMTracerTests.java +++ b/modules/apm/src/test/java/org/elasticsearch/tracing/apm/APMTracerTests.java @@ -10,6 +10,7 @@ import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.metrics.Meter; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.SpanBuilder; import io.opentelemetry.api.trace.SpanContext; @@ -269,7 +270,7 @@ APMServices createApmServices() { // spy the spanBuilder return new SpySpanBuilder(apmServices.tracer(), spanName); }).when(mockTracer).spanBuilder(anyString()); - return new APMServices(mockTracer, apmServices.openTelemetry()); + return new APMServices(mockTracer, mock(Meter.class), apmServices.openTelemetry()); } Instant getSpanStartTime(String spanName) { diff --git a/server/src/main/java/org/elasticsearch/tracing/Meter.java b/server/src/main/java/org/elasticsearch/tracing/Meter.java new file mode 100644 index 0000000000000..e25a090a62d93 --- /dev/null +++ b/server/src/main/java/org/elasticsearch/tracing/Meter.java @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.tracing; + +public interface Meter { +} diff --git a/server/src/main/java/org/elasticsearch/tracing/MetricName.java b/server/src/main/java/org/elasticsearch/tracing/MetricName.java new file mode 100644 index 0000000000000..c92b709b3027f --- /dev/null +++ b/server/src/main/java/org/elasticsearch/tracing/MetricName.java @@ -0,0 +1,41 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.tracing; + +import java.util.Objects; + +public class MetricName { + private final String rawName; + + public MetricName(String rawName) { + this.rawName = rawName; + } + + public String getRawName() { + return rawName; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + MetricName metricName = (MetricName) o; + return Objects.equals(getRawName(), metricName.getRawName()); + } + + @Override + public int hashCode() { + return Objects.hash(rawName); + } + + @Override + public String toString() { + return "MetricName[" + rawName + "]"; + } +} From d73297c998930021fff52375355ed8a9b31270ce Mon Sep 17 00:00:00 2001 From: Przemyslaw Gomulka Date: Tue, 19 Sep 2023 13:39:26 +0200 Subject: [PATCH 02/13] rename, extract Meter interface, compiling --- TRACING.md | 2 +- .../analysis/common/CommonAnalysisPlugin.java | 4 +- .../PredicateTokenScriptFilterTests.java | 19 ++- .../ScriptedConditionTokenFilterTests.java | 19 ++- modules/apm/src/main/java/module-info.java | 2 +- .../{tracing => telemetry}/apm/APM.java | 28 +++-- .../apm/APMAgentSettings.java | 2 +- .../telemetry/apm/APMMetric.java | 116 ++++++++++++++++++ .../telemetry/apm/APMTelemetryProvider.java | 32 +++++ .../{tracing => telemetry}/apm/APMTracer.java | 73 ++--------- .../telemetry/apm/OtelCounter.java | 48 ++++++++ .../apm/OtelDoubleGauge.java | 6 +- .../apm/OtelDoubleHistogram.java | 6 +- .../apm/OtelHelper.java | 7 +- .../apm/APMAgentSettingsTests.java | 6 +- .../apm/APMTracerTests.java | 10 +- .../datastreams/DataStreamsPlugin.java | 4 +- .../ingest/geoip/IngestGeoIpPlugin.java | 4 +- .../painless/PainlessPlugin.java | 4 +- .../elasticsearch/reindex/ReindexPlugin.java | 4 +- .../ReindexFromRemoteWithAuthTests.java | 4 +- .../azure/AzureRepositoryPlugin.java | 4 +- .../azure/AzureStorageServiceTests.java | 4 +- .../repositories/s3/S3RepositoryPlugin.java | 4 +- .../repository/url/URLRepositoryPlugin.java | 4 +- .../RuntimeFieldsCommonPlugin.java | 4 +- .../elasticsearch/systemd/SystemdPlugin.java | 4 +- .../systemd/SystemdPluginTests.java | 12 +- .../netty4/Netty4HttpServerTransport.java | 2 +- .../transport/netty4/Netty4Plugin.java | 2 +- .../http/netty4/Netty4BadRequestTests.java | 2 +- .../Netty4HttpServerPipeliningTests.java | 2 +- .../Netty4HttpServerTransportTests.java | 2 +- .../org/elasticsearch/tracing/apm/ApmIT.java | 2 +- .../elasticsearch/test/CustomRestPlugin.java | 2 +- .../http/ClusterInfoRestCancellationIT.java | 2 +- .../cluster/SimpleClusterStateIT.java | 4 +- .../metadata/TemplateUpgradeServiceIT.java | 6 +- .../health/GetHealthActionIT.java | 4 +- .../elasticsearch/health/HealthServiceIT.java | 4 +- .../elasticsearch/index/FinalPipelineIT.java | 4 +- .../index/SettingsListenerIT.java | 4 +- .../ingest/IngestAsyncProcessorIT.java | 4 +- server/src/main/java/module-info.java | 3 +- .../elasticsearch/action/ActionModule.java | 2 +- .../common/network/NetworkModule.java | 2 +- .../common/util/concurrent/ThreadContext.java | 4 +- .../http/AbstractHttpServerTransport.java | 2 +- .../http/DefaultRestChannel.java | 4 +- .../java/org/elasticsearch/node/Node.java | 20 +-- .../elasticsearch/plugins/NetworkPlugin.java | 2 +- .../org/elasticsearch/plugins/Plugin.java | 6 +- ...TracerPlugin.java => TelemetryPlugin.java} | 6 +- .../interceptor/RestServerActionPlugin.java | 2 +- .../elasticsearch/rest/RestController.java | 2 +- .../elasticsearch/search/SearchService.java | 2 +- .../org/elasticsearch/tasks/TaskManager.java | 2 +- .../{tracing => telemetry}/Meter.java | 5 +- .../{tracing => telemetry}/MetricName.java | 2 +- .../{tracing => telemetry}/SpanId.java | 2 +- .../telemetry/TelemetryProvider.java | 31 +++++ .../{tracing => telemetry}/Tracer.java | 2 +- .../telemetry/metric/Counter.java | 27 ++++ .../telemetry/metric}/DoubleGauge.java | 16 ++- .../telemetry/metric}/DoubleHistogram.java | 21 +++- .../telemetry/metric/Metric.java | 36 ++++++ .../transport/RequestHandlerRegistry.java | 2 +- .../transport/TransportService.java | 2 +- .../action/ActionModuleTests.java | 2 +- .../node/tasks/TaskManagerTestCase.java | 2 +- .../cluster/coordination/JoinHelperTests.java | 2 +- .../common/network/NetworkModuleTests.java | 2 +- .../discovery/PeerFinderTests.java | 2 +- .../AbstractHttpServerTransportTests.java | 2 +- .../http/DefaultRestChannelTests.java | 2 +- .../indices/cluster/ClusterStateChanges.java | 2 +- .../org/elasticsearch/node/NodeTests.java | 4 +- .../plugins/PluginIntrospectorTests.java | 4 +- .../rest/RestControllerTests.java | 2 +- .../rest/RestHttpResponseHeadersTests.java | 2 +- .../indices/RestValidateQueryActionTests.java | 2 +- .../snapshots/SnapshotResiliencyTests.java | 2 +- .../elasticsearch/tasks/TaskManagerTests.java | 2 +- .../transport/InboundHandlerTests.java | 2 +- .../test/seektracker/SeekTrackerPlugin.java | 4 +- .../java/org/elasticsearch/node/MockNode.java | 2 +- .../search/MockSearchService.java | 2 +- .../test/ClusterServiceUtils.java | 2 +- .../test/MockIndexEventListener.java | 4 +- .../test/rest/RestActionTestCase.java | 2 +- .../test/tasks/MockTaskManager.java | 2 +- .../test/transport/MockTransport.java | 2 +- .../test/transport/MockTransportService.java | 2 +- .../transport/DisruptableMockTransport.java | 2 +- .../xpack/analytics/AnalyticsPlugin.java | 4 +- .../xpack/async/AsyncResultsIndexPlugin.java | 4 +- .../xpack/autoscaling/Autoscaling.java | 4 +- .../java/org/elasticsearch/xpack/ccr/Ccr.java | 4 +- .../elasticsearch/xpack/core/XPackPlugin.java | 4 +- .../core/LocalStateCompositeXPackPlugin.java | 9 +- .../action/RestTermsEnumActionTests.java | 2 +- .../xpack/deprecation/Deprecation.java | 4 +- .../xpack/enrich/EnrichPlugin.java | 4 +- .../xpack/application/EnterpriseSearch.java | 4 +- .../LocalStateEnterpriseSearch.java | 6 +- .../xpack/eql/plugin/EqlPlugin.java | 4 +- .../xpack/esql/plugin/EsqlPlugin.java | 4 +- .../org/elasticsearch/xpack/fleet/Fleet.java | 4 +- .../xpack/idp/IdentityProviderPlugin.java | 4 +- .../xpack/ilm/UpdateSettingsStepTests.java | 4 +- .../xpack/ilm/IndexLifecycle.java | 4 +- .../xpack/inference/InferencePlugin.java | 4 +- .../xpack/ml/MachineLearning.java | 4 +- .../xpack/monitoring/Monitoring.java | 4 +- .../xpack/lucene/bwc/OldLuceneVersions.java | 4 +- .../xpack/profiling/ProfilingPlugin.java | 4 +- .../SearchableSnapshots.java | 4 +- .../xpack/security/Security.java | 5 +- .../xpack/security/SecurityTests.java | 2 +- .../SecurityNetty4HeaderSizeLimitTests.java | 2 +- ...ecurityNetty4HttpServerTransportTests.java | 2 +- .../xpack/shutdown/NodeShutdownTasksIT.java | 4 +- .../xpack/shutdown/ShutdownPlugin.java | 4 +- .../xpack/slm/SnapshotLifecycle.java | 4 +- .../xpack/sql/plugin/SqlPlugin.java | 4 +- .../xpack/stack/StackPlugin.java | 4 +- .../xpack/transform/Transform.java | 4 +- .../votingonly/VotingOnlyNodePlugin.java | 4 +- .../elasticsearch/xpack/watcher/Watcher.java | 4 +- .../xpack/watcher/WatcherPluginTests.java | 4 +- 130 files changed, 598 insertions(+), 293 deletions(-) rename modules/apm/src/main/java/org/elasticsearch/{tracing => telemetry}/apm/APM.java (82%) rename modules/apm/src/main/java/org/elasticsearch/{tracing => telemetry}/apm/APMAgentSettings.java (99%) create mode 100644 modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java create mode 100644 modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTelemetryProvider.java rename modules/apm/src/main/java/org/elasticsearch/{tracing => telemetry}/apm/APMTracer.java (85%) create mode 100644 modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelCounter.java rename modules/apm/src/main/java/org/elasticsearch/{tracing => telemetry}/apm/OtelDoubleGauge.java (91%) rename modules/apm/src/main/java/org/elasticsearch/{tracing => telemetry}/apm/OtelDoubleHistogram.java (92%) rename modules/apm/src/main/java/org/elasticsearch/{tracing => telemetry}/apm/OtelHelper.java (81%) rename modules/apm/src/test/java/org/elasticsearch/{tracing => telemetry}/apm/APMAgentSettingsTests.java (94%) rename modules/apm/src/test/java/org/elasticsearch/{tracing => telemetry}/apm/APMTracerTests.java (97%) rename server/src/main/java/org/elasticsearch/plugins/{TracerPlugin.java => TelemetryPlugin.java} (74%) rename server/src/main/java/org/elasticsearch/{tracing => telemetry}/Meter.java (84%) rename server/src/main/java/org/elasticsearch/{tracing => telemetry}/MetricName.java (96%) rename server/src/main/java/org/elasticsearch/{tracing => telemetry}/SpanId.java (97%) create mode 100644 server/src/main/java/org/elasticsearch/telemetry/TelemetryProvider.java rename server/src/main/java/org/elasticsearch/{tracing => telemetry}/Tracer.java (99%) create mode 100644 server/src/main/java/org/elasticsearch/telemetry/metric/Counter.java rename {modules/apm/src/main/java/org/elasticsearch/tracing/apm => server/src/main/java/org/elasticsearch/telemetry/metric}/DoubleGauge.java (66%) rename {modules/apm/src/main/java/org/elasticsearch/tracing/apm => server/src/main/java/org/elasticsearch/telemetry/metric}/DoubleHistogram.java (61%) create mode 100644 server/src/main/java/org/elasticsearch/telemetry/metric/Metric.java diff --git a/TRACING.md b/TRACING.md index 3935a94eff160..6221305ef455b 100644 --- a/TRACING.md +++ b/TRACING.md @@ -158,6 +158,6 @@ explicitly opening a scope via the `Tracer`. [otel]: https://opentelemetry.io/ [thread-context]: ./server/src/main/java/org/elasticsearch/common/util/concurrent/ThreadContext.java [w3c]: https://www.w3.org/TR/trace-context/ -[tracing]: ./server/src/main/java/org/elasticsearch/tracing +[tracing]: ./server/src/main/java/org/elasticsearch/telemetry [agent-config]: https://www.elastic.co/guide/en/apm/agent/java/master/configuration.html [agent]: https://www.elastic.co/guide/en/apm/agent/java/current/index.html diff --git a/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/CommonAnalysisPlugin.java b/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/CommonAnalysisPlugin.java index c6104e92b0b3e..dd2fbe8a19bab 100644 --- a/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/CommonAnalysisPlugin.java +++ b/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/CommonAnalysisPlugin.java @@ -131,8 +131,8 @@ import org.elasticsearch.script.ScriptContext; import org.elasticsearch.script.ScriptService; import org.elasticsearch.synonyms.SynonymsManagementAPIService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.tartarus.snowball.ext.DutchStemmer; @@ -168,7 +168,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/modules/analysis-common/src/test/java/org/elasticsearch/analysis/common/PredicateTokenScriptFilterTests.java b/modules/analysis-common/src/test/java/org/elasticsearch/analysis/common/PredicateTokenScriptFilterTests.java index 9a915d0c056d5..7b60c1a64abb6 100644 --- a/modules/analysis-common/src/test/java/org/elasticsearch/analysis/common/PredicateTokenScriptFilterTests.java +++ b/modules/analysis-common/src/test/java/org/elasticsearch/analysis/common/PredicateTokenScriptFilterTests.java @@ -28,10 +28,10 @@ import org.elasticsearch.script.Script; import org.elasticsearch.script.ScriptContext; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.test.ESTokenStreamTestCase; import org.elasticsearch.test.IndexSettingsModule; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import java.io.IOException; import java.util.Collections; @@ -68,7 +68,22 @@ public FactoryType compile(Script script, ScriptContext FactoryType compile(Script script, ScriptContext tracer = new SetOnce<>(); +public class APM extends Plugin implements NetworkPlugin, TelemetryPlugin { + private final SetOnce telemetryProvider = new SetOnce<>(); private final Settings settings; public APM(Settings settings) { @@ -62,10 +62,10 @@ public APM(Settings settings) { } @Override - public Tracer getTracer(Settings settings) { - final APMTracer apmTracer = new APMTracer(settings); - tracer.set(apmTracer); - return apmTracer; + public TelemetryProvider getTelemetryProvider(Settings settings) { + final APMTelemetryProvider apmTelemetryProvider = new APMTelemetryProvider(settings); + telemetryProvider.set(apmTelemetryProvider); + return apmTelemetryProvider; } @Override @@ -81,11 +81,11 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer unused, + TelemetryProvider unused, AllocationService allocationService, IndicesService indicesService ) { - final APMTracer apmTracer = tracer.get(); + final APMTracer apmTracer = telemetryProvider.get().getTracer(); apmTracer.setClusterName(clusterService.getClusterName().value()); apmTracer.setNodeName(clusterService.getNodeName()); @@ -94,7 +94,9 @@ public Collection createComponents( apmAgentSettings.syncAgentSystemProperties(settings); apmAgentSettings.addClusterSettingsListeners(clusterService, apmTracer); - return List.of(apmTracer); + final APMMetric apmMetric = telemetryProvider.get().getMetric(); + + return List.of(apmTracer, apmMetric); } @Override diff --git a/modules/apm/src/main/java/org/elasticsearch/tracing/apm/APMAgentSettings.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMAgentSettings.java similarity index 99% rename from modules/apm/src/main/java/org/elasticsearch/tracing/apm/APMAgentSettings.java rename to modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMAgentSettings.java index 3c75fe2e94c92..d0fd6c87fe4b6 100644 --- a/modules/apm/src/main/java/org/elasticsearch/tracing/apm/APMAgentSettings.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMAgentSettings.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.tracing.apm; +package org.elasticsearch.telemetry.apm; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java new file mode 100644 index 0000000000000..f88cd4b84cd72 --- /dev/null +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java @@ -0,0 +1,116 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.telemetry.apm; + +import io.opentelemetry.api.GlobalOpenTelemetry; +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.api.metrics.Meter; + +import org.elasticsearch.common.component.AbstractLifecycleComponent; +import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.common.util.concurrent.ConcurrentCollections; +import org.elasticsearch.telemetry.MetricName; +import org.elasticsearch.telemetry.metric.Counter; +import org.elasticsearch.telemetry.metric.DoubleGauge; +import org.elasticsearch.telemetry.metric.DoubleHistogram; + +import java.security.AccessController; +import java.security.PrivilegedAction; +import java.util.Map; + +import static org.elasticsearch.telemetry.apm.APMAgentSettings.APM_ENABLED_SETTING; + +public class APMMetric extends AbstractLifecycleComponent implements org.elasticsearch.telemetry.metric.Metric { + private final Map counters = ConcurrentCollections.newConcurrentMap(); + private final Map doubleGauges = ConcurrentCollections.newConcurrentMap(); + private final Map doubleHistograms = ConcurrentCollections.newConcurrentMap(); + private volatile boolean enabled; + private volatile APMServices services; + + record APMServices(Meter meter, OpenTelemetry openTelemetry) {} + + // TODO remove duplication between APMTracer and APMMetric. enabled, create apm services etc + public APMMetric(Settings settings) { + this.enabled = APM_ENABLED_SETTING.get(settings); + } + + void setEnabled(boolean enabled) { + this.enabled = enabled; + if (enabled) { + this.services = createApmServices(); + } else { + destroyApmServices(); + } + } + + @Override + protected void doStart() { + if (enabled) { + this.services = createApmServices(); + } + } + + @Override + protected void doStop() { + destroyApmServices(); + } + + @Override + protected void doClose() {} + + @Override + + public Counter registerCounter(MetricName name, String description, T unit) { + return counters.compute(name, (k, v) -> { + if (v != null) { + throw new IllegalStateException("double gauge [" + name.getRawName() + "] already registered"); + } + return OtelCounter.build(services.meter, name, description, unit); + }); + } + + @Override + + public DoubleGauge registerDoubleGauge(MetricName name, String description, T unit) { + return doubleGauges.compute(name, (k, v) -> { + if (v != null) { + throw new IllegalStateException("double gauge [" + name.getRawName() + "] already registered"); + } + return OtelDoubleGauge.build(services.meter, name, description, unit); + }); + } + + @Override + + public DoubleHistogram registerDoubleHistogram(MetricName name, String description, T unit) { + return doubleHistograms.compute(name, (k, v) -> { + if (v != null) { + throw new IllegalStateException("double histogram [" + name.getRawName() + "] already registered"); + } + return OtelDoubleHistogram.build(services.meter, name, description, unit); + }); + } + + APMServices createApmServices() { + assert this.enabled; + assert this.services == null; + + return AccessController.doPrivileged((PrivilegedAction) () -> { + var openTelemetry = GlobalOpenTelemetry.get(); + var meter = openTelemetry.getMeter("elasticsearch"); + + return new APMServices(meter, openTelemetry); + }); + } + + private void destroyApmServices() { + this.services = null; + } + +} diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTelemetryProvider.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTelemetryProvider.java new file mode 100644 index 0000000000000..eb17b9d0e19aa --- /dev/null +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTelemetryProvider.java @@ -0,0 +1,32 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.telemetry.apm; + +import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.telemetry.TelemetryProvider; + +public class APMTelemetryProvider implements TelemetryProvider { + private Settings settings; + + public APMTelemetryProvider(Settings settings) { + this.settings = settings; + } + + @Override + public APMTracer getTracer() { + final APMTracer apmTracer = new APMTracer(settings); + return apmTracer; + } + + @Override + public APMMetric getMetric() { + final APMMetric apmMetric = new APMMetric(settings); + return apmMetric; + } +} diff --git a/modules/apm/src/main/java/org/elasticsearch/tracing/apm/APMTracer.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTracer.java similarity index 85% rename from modules/apm/src/main/java/org/elasticsearch/tracing/apm/APMTracer.java rename to modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTracer.java index 5933b2e66254d..0d133dc49994a 100644 --- a/modules/apm/src/main/java/org/elasticsearch/tracing/apm/APMTracer.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTracer.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.tracing.apm; +package org.elasticsearch.telemetry.apm; import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.api.OpenTelemetry; @@ -35,8 +35,7 @@ import org.elasticsearch.core.Nullable; import org.elasticsearch.core.Releasable; import org.elasticsearch.tasks.Task; -import org.elasticsearch.tracing.MetricName; -import org.elasticsearch.tracing.SpanId; +import org.elasticsearch.telemetry.SpanId; import java.security.AccessController; import java.security.PrivilegedAction; @@ -45,27 +44,25 @@ import java.util.Map; import java.util.stream.Collectors; -import static org.elasticsearch.tracing.apm.APMAgentSettings.APM_ENABLED_SETTING; -import static org.elasticsearch.tracing.apm.APMAgentSettings.APM_TRACING_NAMES_EXCLUDE_SETTING; -import static org.elasticsearch.tracing.apm.APMAgentSettings.APM_TRACING_NAMES_INCLUDE_SETTING; -import static org.elasticsearch.tracing.apm.APMAgentSettings.APM_TRACING_SANITIZE_FIELD_NAMES; +import static org.elasticsearch.telemetry.apm.APMAgentSettings.APM_ENABLED_SETTING; +import static org.elasticsearch.telemetry.apm.APMAgentSettings.APM_TRACING_NAMES_EXCLUDE_SETTING; +import static org.elasticsearch.telemetry.apm.APMAgentSettings.APM_TRACING_NAMES_INCLUDE_SETTING; +import static org.elasticsearch.telemetry.apm.APMAgentSettings.APM_TRACING_SANITIZE_FIELD_NAMES; /** - * This is an implementation of the {@link org.elasticsearch.tracing.Tracer} interface, which uses + * This is an implementation of the {@link org.elasticsearch.telemetry.Tracer} interface, which uses * the OpenTelemetry API to capture spans. *

* This module doesn't provide an implementation of the OTel API. Normally that would mean that the * API's default, no-op implementation would be used. However, when the APM Java is attached, it * intercepts the {@link GlobalOpenTelemetry} class and provides its own implementation instead. */ -public class APMTracer extends AbstractLifecycleComponent implements org.elasticsearch.tracing.Tracer { +public class APMTracer extends AbstractLifecycleComponent implements org.elasticsearch.telemetry.Tracer { private static final Logger logger = LogManager.getLogger(APMTracer.class); /** Holds in-flight span information. */ private final Map spans = ConcurrentCollections.newConcurrentMap(); - private final Map doubleGauges = ConcurrentCollections.newConcurrentMap(); - private final Map doubleHistograms = ConcurrentCollections.newConcurrentMap(); private volatile boolean enabled; private volatile APMServices services; @@ -154,7 +151,7 @@ APMServices createApmServices() { return AccessController.doPrivileged((PrivilegedAction) () -> { var openTelemetry = GlobalOpenTelemetry.get(); var tracer = openTelemetry.getTracer("elasticsearch", Version.CURRENT.toString()); - var meter = openTelemetry.getMeter("elasticsearch"); + var meter = openTelemetry.getMeter("elasticsearch"); return new APMServices(tracer, meter, openTelemetry); }); @@ -329,8 +326,8 @@ private void setSpanAttributes(@Nullable Map spanAttributes, Spa spanBuilder.setSpanKind(SpanKind.INTERNAL); } - spanBuilder.setAttribute(org.elasticsearch.tracing.Tracer.AttributeKeys.NODE_NAME, nodeName); - spanBuilder.setAttribute(org.elasticsearch.tracing.Tracer.AttributeKeys.CLUSTER_NAME, clusterName); + spanBuilder.setAttribute(org.elasticsearch.telemetry.Tracer.AttributeKeys.NODE_NAME, nodeName); + spanBuilder.setAttribute(org.elasticsearch.telemetry.Tracer.AttributeKeys.CLUSTER_NAME, clusterName); } private void setSpanAttributes(ThreadContext threadContext, @Nullable Map spanAttributes, SpanBuilder spanBuilder) { @@ -463,52 +460,4 @@ private static Automaton patternsToAutomaton(List patterns) { return Operations.union(automata); } - public DoubleGauge registerDoubleGauge(MetricName name, String description, T unit) { - return doubleGauges.compute(name, (k, v) -> { - if (v != null) { - throw new IllegalStateException("double gauge [" + name.getRawName() + "] already registered"); - } - return OtelDoubleGauge.build(services.meter, name, description, unit); - } - ); - } - - public void recordDoubleGauge(MetricName name, double value) { - DoubleGauge gauge = doubleGauges.get(name); - if (gauge != null) { - gauge.record(value); - } - } - - public void recordDoubleGauge(MetricName name, double value, Map attributes) { - DoubleGauge gauge = doubleGauges.get(name); - if (gauge != null) { - gauge.record(value, attributes); - } - } - - public DoubleHistogram registerDoubleHistogram(MetricName name, String description, T unit) { - return doubleHistograms.compute(name, (k, v) -> { - if (v != null) { - throw new IllegalStateException("double histogram [" + name.getRawName() + "] already registered"); - } - return OtelDoubleHistogram.build(services.meter, name, description, unit); - } - ); - } - - public void recordDoubleHistogram(MetricName name, double value) { - DoubleHistogram histogram = doubleHistograms.get(name); - if (histogram != null) { - histogram.record(value); - } - } - - public void recordDoubleHistogram(MetricName name, double value, Map attributes) { - DoubleHistogram histogram = doubleHistograms.get(name); - if (histogram != null) { - histogram.record(value, attributes); - } - } - } diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelCounter.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelCounter.java new file mode 100644 index 0000000000000..4f064313b1e11 --- /dev/null +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelCounter.java @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.telemetry.apm; + +import io.opentelemetry.api.metrics.LongCounter; +import io.opentelemetry.api.metrics.Meter; + +import org.elasticsearch.telemetry.MetricName; +import org.elasticsearch.telemetry.metric.Counter; + +public class OtelCounter implements Counter { + private final LongCounter counter; + private final MetricName name; + private final String description; + private final T unit; + + private OtelCounter(LongCounter counter, MetricName name, String description, T unit) { + this.counter = counter; + this.name = name; + this.description = description; + this.unit = unit; + } + + public static OtelCounter build(Meter meter, MetricName name, String description, T unit) { + return new OtelCounter<>( + meter.counterBuilder(name.getRawName()).setDescription(description).setUnit(unit.toString()).build(), + name, + description, + unit + ); + } + + @Override + public void increment() { + counter.add(1L); + } + + @Override + public void incrementBy(long inc) { + counter.add(inc); + } +} diff --git a/modules/apm/src/main/java/org/elasticsearch/tracing/apm/OtelDoubleGauge.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleGauge.java similarity index 91% rename from modules/apm/src/main/java/org/elasticsearch/tracing/apm/OtelDoubleGauge.java rename to modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleGauge.java index 5b3c7f472c0d3..ffb2224cc3ece 100644 --- a/modules/apm/src/main/java/org/elasticsearch/tracing/apm/OtelDoubleGauge.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleGauge.java @@ -6,13 +6,13 @@ * Side Public License, v 1. */ -package org.elasticsearch.tracing.apm; +package org.elasticsearch.telemetry.apm; -import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.metrics.Meter; import io.opentelemetry.api.metrics.ObservableDoubleMeasurement; -import org.elasticsearch.tracing.MetricName; +import org.elasticsearch.telemetry.MetricName; +import org.elasticsearch.telemetry.metric.DoubleGauge; import java.util.Map; diff --git a/modules/apm/src/main/java/org/elasticsearch/tracing/apm/OtelDoubleHistogram.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleHistogram.java similarity index 92% rename from modules/apm/src/main/java/org/elasticsearch/tracing/apm/OtelDoubleHistogram.java rename to modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleHistogram.java index 0fcd9f0a96853..78fe9cdf8575c 100644 --- a/modules/apm/src/main/java/org/elasticsearch/tracing/apm/OtelDoubleHistogram.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleHistogram.java @@ -6,13 +6,13 @@ * Side Public License, v 1. */ -package org.elasticsearch.tracing.apm; +package org.elasticsearch.telemetry.apm; import io.opentelemetry.api.metrics.Meter; -import io.opentelemetry.api.metrics.ObservableDoubleMeasurement; import org.elasticsearch.common.util.concurrent.ThreadContext; -import org.elasticsearch.tracing.MetricName; +import org.elasticsearch.telemetry.MetricName; +import org.elasticsearch.telemetry.metric.DoubleHistogram; import java.util.Map; diff --git a/modules/apm/src/main/java/org/elasticsearch/tracing/apm/OtelHelper.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelHelper.java similarity index 81% rename from modules/apm/src/main/java/org/elasticsearch/tracing/apm/OtelHelper.java rename to modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelHelper.java index ab8ec870d0bcc..370887e35fe71 100644 --- a/modules/apm/src/main/java/org/elasticsearch/tracing/apm/OtelHelper.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelHelper.java @@ -6,10 +6,9 @@ * Side Public License, v 1. */ -package org.elasticsearch.tracing.apm; +package org.elasticsearch.telemetry.apm; import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.context.Context; import java.util.Map; @@ -29,9 +28,7 @@ static Attributes fromMap(Map attributes) { } else if (v instanceof Boolean value) { builder.put(k, value); } else { - throw new IllegalArgumentException( - "attributes do not support value type of [" + v.getClass().getCanonicalName() + "]" - ); + throw new IllegalArgumentException("attributes do not support value type of [" + v.getClass().getCanonicalName() + "]"); } }); return builder.build(); diff --git a/modules/apm/src/test/java/org/elasticsearch/tracing/apm/APMAgentSettingsTests.java b/modules/apm/src/test/java/org/elasticsearch/telemetry/apm/APMAgentSettingsTests.java similarity index 94% rename from modules/apm/src/test/java/org/elasticsearch/tracing/apm/APMAgentSettingsTests.java rename to modules/apm/src/test/java/org/elasticsearch/telemetry/apm/APMAgentSettingsTests.java index 35328c5dd2461..98659bd136bca 100644 --- a/modules/apm/src/test/java/org/elasticsearch/tracing/apm/APMAgentSettingsTests.java +++ b/modules/apm/src/test/java/org/elasticsearch/telemetry/apm/APMAgentSettingsTests.java @@ -6,13 +6,13 @@ * Side Public License, v 1. */ -package org.elasticsearch.tracing.apm; +package org.elasticsearch.telemetry.apm; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.test.ESTestCase; -import static org.elasticsearch.tracing.apm.APMAgentSettings.APM_AGENT_SETTINGS; -import static org.elasticsearch.tracing.apm.APMAgentSettings.APM_ENABLED_SETTING; +import static org.elasticsearch.telemetry.apm.APMAgentSettings.APM_AGENT_SETTINGS; +import static org.elasticsearch.telemetry.apm.APMAgentSettings.APM_ENABLED_SETTING; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; diff --git a/modules/apm/src/test/java/org/elasticsearch/tracing/apm/APMTracerTests.java b/modules/apm/src/test/java/org/elasticsearch/telemetry/apm/APMTracerTests.java similarity index 97% rename from modules/apm/src/test/java/org/elasticsearch/tracing/apm/APMTracerTests.java rename to modules/apm/src/test/java/org/elasticsearch/telemetry/apm/APMTracerTests.java index 4b394cd1ec85e..a5ffe7ac00ba4 100644 --- a/modules/apm/src/test/java/org/elasticsearch/tracing/apm/APMTracerTests.java +++ b/modules/apm/src/test/java/org/elasticsearch/telemetry/apm/APMTracerTests.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.tracing.apm; +package org.elasticsearch.telemetry.apm; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; @@ -22,8 +22,8 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.util.concurrent.ThreadContext; import org.elasticsearch.tasks.Task; +import org.elasticsearch.telemetry.SpanId; import org.elasticsearch.test.ESTestCase; -import org.elasticsearch.tracing.SpanId; import java.time.Instant; import java.util.HashMap; @@ -32,9 +32,9 @@ import java.util.concurrent.TimeUnit; import java.util.stream.Stream; -import static org.elasticsearch.tracing.apm.APMAgentSettings.APM_ENABLED_SETTING; -import static org.elasticsearch.tracing.apm.APMAgentSettings.APM_TRACING_NAMES_EXCLUDE_SETTING; -import static org.elasticsearch.tracing.apm.APMAgentSettings.APM_TRACING_NAMES_INCLUDE_SETTING; +import static org.elasticsearch.telemetry.apm.APMAgentSettings.APM_ENABLED_SETTING; +import static org.elasticsearch.telemetry.apm.APMAgentSettings.APM_TRACING_NAMES_EXCLUDE_SETTING; +import static org.elasticsearch.telemetry.apm.APMAgentSettings.APM_TRACING_NAMES_INCLUDE_SETTING; import static org.hamcrest.Matchers.aMapWithSize; import static org.hamcrest.Matchers.anEmptyMap; import static org.hamcrest.Matchers.hasKey; diff --git a/modules/data-streams/src/main/java/org/elasticsearch/datastreams/DataStreamsPlugin.java b/modules/data-streams/src/main/java/org/elasticsearch/datastreams/DataStreamsPlugin.java index 313a6dd459668..a943bfee087b5 100644 --- a/modules/data-streams/src/main/java/org/elasticsearch/datastreams/DataStreamsPlugin.java +++ b/modules/data-streams/src/main/java/org/elasticsearch/datastreams/DataStreamsPlugin.java @@ -70,8 +70,8 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -170,7 +170,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/modules/ingest-geoip/src/main/java/org/elasticsearch/ingest/geoip/IngestGeoIpPlugin.java b/modules/ingest-geoip/src/main/java/org/elasticsearch/ingest/geoip/IngestGeoIpPlugin.java index 03607b908d375..afc6fa8a1c92a 100644 --- a/modules/ingest-geoip/src/main/java/org/elasticsearch/ingest/geoip/IngestGeoIpPlugin.java +++ b/modules/ingest-geoip/src/main/java/org/elasticsearch/ingest/geoip/IngestGeoIpPlugin.java @@ -48,8 +48,8 @@ import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; import org.elasticsearch.tasks.Task; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xcontent.ParseField; @@ -119,7 +119,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/PainlessPlugin.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/PainlessPlugin.java index f5b27a48960d2..52eccbe0dce90 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/PainlessPlugin.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/PainlessPlugin.java @@ -43,8 +43,8 @@ import org.elasticsearch.script.ScriptEngine; import org.elasticsearch.script.ScriptModule; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -147,7 +147,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/modules/reindex/src/main/java/org/elasticsearch/reindex/ReindexPlugin.java b/modules/reindex/src/main/java/org/elasticsearch/reindex/ReindexPlugin.java index fdf672f3cfbf4..e79f9bdaffee9 100644 --- a/modules/reindex/src/main/java/org/elasticsearch/reindex/ReindexPlugin.java +++ b/modules/reindex/src/main/java/org/elasticsearch/reindex/ReindexPlugin.java @@ -35,8 +35,8 @@ import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; import org.elasticsearch.tasks.Task; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -100,7 +100,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/modules/reindex/src/test/java/org/elasticsearch/reindex/ReindexFromRemoteWithAuthTests.java b/modules/reindex/src/test/java/org/elasticsearch/reindex/ReindexFromRemoteWithAuthTests.java index 72546d98d1f16..55b7b2cc902cc 100644 --- a/modules/reindex/src/test/java/org/elasticsearch/reindex/ReindexFromRemoteWithAuthTests.java +++ b/modules/reindex/src/test/java/org/elasticsearch/reindex/ReindexFromRemoteWithAuthTests.java @@ -45,9 +45,9 @@ import org.elasticsearch.rest.root.MainRestPlugin; import org.elasticsearch.script.ScriptService; import org.elasticsearch.tasks.Task; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.test.ESSingleNodeTestCase; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.netty4.Netty4Plugin; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -176,7 +176,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/modules/repository-azure/src/main/java/org/elasticsearch/repositories/azure/AzureRepositoryPlugin.java b/modules/repository-azure/src/main/java/org/elasticsearch/repositories/azure/AzureRepositoryPlugin.java index dd70e4778dd75..f88a96e765827 100644 --- a/modules/repository-azure/src/main/java/org/elasticsearch/repositories/azure/AzureRepositoryPlugin.java +++ b/modules/repository-azure/src/main/java/org/elasticsearch/repositories/azure/AzureRepositoryPlugin.java @@ -30,10 +30,10 @@ import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.repositories.Repository; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.ScalingExecutorBuilder; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -96,7 +96,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/modules/repository-azure/src/test/java/org/elasticsearch/repositories/azure/AzureStorageServiceTests.java b/modules/repository-azure/src/test/java/org/elasticsearch/repositories/azure/AzureStorageServiceTests.java index 3b5f1928871fe..a7a10a17668bc 100644 --- a/modules/repository-azure/src/test/java/org/elasticsearch/repositories/azure/AzureStorageServiceTests.java +++ b/modules/repository-azure/src/test/java/org/elasticsearch/repositories/azure/AzureStorageServiceTests.java @@ -14,10 +14,10 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.settings.SettingsException; import org.elasticsearch.common.settings.SettingsModule; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.threadpool.TestThreadPool; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.junit.After; import org.junit.Before; @@ -73,7 +73,7 @@ public void testReadSecuredSettings() { private AzureRepositoryPlugin pluginWithSettingsValidation(Settings settings) { final AzureRepositoryPlugin plugin = new AzureRepositoryPlugin(settings); new SettingsModule(settings, plugin.getSettings(), Collections.emptyList()); - plugin.createComponents(null, null, threadPool, null, null, null, null, null, null, null, null, Tracer.NOOP, null, null); + plugin.createComponents(null, null, threadPool, null, null, null, null, null, null, null, null, TelemetryProvider.NOOP, null, null); return plugin; } diff --git a/modules/repository-s3/src/main/java/org/elasticsearch/repositories/s3/S3RepositoryPlugin.java b/modules/repository-s3/src/main/java/org/elasticsearch/repositories/s3/S3RepositoryPlugin.java index 6968e307a403b..62fe279726164 100644 --- a/modules/repository-s3/src/main/java/org/elasticsearch/repositories/s3/S3RepositoryPlugin.java +++ b/modules/repository-s3/src/main/java/org/elasticsearch/repositories/s3/S3RepositoryPlugin.java @@ -31,8 +31,8 @@ import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.repositories.Repository; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -102,7 +102,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/modules/repository-url/src/main/java/org/elasticsearch/plugin/repository/url/URLRepositoryPlugin.java b/modules/repository-url/src/main/java/org/elasticsearch/plugin/repository/url/URLRepositoryPlugin.java index 9f157e2d291cd..8057684375d69 100644 --- a/modules/repository-url/src/main/java/org/elasticsearch/plugin/repository/url/URLRepositoryPlugin.java +++ b/modules/repository-url/src/main/java/org/elasticsearch/plugin/repository/url/URLRepositoryPlugin.java @@ -28,8 +28,8 @@ import org.elasticsearch.repositories.Repository; import org.elasticsearch.repositories.url.URLRepository; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -88,7 +88,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/modules/runtime-fields-common/src/main/java/org/elasticsearch/runtimefields/RuntimeFieldsCommonPlugin.java b/modules/runtime-fields-common/src/main/java/org/elasticsearch/runtimefields/RuntimeFieldsCommonPlugin.java index 76cf25266379d..6cad1e057ef74 100644 --- a/modules/runtime-fields-common/src/main/java/org/elasticsearch/runtimefields/RuntimeFieldsCommonPlugin.java +++ b/modules/runtime-fields-common/src/main/java/org/elasticsearch/runtimefields/RuntimeFieldsCommonPlugin.java @@ -22,8 +22,8 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -76,7 +76,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/modules/systemd/src/main/java/org/elasticsearch/systemd/SystemdPlugin.java b/modules/systemd/src/main/java/org/elasticsearch/systemd/SystemdPlugin.java index 37109bcf01f06..f425de279129b 100644 --- a/modules/systemd/src/main/java/org/elasticsearch/systemd/SystemdPlugin.java +++ b/modules/systemd/src/main/java/org/elasticsearch/systemd/SystemdPlugin.java @@ -26,9 +26,9 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.Scheduler; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -92,7 +92,7 @@ public Collection createComponents( final NamedWriteableRegistry namedWriteableRegistry, final IndexNameExpressionResolver expressionResolver, final Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/modules/systemd/src/test/java/org/elasticsearch/systemd/SystemdPluginTests.java b/modules/systemd/src/test/java/org/elasticsearch/systemd/SystemdPluginTests.java index a6e5f806babd2..b2bfbdb976eb9 100644 --- a/modules/systemd/src/test/java/org/elasticsearch/systemd/SystemdPluginTests.java +++ b/modules/systemd/src/test/java/org/elasticsearch/systemd/SystemdPluginTests.java @@ -12,11 +12,11 @@ import org.elasticsearch.common.util.concurrent.EsExecutors; import org.elasticsearch.core.CheckedConsumer; import org.elasticsearch.core.TimeValue; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.hamcrest.OptionalMatchers; import org.elasticsearch.threadpool.Scheduler; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import java.io.IOException; import java.util.Optional; @@ -60,28 +60,28 @@ public class SystemdPluginTests extends ESTestCase { public void testIsEnabled() { final SystemdPlugin plugin = new SystemdPlugin(false, randomPackageBuildType, Boolean.TRUE.toString()); - plugin.createComponents(null, null, threadPool, null, null, null, null, null, null, null, null, Tracer.NOOP, null, null); + plugin.createComponents(null, null, threadPool, null, null, null, null, null, null, null, null, TelemetryProvider.NOOP, null, null); assertTrue(plugin.isEnabled()); assertNotNull(plugin.extender()); } public void testIsNotPackageDistribution() { final SystemdPlugin plugin = new SystemdPlugin(false, randomNonPackageBuildType, Boolean.TRUE.toString()); - plugin.createComponents(null, null, threadPool, null, null, null, null, null, null, null, null, Tracer.NOOP, null, null); + plugin.createComponents(null, null, threadPool, null, null, null, null, null, null, null, null, TelemetryProvider.NOOP, null, null); assertFalse(plugin.isEnabled()); assertNull(plugin.extender()); } public void testIsImplicitlyNotEnabled() { final SystemdPlugin plugin = new SystemdPlugin(false, randomPackageBuildType, null); - plugin.createComponents(null, null, threadPool, null, null, null, null, null, null, null, null, Tracer.NOOP, null, null); + plugin.createComponents(null, null, threadPool, null, null, null, null, null, null, null, null, TelemetryProvider.NOOP, null, null); assertFalse(plugin.isEnabled()); assertNull(plugin.extender()); } public void testIsExplicitlyNotEnabled() { final SystemdPlugin plugin = new SystemdPlugin(false, randomPackageBuildType, Boolean.FALSE.toString()); - plugin.createComponents(null, null, threadPool, null, null, null, null, null, null, null, null, Tracer.NOOP, null, null); + plugin.createComponents(null, null, threadPool, null, null, null, null, null, null, null, null, TelemetryProvider.NOOP, null, null); assertFalse(plugin.isEnabled()); assertNull(plugin.extender()); } @@ -169,7 +169,7 @@ int sd_notify(final int unset_environment, final String state) { } }; - plugin.createComponents(null, null, threadPool, null, null, null, null, null, null, null, null, Tracer.NOOP, null, null); + plugin.createComponents(null, null, threadPool, null, null, null, null, null, null, null, null, TelemetryProvider.NOOP, null, null); if (Boolean.TRUE.toString().equals(esSDNotify)) { assertNotNull(plugin.extender()); } else { diff --git a/modules/transport-netty4/src/main/java/org/elasticsearch/http/netty4/Netty4HttpServerTransport.java b/modules/transport-netty4/src/main/java/org/elasticsearch/http/netty4/Netty4HttpServerTransport.java index 208b0bf62fb6d..f61f423683b50 100644 --- a/modules/transport-netty4/src/main/java/org/elasticsearch/http/netty4/Netty4HttpServerTransport.java +++ b/modules/transport-netty4/src/main/java/org/elasticsearch/http/netty4/Netty4HttpServerTransport.java @@ -55,8 +55,8 @@ import org.elasticsearch.http.HttpServerTransport; import org.elasticsearch.http.netty4.internal.HttpHeadersAuthenticatorUtils; import org.elasticsearch.http.netty4.internal.HttpValidator; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.netty4.AcceptChannelHandler; import org.elasticsearch.transport.netty4.NetUtils; import org.elasticsearch.transport.netty4.Netty4Utils; diff --git a/modules/transport-netty4/src/main/java/org/elasticsearch/transport/netty4/Netty4Plugin.java b/modules/transport-netty4/src/main/java/org/elasticsearch/transport/netty4/Netty4Plugin.java index 9d818c12e6da5..4707358b09b14 100644 --- a/modules/transport-netty4/src/main/java/org/elasticsearch/transport/netty4/Netty4Plugin.java +++ b/modules/transport-netty4/src/main/java/org/elasticsearch/transport/netty4/Netty4Plugin.java @@ -26,8 +26,8 @@ import org.elasticsearch.plugins.NetworkPlugin; import org.elasticsearch.plugins.Plugin; import org.elasticsearch.rest.RestRequest; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.Transport; import org.elasticsearch.xcontent.NamedXContentRegistry; diff --git a/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4BadRequestTests.java b/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4BadRequestTests.java index 02f2fab86f9c8..717a6cdc4c2ac 100644 --- a/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4BadRequestTests.java +++ b/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4BadRequestTests.java @@ -23,10 +23,10 @@ import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestResponse; import org.elasticsearch.rest.RestStatus; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.threadpool.TestThreadPool; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.netty4.SharedGroupFactory; import org.elasticsearch.transport.netty4.TLSConfig; import org.junit.After; diff --git a/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4HttpServerPipeliningTests.java b/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4HttpServerPipeliningTests.java index 1b6572ee0c24f..61fde49f25a59 100644 --- a/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4HttpServerPipeliningTests.java +++ b/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4HttpServerPipeliningTests.java @@ -25,10 +25,10 @@ import org.elasticsearch.http.HttpServerTransport; import org.elasticsearch.http.NullDispatcher; import org.elasticsearch.rest.RestStatus; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.threadpool.TestThreadPool; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.netty4.SharedGroupFactory; import org.elasticsearch.transport.netty4.TLSConfig; import org.junit.After; diff --git a/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4HttpServerTransportTests.java b/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4HttpServerTransportTests.java index 452a006d26d4f..9e2a634629d8e 100644 --- a/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4HttpServerTransportTests.java +++ b/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4HttpServerTransportTests.java @@ -68,10 +68,10 @@ import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestResponse; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.test.rest.FakeRestRequest; import org.elasticsearch.threadpool.TestThreadPool; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.netty4.NettyAllocator; import org.elasticsearch.transport.netty4.SharedGroupFactory; import org.elasticsearch.transport.netty4.TLSConfig; diff --git a/qa/apm/src/test/java/org/elasticsearch/tracing/apm/ApmIT.java b/qa/apm/src/test/java/org/elasticsearch/tracing/apm/ApmIT.java index 41421a4485267..021d9f8d01bf3 100644 --- a/qa/apm/src/test/java/org/elasticsearch/tracing/apm/ApmIT.java +++ b/qa/apm/src/test/java/org/elasticsearch/tracing/apm/ApmIT.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.tracing.apm; +package org.elasticsearch.telemetry.apm; import org.elasticsearch.client.Request; import org.elasticsearch.client.Response; diff --git a/qa/custom-rest-controller/src/javaRestTest/java/co/elastic/elasticsearch/test/CustomRestPlugin.java b/qa/custom-rest-controller/src/javaRestTest/java/co/elastic/elasticsearch/test/CustomRestPlugin.java index 504802d5cfd7c..3e5595313ef0b 100644 --- a/qa/custom-rest-controller/src/javaRestTest/java/co/elastic/elasticsearch/test/CustomRestPlugin.java +++ b/qa/custom-rest-controller/src/javaRestTest/java/co/elastic/elasticsearch/test/CustomRestPlugin.java @@ -19,7 +19,7 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.tracing.Tracer; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.usage.UsageService; import java.util.function.UnaryOperator; diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/ClusterInfoRestCancellationIT.java b/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/ClusterInfoRestCancellationIT.java index d41eeab7aef26..d60a434bae432 100644 --- a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/ClusterInfoRestCancellationIT.java +++ b/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/ClusterInfoRestCancellationIT.java @@ -26,8 +26,8 @@ import org.elasticsearch.indices.breaker.CircuitBreakerService; import org.elasticsearch.plugins.NetworkPlugin; import org.elasticsearch.plugins.Plugin; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.netty4.AcceptChannelHandler; import org.elasticsearch.transport.netty4.SharedGroupFactory; import org.elasticsearch.transport.netty4.TLSConfig; diff --git a/server/src/internalClusterTest/java/org/elasticsearch/cluster/SimpleClusterStateIT.java b/server/src/internalClusterTest/java/org/elasticsearch/cluster/SimpleClusterStateIT.java index 1a4c908306648..5731163def260 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/cluster/SimpleClusterStateIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/cluster/SimpleClusterStateIT.java @@ -37,9 +37,9 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.test.ESIntegTestCase; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xcontent.ToXContent; @@ -415,7 +415,7 @@ public Collection createComponents( final NamedWriteableRegistry namedWriteableRegistry, final IndexNameExpressionResolver expressionResolver, final Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/server/src/internalClusterTest/java/org/elasticsearch/cluster/metadata/TemplateUpgradeServiceIT.java b/server/src/internalClusterTest/java/org/elasticsearch/cluster/metadata/TemplateUpgradeServiceIT.java index 9660be019383a..aff04ca521844 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/cluster/metadata/TemplateUpgradeServiceIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/cluster/metadata/TemplateUpgradeServiceIT.java @@ -22,9 +22,9 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.test.ESIntegTestCase; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -77,7 +77,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { @@ -96,7 +96,7 @@ public Collection createComponents( namedWriteableRegistry, expressionResolver, repositoriesServiceSupplier, - tracer, + telemetryProvider, allocationService, indicesService ); diff --git a/server/src/internalClusterTest/java/org/elasticsearch/health/GetHealthActionIT.java b/server/src/internalClusterTest/java/org/elasticsearch/health/GetHealthActionIT.java index ba59d74768fa2..11d32bb231a01 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/health/GetHealthActionIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/health/GetHealthActionIT.java @@ -27,9 +27,9 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.test.ESIntegTestCase; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -107,7 +107,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/server/src/internalClusterTest/java/org/elasticsearch/health/HealthServiceIT.java b/server/src/internalClusterTest/java/org/elasticsearch/health/HealthServiceIT.java index 53b568f0a25ef..707644e28228a 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/health/HealthServiceIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/health/HealthServiceIT.java @@ -27,10 +27,10 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.test.ESIntegTestCase; import org.elasticsearch.test.InternalTestCluster; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -136,7 +136,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/server/src/internalClusterTest/java/org/elasticsearch/index/FinalPipelineIT.java b/server/src/internalClusterTest/java/org/elasticsearch/index/FinalPipelineIT.java index bab4b2c088826..165242128ca8a 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/index/FinalPipelineIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/index/FinalPipelineIT.java @@ -38,9 +38,9 @@ import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.rest.RestStatus; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.test.ESIntegTestCase; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xcontent.XContentType; @@ -405,7 +405,7 @@ public Collection createComponents( final NamedWriteableRegistry namedWriteableRegistry, final IndexNameExpressionResolver expressionResolver, final Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/server/src/internalClusterTest/java/org/elasticsearch/index/SettingsListenerIT.java b/server/src/internalClusterTest/java/org/elasticsearch/index/SettingsListenerIT.java index d1095354e1126..fb0e3478c2cde 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/index/SettingsListenerIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/index/SettingsListenerIT.java @@ -22,10 +22,10 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.test.ESIntegTestCase; import org.elasticsearch.test.ESIntegTestCase.ClusterScope; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -75,7 +75,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/server/src/internalClusterTest/java/org/elasticsearch/ingest/IngestAsyncProcessorIT.java b/server/src/internalClusterTest/java/org/elasticsearch/ingest/IngestAsyncProcessorIT.java index 959611f9fd855..f8d2b0e464b72 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/ingest/IngestAsyncProcessorIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/ingest/IngestAsyncProcessorIT.java @@ -27,9 +27,9 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.test.ESSingleNodeTestCase; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xcontent.XContentType; @@ -97,7 +97,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/server/src/main/java/module-info.java b/server/src/main/java/module-info.java index 472707babf155..6394c4aaf49bb 100644 --- a/server/src/main/java/module-info.java +++ b/server/src/main/java/module-info.java @@ -363,7 +363,8 @@ exports org.elasticsearch.synonyms; exports org.elasticsearch.tasks; exports org.elasticsearch.threadpool; - exports org.elasticsearch.tracing; + exports org.elasticsearch.telemetry; + exports org.elasticsearch.telemetry.metric to org.elasticsearch.tracing.apm; exports org.elasticsearch.transport; exports org.elasticsearch.upgrades; exports org.elasticsearch.usage; diff --git a/server/src/main/java/org/elasticsearch/action/ActionModule.java b/server/src/main/java/org/elasticsearch/action/ActionModule.java index 31355aac21d67..e8d5d54ee660d 100644 --- a/server/src/main/java/org/elasticsearch/action/ActionModule.java +++ b/server/src/main/java/org/elasticsearch/action/ActionModule.java @@ -458,8 +458,8 @@ import org.elasticsearch.rest.action.synonyms.RestPutSynonymRuleAction; import org.elasticsearch.rest.action.synonyms.RestPutSynonymsAction; import org.elasticsearch.tasks.Task; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.usage.UsageService; import java.time.Instant; diff --git a/server/src/main/java/org/elasticsearch/common/network/NetworkModule.java b/server/src/main/java/org/elasticsearch/common/network/NetworkModule.java index d46e54de8729e..52f4cfa003be1 100644 --- a/server/src/main/java/org/elasticsearch/common/network/NetworkModule.java +++ b/server/src/main/java/org/elasticsearch/common/network/NetworkModule.java @@ -32,8 +32,8 @@ import org.elasticsearch.plugins.NetworkPlugin; import org.elasticsearch.tasks.RawTaskStatus; import org.elasticsearch.tasks.Task; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.Transport; import org.elasticsearch.transport.TransportInterceptor; import org.elasticsearch.transport.TransportRequest; diff --git a/server/src/main/java/org/elasticsearch/common/util/concurrent/ThreadContext.java b/server/src/main/java/org/elasticsearch/common/util/concurrent/ThreadContext.java index b59ebc00e55c4..a720228fe7de4 100644 --- a/server/src/main/java/org/elasticsearch/common/util/concurrent/ThreadContext.java +++ b/server/src/main/java/org/elasticsearch/common/util/concurrent/ThreadContext.java @@ -157,7 +157,7 @@ public StoredContext stashContextPreservingRequestHeaders(final String... reques } /** - * When using a {@link org.elasticsearch.tracing.Tracer} to capture activity in Elasticsearch, when a parent span is already + * When using a {@link org.elasticsearch.telemetry.Tracer} to capture activity in Elasticsearch, when a parent span is already * in progress, it is necessary to start a new context before beginning a child span. This method creates a context, * moving tracing-related fields to different names so that a new child span can be started. This child span will pick up * the moved fields and use them to establish the parent-child relationship. @@ -213,7 +213,7 @@ public boolean hasTraceContext() { } /** - * When using a {@link org.elasticsearch.tracing.Tracer}, sometimes you need to start a span completely unrelated + * When using a {@link org.elasticsearch.telemetry.Tracer}, sometimes you need to start a span completely unrelated * to any current span. In order to avoid any parent/child relationship being created, this method creates a new * context that clears all the tracing fields. * diff --git a/server/src/main/java/org/elasticsearch/http/AbstractHttpServerTransport.java b/server/src/main/java/org/elasticsearch/http/AbstractHttpServerTransport.java index a013cba390f6b..206525082778c 100644 --- a/server/src/main/java/org/elasticsearch/http/AbstractHttpServerTransport.java +++ b/server/src/main/java/org/elasticsearch/http/AbstractHttpServerTransport.java @@ -38,8 +38,8 @@ import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestResponse; import org.elasticsearch.tasks.Task; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.BindTransportException; import org.elasticsearch.transport.TransportSettings; import org.elasticsearch.xcontent.NamedXContentRegistry; diff --git a/server/src/main/java/org/elasticsearch/http/DefaultRestChannel.java b/server/src/main/java/org/elasticsearch/http/DefaultRestChannel.java index 6fc6e7eb3ffbc..d2167c2d9d271 100644 --- a/server/src/main/java/org/elasticsearch/http/DefaultRestChannel.java +++ b/server/src/main/java/org/elasticsearch/http/DefaultRestChannel.java @@ -27,8 +27,8 @@ import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestResponse; import org.elasticsearch.rest.RestStatus; -import org.elasticsearch.tracing.SpanId; -import org.elasticsearch.tracing.Tracer; +import org.elasticsearch.telemetry.SpanId; +import org.elasticsearch.telemetry.Tracer; import java.util.ArrayList; import java.util.List; diff --git a/server/src/main/java/org/elasticsearch/node/Node.java b/server/src/main/java/org/elasticsearch/node/Node.java index 1ae3aaa9e09db..b8e501be8c20e 100644 --- a/server/src/main/java/org/elasticsearch/node/Node.java +++ b/server/src/main/java/org/elasticsearch/node/Node.java @@ -179,7 +179,7 @@ import org.elasticsearch.plugins.SearchPlugin; import org.elasticsearch.plugins.ShutdownAwarePlugin; import org.elasticsearch.plugins.SystemIndexPlugin; -import org.elasticsearch.plugins.TracerPlugin; +import org.elasticsearch.plugins.TelemetryPlugin; import org.elasticsearch.plugins.internal.DocumentParsingObserver; import org.elasticsearch.plugins.internal.DocumentParsingObserverPlugin; import org.elasticsearch.plugins.internal.ReloadAwarePlugin; @@ -213,9 +213,10 @@ import org.elasticsearch.tasks.TaskCancellationService; import org.elasticsearch.tasks.TaskManager; import org.elasticsearch.tasks.TaskResultsService; +import org.elasticsearch.telemetry.TelemetryProvider; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.RemoteClusterPortSettings; import org.elasticsearch.transport.Transport; import org.elasticsearch.transport.TransportInterceptor; @@ -456,7 +457,8 @@ protected Node( Task.HEADERS_TO_COPY.stream() ).collect(Collectors.toSet()); - final Tracer tracer = getTracer(pluginsService, settings); + final TelemetryProvider telemetryProvider = getTelemetryProvider(pluginsService, settings); + final Tracer tracer = telemetryProvider.getTracer(); final TaskManager taskManager = new TaskManager(settings, threadPool, taskHeaders, tracer); @@ -756,7 +758,7 @@ protected Node( namedWriteableRegistry, clusterModule.getIndexNameExpressionResolver(), repositoriesServiceReference::get, - tracer, + telemetryProvider, clusterModule.getAllocationService(), indicesService ) @@ -1282,14 +1284,14 @@ private static ReloadablePlugin wrapPlugins(List reloadablePlu }; } - private Tracer getTracer(PluginsService pluginsService, Settings settings) { - final List tracerPlugins = pluginsService.filterPlugins(TracerPlugin.class); + private TelemetryProvider getTelemetryProvider(PluginsService pluginsService, Settings settings) { + final List telemetryPlugins = pluginsService.filterPlugins(TelemetryPlugin.class); - if (tracerPlugins.size() > 1) { - throw new IllegalStateException("A single TracerPlugin was expected but got: " + tracerPlugins); + if (telemetryPlugins.size() > 1) { + throw new IllegalStateException("A single TracerPlugin was expected but got: " + telemetryPlugins); } - return tracerPlugins.isEmpty() ? Tracer.NOOP : tracerPlugins.get(0).getTracer(settings); + return telemetryPlugins.isEmpty() ? TelemetryProvider.NOOP : telemetryPlugins.get(0).getTelemetryProvider(settings); } private HealthService createHealthService( diff --git a/server/src/main/java/org/elasticsearch/plugins/NetworkPlugin.java b/server/src/main/java/org/elasticsearch/plugins/NetworkPlugin.java index 6a252a25ce553..f53e4fb3355f4 100644 --- a/server/src/main/java/org/elasticsearch/plugins/NetworkPlugin.java +++ b/server/src/main/java/org/elasticsearch/plugins/NetworkPlugin.java @@ -17,8 +17,8 @@ import org.elasticsearch.http.HttpPreRequest; import org.elasticsearch.http.HttpServerTransport; import org.elasticsearch.indices.breaker.CircuitBreakerService; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.Transport; import org.elasticsearch.transport.TransportInterceptor; import org.elasticsearch.xcontent.NamedXContentRegistry; diff --git a/server/src/main/java/org/elasticsearch/plugins/Plugin.java b/server/src/main/java/org/elasticsearch/plugins/Plugin.java index b736682b72bcf..bd5d8e9220517 100644 --- a/server/src/main/java/org/elasticsearch/plugins/Plugin.java +++ b/server/src/main/java/org/elasticsearch/plugins/Plugin.java @@ -26,9 +26,9 @@ import org.elasticsearch.indices.IndicesService; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xcontent.XContentParser; @@ -81,7 +81,7 @@ public abstract class Plugin implements Closeable { * @param indexNameExpressionResolver A service that resolves expression to index and alias names * @param repositoriesServiceSupplier A supplier for the service that manages snapshot repositories; will return null when this method * is called, but will return the repositories service once the node is initialized. - * @param tracer An interface for distributed tracing + * @param telemetryProvider An interface for distributed tracing * @param allocationService A service to manage shard allocation in the cluster * @param indicesService A service to manage indices in the cluster */ @@ -97,7 +97,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/server/src/main/java/org/elasticsearch/plugins/TracerPlugin.java b/server/src/main/java/org/elasticsearch/plugins/TelemetryPlugin.java similarity index 74% rename from server/src/main/java/org/elasticsearch/plugins/TracerPlugin.java rename to server/src/main/java/org/elasticsearch/plugins/TelemetryPlugin.java index 3e5cddc28e3b0..4f47da99a3d5f 100644 --- a/server/src/main/java/org/elasticsearch/plugins/TracerPlugin.java +++ b/server/src/main/java/org/elasticsearch/plugins/TelemetryPlugin.java @@ -9,8 +9,8 @@ package org.elasticsearch.plugins; import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.tracing.Tracer; +import org.elasticsearch.telemetry.TelemetryProvider; -public interface TracerPlugin { - Tracer getTracer(Settings settings); +public interface TelemetryPlugin { + TelemetryProvider getTelemetryProvider(Settings settings); } diff --git a/server/src/main/java/org/elasticsearch/plugins/interceptor/RestServerActionPlugin.java b/server/src/main/java/org/elasticsearch/plugins/interceptor/RestServerActionPlugin.java index efabc85268acc..6369c51fb5d68 100644 --- a/server/src/main/java/org/elasticsearch/plugins/interceptor/RestServerActionPlugin.java +++ b/server/src/main/java/org/elasticsearch/plugins/interceptor/RestServerActionPlugin.java @@ -15,7 +15,7 @@ import org.elasticsearch.plugins.ActionPlugin; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; -import org.elasticsearch.tracing.Tracer; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.usage.UsageService; import java.util.function.UnaryOperator; diff --git a/server/src/main/java/org/elasticsearch/rest/RestController.java b/server/src/main/java/org/elasticsearch/rest/RestController.java index dea13af5383f7..c1f0914db9e62 100644 --- a/server/src/main/java/org/elasticsearch/rest/RestController.java +++ b/server/src/main/java/org/elasticsearch/rest/RestController.java @@ -30,7 +30,7 @@ import org.elasticsearch.indices.breaker.CircuitBreakerService; import org.elasticsearch.rest.RestHandler.Route; import org.elasticsearch.tasks.Task; -import org.elasticsearch.tracing.Tracer; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.usage.SearchUsageHolder; import org.elasticsearch.usage.UsageService; import org.elasticsearch.xcontent.XContentBuilder; diff --git a/server/src/main/java/org/elasticsearch/search/SearchService.java b/server/src/main/java/org/elasticsearch/search/SearchService.java index 5ceeb53a8df6d..f18923a391e3a 100644 --- a/server/src/main/java/org/elasticsearch/search/SearchService.java +++ b/server/src/main/java/org/elasticsearch/search/SearchService.java @@ -114,11 +114,11 @@ import org.elasticsearch.search.suggest.Suggest; import org.elasticsearch.search.suggest.completion.CompletionSuggestion; import org.elasticsearch.tasks.TaskCancelledException; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.threadpool.Scheduler; import org.elasticsearch.threadpool.Scheduler.Cancellable; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.threadpool.ThreadPool.Names; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.TransportRequest; import java.io.IOException; diff --git a/server/src/main/java/org/elasticsearch/tasks/TaskManager.java b/server/src/main/java/org/elasticsearch/tasks/TaskManager.java index 114f4ded2cc9d..aa7ebc13f1cfb 100644 --- a/server/src/main/java/org/elasticsearch/tasks/TaskManager.java +++ b/server/src/main/java/org/elasticsearch/tasks/TaskManager.java @@ -30,8 +30,8 @@ import org.elasticsearch.core.Nullable; import org.elasticsearch.core.Releasable; import org.elasticsearch.core.Releasables; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.TaskTransportChannel; import org.elasticsearch.transport.TcpChannel; import org.elasticsearch.transport.TcpTransportChannel; diff --git a/server/src/main/java/org/elasticsearch/tracing/Meter.java b/server/src/main/java/org/elasticsearch/telemetry/Meter.java similarity index 84% rename from server/src/main/java/org/elasticsearch/tracing/Meter.java rename to server/src/main/java/org/elasticsearch/telemetry/Meter.java index e25a090a62d93..514e5e684f9d3 100644 --- a/server/src/main/java/org/elasticsearch/tracing/Meter.java +++ b/server/src/main/java/org/elasticsearch/telemetry/Meter.java @@ -6,7 +6,6 @@ * Side Public License, v 1. */ -package org.elasticsearch.tracing; +package org.elasticsearch.telemetry; -public interface Meter { -} +public interface Meter {} diff --git a/server/src/main/java/org/elasticsearch/tracing/MetricName.java b/server/src/main/java/org/elasticsearch/telemetry/MetricName.java similarity index 96% rename from server/src/main/java/org/elasticsearch/tracing/MetricName.java rename to server/src/main/java/org/elasticsearch/telemetry/MetricName.java index c92b709b3027f..c3eddce0cb49b 100644 --- a/server/src/main/java/org/elasticsearch/tracing/MetricName.java +++ b/server/src/main/java/org/elasticsearch/telemetry/MetricName.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.tracing; +package org.elasticsearch.telemetry; import java.util.Objects; diff --git a/server/src/main/java/org/elasticsearch/tracing/SpanId.java b/server/src/main/java/org/elasticsearch/telemetry/SpanId.java similarity index 97% rename from server/src/main/java/org/elasticsearch/tracing/SpanId.java rename to server/src/main/java/org/elasticsearch/telemetry/SpanId.java index c91dc4b1080d1..48f8af3a03bab 100644 --- a/server/src/main/java/org/elasticsearch/tracing/SpanId.java +++ b/server/src/main/java/org/elasticsearch/telemetry/SpanId.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.tracing; +package org.elasticsearch.telemetry; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.tasks.Task; diff --git a/server/src/main/java/org/elasticsearch/telemetry/TelemetryProvider.java b/server/src/main/java/org/elasticsearch/telemetry/TelemetryProvider.java new file mode 100644 index 0000000000000..a8ba4311f60af --- /dev/null +++ b/server/src/main/java/org/elasticsearch/telemetry/TelemetryProvider.java @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.telemetry; + +import org.elasticsearch.telemetry.metric.Metric; + +public interface TelemetryProvider { + + Tracer getTracer(); + + Metric getMetric(); + + TelemetryProvider NOOP = new TelemetryProvider() { + + @Override + public Tracer getTracer() { + return Tracer.NOOP; + } + + @Override + public Metric getMetric() { + return Metric.NOOP; + } + }; +} diff --git a/server/src/main/java/org/elasticsearch/tracing/Tracer.java b/server/src/main/java/org/elasticsearch/telemetry/Tracer.java similarity index 99% rename from server/src/main/java/org/elasticsearch/tracing/Tracer.java rename to server/src/main/java/org/elasticsearch/telemetry/Tracer.java index 5d2b2f3c4ea63..b17c69e471021 100644 --- a/server/src/main/java/org/elasticsearch/tracing/Tracer.java +++ b/server/src/main/java/org/elasticsearch/telemetry/Tracer.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.tracing; +package org.elasticsearch.telemetry; import org.elasticsearch.common.util.concurrent.ThreadContext; import org.elasticsearch.core.Releasable; diff --git a/server/src/main/java/org/elasticsearch/telemetry/metric/Counter.java b/server/src/main/java/org/elasticsearch/telemetry/metric/Counter.java new file mode 100644 index 0000000000000..03eba11a8575d --- /dev/null +++ b/server/src/main/java/org/elasticsearch/telemetry/metric/Counter.java @@ -0,0 +1,27 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.telemetry.metric; + +public interface Counter { + void increment(); + + void incrementBy(long inc); + + Counter NOOP = new Counter() { + @Override + public void increment() { + + } + + @Override + public void incrementBy(long inc) { + + } + }; +} diff --git a/modules/apm/src/main/java/org/elasticsearch/tracing/apm/DoubleGauge.java b/server/src/main/java/org/elasticsearch/telemetry/metric/DoubleGauge.java similarity index 66% rename from modules/apm/src/main/java/org/elasticsearch/tracing/apm/DoubleGauge.java rename to server/src/main/java/org/elasticsearch/telemetry/metric/DoubleGauge.java index 934321fad7e89..bef1bc8e80535 100644 --- a/modules/apm/src/main/java/org/elasticsearch/tracing/apm/DoubleGauge.java +++ b/server/src/main/java/org/elasticsearch/telemetry/metric/DoubleGauge.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.tracing.apm; +package org.elasticsearch.telemetry.metric; import java.util.Map; @@ -15,5 +15,19 @@ */ public interface DoubleGauge { void record(double value); + void record(double value, Map attributes); + + DoubleGauge NOOP = new DoubleGauge() { + + @Override + public void record(double value) { + + } + + @Override + public void record(double value, Map attributes) { + + } + }; } diff --git a/modules/apm/src/main/java/org/elasticsearch/tracing/apm/DoubleHistogram.java b/server/src/main/java/org/elasticsearch/telemetry/metric/DoubleHistogram.java similarity index 61% rename from modules/apm/src/main/java/org/elasticsearch/tracing/apm/DoubleHistogram.java rename to server/src/main/java/org/elasticsearch/telemetry/metric/DoubleHistogram.java index 46d0b78b0b02e..487052f7d9799 100644 --- a/modules/apm/src/main/java/org/elasticsearch/tracing/apm/DoubleHistogram.java +++ b/server/src/main/java/org/elasticsearch/telemetry/metric/DoubleHistogram.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.tracing.apm; +package org.elasticsearch.telemetry.metric; import org.elasticsearch.common.util.concurrent.ThreadContext; @@ -14,6 +14,25 @@ public interface DoubleHistogram { void record(double value); + void record(double value, Map attributes); + void record(double value, Map attributes, ThreadContext threadContext); + + DoubleHistogram NOOP = new DoubleHistogram() { + @Override + public void record(double value) { + + } + + @Override + public void record(double value, Map attributes) { + + } + + @Override + public void record(double value, Map attributes, ThreadContext threadContext) { + + } + }; } diff --git a/server/src/main/java/org/elasticsearch/telemetry/metric/Metric.java b/server/src/main/java/org/elasticsearch/telemetry/metric/Metric.java new file mode 100644 index 0000000000000..47d134fa40d09 --- /dev/null +++ b/server/src/main/java/org/elasticsearch/telemetry/metric/Metric.java @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.telemetry.metric; + +import org.elasticsearch.telemetry.MetricName; + +public interface Metric { + Counter registerCounter(MetricName name, String description, T unit); + + DoubleGauge registerDoubleGauge(MetricName name, String description, T unit); + + DoubleHistogram registerDoubleHistogram(MetricName name, String description, T unit); + + Metric NOOP = new Metric() { + @Override + public Counter registerCounter(MetricName name, String description, T unit) { + return Counter.NOOP; + } + + @Override + public DoubleGauge registerDoubleGauge(MetricName name, String description, T unit) { + return DoubleGauge.NOOP; + } + + @Override + public DoubleHistogram registerDoubleHistogram(MetricName name, String description, T unit) { + return DoubleHistogram.NOOP; + } + }; +} diff --git a/server/src/main/java/org/elasticsearch/transport/RequestHandlerRegistry.java b/server/src/main/java/org/elasticsearch/transport/RequestHandlerRegistry.java index 09581fcc4f1e3..16cb429c0e790 100644 --- a/server/src/main/java/org/elasticsearch/transport/RequestHandlerRegistry.java +++ b/server/src/main/java/org/elasticsearch/transport/RequestHandlerRegistry.java @@ -15,7 +15,7 @@ import org.elasticsearch.tasks.CancellableTask; import org.elasticsearch.tasks.Task; import org.elasticsearch.tasks.TaskManager; -import org.elasticsearch.tracing.Tracer; +import org.elasticsearch.telemetry.Tracer; import java.io.IOException; import java.util.concurrent.Executor; diff --git a/server/src/main/java/org/elasticsearch/transport/TransportService.java b/server/src/main/java/org/elasticsearch/transport/TransportService.java index 5369b9a9eec13..c3ecf2d8d4400 100644 --- a/server/src/main/java/org/elasticsearch/transport/TransportService.java +++ b/server/src/main/java/org/elasticsearch/transport/TransportService.java @@ -42,9 +42,9 @@ import org.elasticsearch.node.ReportingService; import org.elasticsearch.tasks.Task; import org.elasticsearch.tasks.TaskManager; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.threadpool.Scheduler; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import java.io.IOException; import java.io.UncheckedIOException; diff --git a/server/src/test/java/org/elasticsearch/action/ActionModuleTests.java b/server/src/test/java/org/elasticsearch/action/ActionModuleTests.java index 1279ea810f0a6..85eef61a012bc 100644 --- a/server/src/test/java/org/elasticsearch/action/ActionModuleTests.java +++ b/server/src/test/java/org/elasticsearch/action/ActionModuleTests.java @@ -35,10 +35,10 @@ import org.elasticsearch.rest.action.admin.cluster.RestNodesInfoAction; import org.elasticsearch.tasks.Task; import org.elasticsearch.tasks.TaskManager; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.threadpool.TestThreadPool; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.usage.UsageService; import org.hamcrest.Matchers; diff --git a/server/src/test/java/org/elasticsearch/action/admin/cluster/node/tasks/TaskManagerTestCase.java b/server/src/test/java/org/elasticsearch/action/admin/cluster/node/tasks/TaskManagerTestCase.java index bb0e9977e3ac7..3d4041b53e2bf 100644 --- a/server/src/test/java/org/elasticsearch/action/admin/cluster/node/tasks/TaskManagerTestCase.java +++ b/server/src/test/java/org/elasticsearch/action/admin/cluster/node/tasks/TaskManagerTestCase.java @@ -36,11 +36,11 @@ import org.elasticsearch.tasks.Task; import org.elasticsearch.tasks.TaskCancellationService; import org.elasticsearch.tasks.TaskManager; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.tasks.MockTaskManager; import org.elasticsearch.threadpool.TestThreadPool; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.AbstractSimpleTransportTestCase; import org.elasticsearch.transport.TransportRequest; import org.elasticsearch.transport.TransportService; diff --git a/server/src/test/java/org/elasticsearch/cluster/coordination/JoinHelperTests.java b/server/src/test/java/org/elasticsearch/cluster/coordination/JoinHelperTests.java index db996ec397716..af33296dbd3ad 100644 --- a/server/src/test/java/org/elasticsearch/cluster/coordination/JoinHelperTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/coordination/JoinHelperTests.java @@ -25,13 +25,13 @@ import org.elasticsearch.indices.breaker.NoneCircuitBreakerService; import org.elasticsearch.monitor.StatusInfo; import org.elasticsearch.tasks.TaskManager; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.MockLogAppender; import org.elasticsearch.test.junit.annotations.TestLogging; import org.elasticsearch.test.transport.CapturingTransport; import org.elasticsearch.test.transport.CapturingTransport.CapturedRequest; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.ClusterConnectionManager; import org.elasticsearch.transport.RemoteTransportException; import org.elasticsearch.transport.TransportException; diff --git a/server/src/test/java/org/elasticsearch/common/network/NetworkModuleTests.java b/server/src/test/java/org/elasticsearch/common/network/NetworkModuleTests.java index d2a7036b7db6f..a28a7cf67927a 100644 --- a/server/src/test/java/org/elasticsearch/common/network/NetworkModuleTests.java +++ b/server/src/test/java/org/elasticsearch/common/network/NetworkModuleTests.java @@ -23,10 +23,10 @@ import org.elasticsearch.http.NullDispatcher; import org.elasticsearch.indices.breaker.CircuitBreakerService; import org.elasticsearch.plugins.NetworkPlugin; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.threadpool.TestThreadPool; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.Transport; import org.elasticsearch.transport.TransportInterceptor; import org.elasticsearch.transport.TransportRequest; diff --git a/server/src/test/java/org/elasticsearch/discovery/PeerFinderTests.java b/server/src/test/java/org/elasticsearch/discovery/PeerFinderTests.java index e844cae4d2bb8..6bbaf21ccceab 100644 --- a/server/src/test/java/org/elasticsearch/discovery/PeerFinderTests.java +++ b/server/src/test/java/org/elasticsearch/discovery/PeerFinderTests.java @@ -22,6 +22,7 @@ import org.elasticsearch.common.transport.TransportAddress; import org.elasticsearch.common.util.concurrent.DeterministicTaskQueue; import org.elasticsearch.tasks.TaskManager; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.MockLogAppender; import org.elasticsearch.test.junit.annotations.TestLogging; @@ -29,7 +30,6 @@ import org.elasticsearch.test.transport.CapturingTransport.CapturedRequest; import org.elasticsearch.test.transport.StubbableConnectionManager; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.ClusterConnectionManager; import org.elasticsearch.transport.ConnectionManager; import org.elasticsearch.transport.TransportException; diff --git a/server/src/test/java/org/elasticsearch/http/AbstractHttpServerTransportTests.java b/server/src/test/java/org/elasticsearch/http/AbstractHttpServerTransportTests.java index b8d102db7e8ae..df371f5206b61 100644 --- a/server/src/test/java/org/elasticsearch/http/AbstractHttpServerTransportTests.java +++ b/server/src/test/java/org/elasticsearch/http/AbstractHttpServerTransportTests.java @@ -39,13 +39,13 @@ import org.elasticsearch.rest.RestResponse; import org.elasticsearch.rest.RestStatus; import org.elasticsearch.tasks.Task; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.MockLogAppender; import org.elasticsearch.test.junit.annotations.TestLogging; import org.elasticsearch.test.rest.FakeRestRequest; import org.elasticsearch.threadpool.TestThreadPool; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.BytesRefRecycler; import org.elasticsearch.transport.TransportSettings; import org.elasticsearch.usage.UsageService; diff --git a/server/src/test/java/org/elasticsearch/http/DefaultRestChannelTests.java b/server/src/test/java/org/elasticsearch/http/DefaultRestChannelTests.java index c39302e710d7e..cf7d343a3c7b7 100644 --- a/server/src/test/java/org/elasticsearch/http/DefaultRestChannelTests.java +++ b/server/src/test/java/org/elasticsearch/http/DefaultRestChannelTests.java @@ -36,13 +36,13 @@ import org.elasticsearch.rest.RestResponse; import org.elasticsearch.rest.RestStatus; import org.elasticsearch.tasks.Task; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.MockLogAppender; import org.elasticsearch.test.junit.annotations.TestLogging; import org.elasticsearch.test.rest.FakeRestRequest; import org.elasticsearch.threadpool.TestThreadPool; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.BytesRefRecycler; import org.elasticsearch.xcontent.XContentBuilder; import org.elasticsearch.xcontent.json.JsonXContent; diff --git a/server/src/test/java/org/elasticsearch/indices/cluster/ClusterStateChanges.java b/server/src/test/java/org/elasticsearch/indices/cluster/ClusterStateChanges.java index e547a736df034..69882666b5ad4 100644 --- a/server/src/test/java/org/elasticsearch/indices/cluster/ClusterStateChanges.java +++ b/server/src/test/java/org/elasticsearch/indices/cluster/ClusterStateChanges.java @@ -96,10 +96,10 @@ import org.elasticsearch.indices.TestIndexNameExpressionResolver; import org.elasticsearch.snapshots.EmptySnapshotsInfoService; import org.elasticsearch.tasks.TaskManager; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.test.ClusterServiceUtils; import org.elasticsearch.test.gateway.TestGatewayAllocator; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.Transport; import org.elasticsearch.transport.TransportService; import org.elasticsearch.xcontent.NamedXContentRegistry; diff --git a/server/src/test/java/org/elasticsearch/node/NodeTests.java b/server/src/test/java/org/elasticsearch/node/NodeTests.java index 0a0040eebea39..77e95ca7857f6 100644 --- a/server/src/test/java/org/elasticsearch/node/NodeTests.java +++ b/server/src/test/java/org/elasticsearch/node/NodeTests.java @@ -46,12 +46,12 @@ import org.elasticsearch.rest.RestRequest; import org.elasticsearch.script.ScriptService; import org.elasticsearch.tasks.Task; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.InternalTestCluster; import org.elasticsearch.test.MockHttpTransport; import org.elasticsearch.test.rest.FakeRestRequest; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.TransportService; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.ContextParser; @@ -443,7 +443,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/server/src/test/java/org/elasticsearch/plugins/PluginIntrospectorTests.java b/server/src/test/java/org/elasticsearch/plugins/PluginIntrospectorTests.java index a6142499bc894..c5e974c4abcfd 100644 --- a/server/src/test/java/org/elasticsearch/plugins/PluginIntrospectorTests.java +++ b/server/src/test/java/org/elasticsearch/plugins/PluginIntrospectorTests.java @@ -32,12 +32,12 @@ import org.elasticsearch.ingest.Processor; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.PrivilegedOperations; import org.elasticsearch.test.compiler.InMemoryJavaCompiler; import org.elasticsearch.test.jar.JarUtils; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -271,7 +271,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/server/src/test/java/org/elasticsearch/rest/RestControllerTests.java b/server/src/test/java/org/elasticsearch/rest/RestControllerTests.java index ddbc1f33cacc6..740b1f2a04381 100644 --- a/server/src/test/java/org/elasticsearch/rest/RestControllerTests.java +++ b/server/src/test/java/org/elasticsearch/rest/RestControllerTests.java @@ -35,10 +35,10 @@ import org.elasticsearch.indices.breaker.HierarchyCircuitBreakerService; import org.elasticsearch.rest.RestHandler.Route; import org.elasticsearch.rest.action.RestToXContentListener; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.client.NoOpNodeClient; import org.elasticsearch.test.rest.FakeRestRequest; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.BytesRefRecycler; import org.elasticsearch.usage.UsageService; import org.elasticsearch.xcontent.NamedXContentRegistry; diff --git a/server/src/test/java/org/elasticsearch/rest/RestHttpResponseHeadersTests.java b/server/src/test/java/org/elasticsearch/rest/RestHttpResponseHeadersTests.java index 7bdb4f7120282..11ac22d729b49 100644 --- a/server/src/test/java/org/elasticsearch/rest/RestHttpResponseHeadersTests.java +++ b/server/src/test/java/org/elasticsearch/rest/RestHttpResponseHeadersTests.java @@ -14,10 +14,10 @@ import org.elasticsearch.indices.breaker.CircuitBreakerService; import org.elasticsearch.indices.breaker.HierarchyCircuitBreakerService; import org.elasticsearch.rest.RestHandler.Route; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.rest.FakeRestChannel; import org.elasticsearch.test.rest.FakeRestRequest; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.usage.UsageService; import java.util.ArrayList; diff --git a/server/src/test/java/org/elasticsearch/rest/action/admin/indices/RestValidateQueryActionTests.java b/server/src/test/java/org/elasticsearch/rest/action/admin/indices/RestValidateQueryActionTests.java index 7ac44cf862e49..7c7d503563107 100644 --- a/server/src/test/java/org/elasticsearch/rest/action/admin/indices/RestValidateQueryActionTests.java +++ b/server/src/test/java/org/elasticsearch/rest/action/admin/indices/RestValidateQueryActionTests.java @@ -27,11 +27,11 @@ import org.elasticsearch.search.AbstractSearchTestCase; import org.elasticsearch.tasks.Task; import org.elasticsearch.tasks.TaskManager; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.test.rest.FakeRestChannel; import org.elasticsearch.test.rest.FakeRestRequest; import org.elasticsearch.threadpool.TestThreadPool; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.Transport; import org.elasticsearch.usage.UsageService; import org.elasticsearch.xcontent.XContentType; diff --git a/server/src/test/java/org/elasticsearch/snapshots/SnapshotResiliencyTests.java b/server/src/test/java/org/elasticsearch/snapshots/SnapshotResiliencyTests.java index 67a34bf4a08e9..e55e00f114bf3 100644 --- a/server/src/test/java/org/elasticsearch/snapshots/SnapshotResiliencyTests.java +++ b/server/src/test/java/org/elasticsearch/snapshots/SnapshotResiliencyTests.java @@ -178,9 +178,9 @@ import org.elasticsearch.search.SearchService; import org.elasticsearch.search.builder.SearchSourceBuilder; import org.elasticsearch.search.fetch.FetchPhase; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.BytesRefRecycler; import org.elasticsearch.transport.DisruptableMockTransport; import org.elasticsearch.transport.TransportService; diff --git a/server/src/test/java/org/elasticsearch/tasks/TaskManagerTests.java b/server/src/test/java/org/elasticsearch/tasks/TaskManagerTests.java index dc5f7bdfe1c5b..860d40cae7ea3 100644 --- a/server/src/test/java/org/elasticsearch/tasks/TaskManagerTests.java +++ b/server/src/test/java/org/elasticsearch/tasks/TaskManagerTests.java @@ -25,10 +25,10 @@ import org.elasticsearch.core.Releasable; import org.elasticsearch.core.Releasables; import org.elasticsearch.core.TimeValue; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.threadpool.TestThreadPool; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.FakeTcpChannel; import org.elasticsearch.transport.TcpChannel; import org.elasticsearch.transport.TcpTransportChannel; diff --git a/server/src/test/java/org/elasticsearch/transport/InboundHandlerTests.java b/server/src/test/java/org/elasticsearch/transport/InboundHandlerTests.java index bd4be3f3bf49c..cac0b2b945881 100644 --- a/server/src/test/java/org/elasticsearch/transport/InboundHandlerTests.java +++ b/server/src/test/java/org/elasticsearch/transport/InboundHandlerTests.java @@ -32,12 +32,12 @@ import org.elasticsearch.core.Tuple; import org.elasticsearch.tasks.TaskId; import org.elasticsearch.tasks.TaskManager; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.MockLogAppender; import org.elasticsearch.test.TransportVersionUtils; import org.elasticsearch.threadpool.TestThreadPool; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.junit.After; import org.junit.Before; diff --git a/test/external-modules/seek-tracking-directory/src/main/java/org/elasticsearch/test/seektracker/SeekTrackerPlugin.java b/test/external-modules/seek-tracking-directory/src/main/java/org/elasticsearch/test/seektracker/SeekTrackerPlugin.java index 80a06c55f2349..cc68a3e3ba0cd 100644 --- a/test/external-modules/seek-tracking-directory/src/main/java/org/elasticsearch/test/seektracker/SeekTrackerPlugin.java +++ b/test/external-modules/seek-tracking-directory/src/main/java/org/elasticsearch/test/seektracker/SeekTrackerPlugin.java @@ -31,8 +31,8 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -75,7 +75,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/test/framework/src/main/java/org/elasticsearch/node/MockNode.java b/test/framework/src/main/java/org/elasticsearch/node/MockNode.java index e97d21ae53697..7794f519a8088 100644 --- a/test/framework/src/main/java/org/elasticsearch/node/MockNode.java +++ b/test/framework/src/main/java/org/elasticsearch/node/MockNode.java @@ -40,11 +40,11 @@ import org.elasticsearch.search.SearchService; import org.elasticsearch.search.fetch.FetchPhase; import org.elasticsearch.tasks.TaskManager; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.MockHttpTransport; import org.elasticsearch.test.transport.MockTransportService; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.Transport; import org.elasticsearch.transport.TransportInterceptor; import org.elasticsearch.transport.TransportService; diff --git a/test/framework/src/main/java/org/elasticsearch/search/MockSearchService.java b/test/framework/src/main/java/org/elasticsearch/search/MockSearchService.java index a9d78d36fdb96..a4f97f41cbe1c 100644 --- a/test/framework/src/main/java/org/elasticsearch/search/MockSearchService.java +++ b/test/framework/src/main/java/org/elasticsearch/search/MockSearchService.java @@ -22,8 +22,8 @@ import org.elasticsearch.search.internal.ReaderContext; import org.elasticsearch.search.internal.SearchContext; import org.elasticsearch.search.internal.ShardSearchRequest; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import java.io.IOException; import java.util.HashMap; diff --git a/test/framework/src/main/java/org/elasticsearch/test/ClusterServiceUtils.java b/test/framework/src/main/java/org/elasticsearch/test/ClusterServiceUtils.java index 80c1f0e700e62..3d0ce7c86ebac 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/ClusterServiceUtils.java +++ b/test/framework/src/main/java/org/elasticsearch/test/ClusterServiceUtils.java @@ -34,8 +34,8 @@ import org.elasticsearch.core.TimeValue; import org.elasticsearch.node.NodeClosedException; import org.elasticsearch.tasks.TaskManager; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import java.util.Collections; import java.util.concurrent.CountDownLatch; diff --git a/test/framework/src/main/java/org/elasticsearch/test/MockIndexEventListener.java b/test/framework/src/main/java/org/elasticsearch/test/MockIndexEventListener.java index a130ee136d0be..9b9f464d8dff3 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/MockIndexEventListener.java +++ b/test/framework/src/main/java/org/elasticsearch/test/MockIndexEventListener.java @@ -32,8 +32,8 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -88,7 +88,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/test/framework/src/main/java/org/elasticsearch/test/rest/RestActionTestCase.java b/test/framework/src/main/java/org/elasticsearch/test/rest/RestActionTestCase.java index e15a4e4ec3ece..0f7ad24d32151 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/rest/RestActionTestCase.java +++ b/test/framework/src/main/java/org/elasticsearch/test/rest/RestActionTestCase.java @@ -17,9 +17,9 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.tasks.Task; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.client.NoOpNodeClient; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.usage.UsageService; import org.junit.After; import org.junit.Before; diff --git a/test/framework/src/main/java/org/elasticsearch/test/tasks/MockTaskManager.java b/test/framework/src/main/java/org/elasticsearch/test/tasks/MockTaskManager.java index 0e89df35eca7a..1f2b41297738c 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/tasks/MockTaskManager.java +++ b/test/framework/src/main/java/org/elasticsearch/test/tasks/MockTaskManager.java @@ -17,8 +17,8 @@ import org.elasticsearch.tasks.Task; import org.elasticsearch.tasks.TaskAwareRequest; import org.elasticsearch.tasks.TaskManager; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import java.util.Collection; import java.util.Set; diff --git a/test/framework/src/main/java/org/elasticsearch/test/transport/MockTransport.java b/test/framework/src/main/java/org/elasticsearch/test/transport/MockTransport.java index 43184c5a220f9..d2395a80b9dfd 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/transport/MockTransport.java +++ b/test/framework/src/main/java/org/elasticsearch/test/transport/MockTransport.java @@ -21,8 +21,8 @@ import org.elasticsearch.core.Nullable; import org.elasticsearch.core.Tuple; import org.elasticsearch.tasks.TaskManager; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.CloseableConnection; import org.elasticsearch.transport.ClusterConnectionManager; import org.elasticsearch.transport.RemoteTransportException; diff --git a/test/framework/src/main/java/org/elasticsearch/test/transport/MockTransportService.java b/test/framework/src/main/java/org/elasticsearch/test/transport/MockTransportService.java index 43cb5b78c1f9f..37226b0e97bf6 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/transport/MockTransportService.java +++ b/test/framework/src/main/java/org/elasticsearch/test/transport/MockTransportService.java @@ -37,10 +37,10 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.search.SearchModule; import org.elasticsearch.tasks.TaskManager; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.tasks.MockTaskManager; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.BytesTransportRequest; import org.elasticsearch.transport.ClusterConnectionManager; import org.elasticsearch.transport.ConnectTransportException; diff --git a/test/framework/src/main/java/org/elasticsearch/transport/DisruptableMockTransport.java b/test/framework/src/main/java/org/elasticsearch/transport/DisruptableMockTransport.java index ff35c50891cf4..07e4f05a21fe9 100644 --- a/test/framework/src/main/java/org/elasticsearch/transport/DisruptableMockTransport.java +++ b/test/framework/src/main/java/org/elasticsearch/transport/DisruptableMockTransport.java @@ -21,9 +21,9 @@ import org.elasticsearch.common.util.concurrent.DeterministicTaskQueue; import org.elasticsearch.core.Nullable; import org.elasticsearch.tasks.TaskManager; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.test.transport.MockTransport; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import java.io.IOException; import java.util.ArrayList; diff --git a/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/AnalyticsPlugin.java b/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/AnalyticsPlugin.java index dbefc3989ce45..9360f97990c82 100644 --- a/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/AnalyticsPlugin.java +++ b/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/AnalyticsPlugin.java @@ -25,8 +25,8 @@ import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; import org.elasticsearch.search.aggregations.support.ValuesSourceRegistry; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xpack.analytics.action.AnalyticsInfoTransportAction; @@ -187,7 +187,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/async/src/main/java/org/elasticsearch/xpack/async/AsyncResultsIndexPlugin.java b/x-pack/plugin/async/src/main/java/org/elasticsearch/xpack/async/AsyncResultsIndexPlugin.java index ffc2062b237fb..a0e6d0daac322 100644 --- a/x-pack/plugin/async/src/main/java/org/elasticsearch/xpack/async/AsyncResultsIndexPlugin.java +++ b/x-pack/plugin/async/src/main/java/org/elasticsearch/xpack/async/AsyncResultsIndexPlugin.java @@ -23,8 +23,8 @@ import org.elasticsearch.plugins.SystemIndexPlugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xpack.core.async.AsyncTaskIndexService; @@ -73,7 +73,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/Autoscaling.java b/x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/Autoscaling.java index 155c167c57d1d..e2fc1707c0499 100644 --- a/x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/Autoscaling.java +++ b/x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/Autoscaling.java @@ -36,8 +36,8 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xcontent.ParseField; @@ -119,7 +119,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/Ccr.java b/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/Ccr.java index ec98a7f9123c2..a139b9a55f1be 100644 --- a/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/Ccr.java +++ b/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/Ccr.java @@ -50,10 +50,10 @@ import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; import org.elasticsearch.tasks.Task; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.FixedExecutorBuilder; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xcontent.ParseField; @@ -189,7 +189,7 @@ public Collection createComponents( final NamedWriteableRegistry namedWriteableRegistry, final IndexNameExpressionResolver expressionResolver, final Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/XPackPlugin.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/XPackPlugin.java index bbe5c57b1d00a..1c8881637d4c6 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/XPackPlugin.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/XPackPlugin.java @@ -89,8 +89,8 @@ import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; import org.elasticsearch.snapshots.sourceonly.SourceOnlySnapshotRepository; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xpack.cluster.routing.allocation.DataTierAllocationDecider; @@ -333,7 +333,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/LocalStateCompositeXPackPlugin.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/LocalStateCompositeXPackPlugin.java index 37358c483a749..d4c7828bc3b98 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/LocalStateCompositeXPackPlugin.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/LocalStateCompositeXPackPlugin.java @@ -90,9 +90,10 @@ import org.elasticsearch.script.ScriptService; import org.elasticsearch.search.internal.ShardSearchRequest; import org.elasticsearch.snapshots.Snapshot; +import org.elasticsearch.telemetry.TelemetryProvider; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.Transport; import org.elasticsearch.transport.TransportInterceptor; import org.elasticsearch.watcher.ResourceWatcherService; @@ -204,7 +205,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { @@ -221,7 +222,7 @@ public Collection createComponents( namedWriteableRegistry, expressionResolver, repositoriesServiceSupplier, - tracer, + telemetryProvider, allocationService, indicesService ) @@ -241,7 +242,7 @@ public Collection createComponents( namedWriteableRegistry, expressionResolver, repositoriesServiceSupplier, - tracer, + telemetryProvider, allocationService, indicesService ) diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/termsenum/action/RestTermsEnumActionTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/termsenum/action/RestTermsEnumActionTests.java index 3cbcfe6c074c3..27afe4eeeb952 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/termsenum/action/RestTermsEnumActionTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/termsenum/action/RestTermsEnumActionTests.java @@ -22,12 +22,12 @@ import org.elasticsearch.search.SearchModule; import org.elasticsearch.tasks.Task; import org.elasticsearch.tasks.TaskManager; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.rest.FakeRestChannel; import org.elasticsearch.test.rest.FakeRestRequest; import org.elasticsearch.threadpool.TestThreadPool; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.Transport; import org.elasticsearch.usage.UsageService; import org.elasticsearch.xcontent.NamedXContentRegistry; diff --git a/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/Deprecation.java b/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/Deprecation.java index e094ce30e2f8f..349ff1042d3a9 100644 --- a/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/Deprecation.java +++ b/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/Deprecation.java @@ -29,8 +29,8 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xpack.deprecation.logging.DeprecationCacheResetAction; @@ -100,7 +100,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/enrich/src/main/java/org/elasticsearch/xpack/enrich/EnrichPlugin.java b/x-pack/plugin/enrich/src/main/java/org/elasticsearch/xpack/enrich/EnrichPlugin.java index 60cc7c847b5e3..5fb20a883560f 100644 --- a/x-pack/plugin/enrich/src/main/java/org/elasticsearch/xpack/enrich/EnrichPlugin.java +++ b/x-pack/plugin/enrich/src/main/java/org/elasticsearch/xpack/enrich/EnrichPlugin.java @@ -35,8 +35,8 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xcontent.ParseField; @@ -201,7 +201,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/EnterpriseSearch.java b/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/EnterpriseSearch.java index e7cf7e9a7e489..ad2c033b0ee0c 100644 --- a/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/EnterpriseSearch.java +++ b/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/EnterpriseSearch.java @@ -35,8 +35,8 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xpack.application.analytics.AnalyticsTemplateRegistry; @@ -209,7 +209,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/ent-search/src/test/java/org/elasticsearch/xpack/application/LocalStateEnterpriseSearch.java b/x-pack/plugin/ent-search/src/test/java/org/elasticsearch/xpack/application/LocalStateEnterpriseSearch.java index 1ebe8a644a73f..f10480e9f64a7 100644 --- a/x-pack/plugin/ent-search/src/test/java/org/elasticsearch/xpack/application/LocalStateEnterpriseSearch.java +++ b/x-pack/plugin/ent-search/src/test/java/org/elasticsearch/xpack/application/LocalStateEnterpriseSearch.java @@ -30,8 +30,8 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xpack.core.LocalStateCompositeXPackPlugin; @@ -114,7 +114,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { @@ -130,7 +130,7 @@ public Collection createComponents( namedWriteableRegistry, indexNameExpressionResolver, repositoriesServiceSupplier, - tracer, + telemetryProvider, allocationService, indicesService ); diff --git a/x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/plugin/EqlPlugin.java b/x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/plugin/EqlPlugin.java index f7417f31943e5..d65a81db11266 100644 --- a/x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/plugin/EqlPlugin.java +++ b/x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/plugin/EqlPlugin.java @@ -34,8 +34,8 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xpack.core.XPackPlugin; @@ -83,7 +83,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/EsqlPlugin.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/EsqlPlugin.java index 2ab3feef9fa51..783f5550a00af 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/EsqlPlugin.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/EsqlPlugin.java @@ -39,10 +39,10 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.FixedExecutorBuilder; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xpack.core.action.XPackInfoFeatureAction; @@ -89,7 +89,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/fleet/src/main/java/org/elasticsearch/xpack/fleet/Fleet.java b/x-pack/plugin/fleet/src/main/java/org/elasticsearch/xpack/fleet/Fleet.java index 009e17bd79e6b..0cfa3c43b6b5a 100644 --- a/x-pack/plugin/fleet/src/main/java/org/elasticsearch/xpack/fleet/Fleet.java +++ b/x-pack/plugin/fleet/src/main/java/org/elasticsearch/xpack/fleet/Fleet.java @@ -43,8 +43,8 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xcontent.XContentParser; @@ -112,7 +112,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/identity-provider/src/main/java/org/elasticsearch/xpack/idp/IdentityProviderPlugin.java b/x-pack/plugin/identity-provider/src/main/java/org/elasticsearch/xpack/idp/IdentityProviderPlugin.java index d5cea8ac5caa5..943394f326653 100644 --- a/x-pack/plugin/identity-provider/src/main/java/org/elasticsearch/xpack/idp/IdentityProviderPlugin.java +++ b/x-pack/plugin/identity-provider/src/main/java/org/elasticsearch/xpack/idp/IdentityProviderPlugin.java @@ -32,8 +32,8 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xpack.core.XPackPlugin; @@ -98,7 +98,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/ilm/src/internalClusterTest/java/org/elasticsearch/xpack/ilm/UpdateSettingsStepTests.java b/x-pack/plugin/ilm/src/internalClusterTest/java/org/elasticsearch/xpack/ilm/UpdateSettingsStepTests.java index b084826bc01ca..06ac4673264f3 100644 --- a/x-pack/plugin/ilm/src/internalClusterTest/java/org/elasticsearch/xpack/ilm/UpdateSettingsStepTests.java +++ b/x-pack/plugin/ilm/src/internalClusterTest/java/org/elasticsearch/xpack/ilm/UpdateSettingsStepTests.java @@ -26,9 +26,9 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.test.ESSingleNodeTestCase; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xpack.core.ilm.Step.StepKey; @@ -74,7 +74,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/ilm/IndexLifecycle.java b/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/ilm/IndexLifecycle.java index cf3021612abd8..6409c2b72e1f1 100644 --- a/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/ilm/IndexLifecycle.java +++ b/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/ilm/IndexLifecycle.java @@ -38,8 +38,8 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xcontent.ParseField; @@ -166,7 +166,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/InferencePlugin.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/InferencePlugin.java index 1fee5385cea2a..a5b0754a7f178 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/InferencePlugin.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/InferencePlugin.java @@ -33,8 +33,8 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xpack.core.ClientHelper; @@ -116,7 +116,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MachineLearning.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MachineLearning.java index 59f3f41371b53..d527f998a1ee8 100644 --- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MachineLearning.java +++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MachineLearning.java @@ -77,10 +77,10 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.ScalingExecutorBuilder; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.ContextParser; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -907,7 +907,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/monitoring/src/main/java/org/elasticsearch/xpack/monitoring/Monitoring.java b/x-pack/plugin/monitoring/src/main/java/org/elasticsearch/xpack/monitoring/Monitoring.java index de02debef27a4..47e24b60896da 100644 --- a/x-pack/plugin/monitoring/src/main/java/org/elasticsearch/xpack/monitoring/Monitoring.java +++ b/x-pack/plugin/monitoring/src/main/java/org/elasticsearch/xpack/monitoring/Monitoring.java @@ -34,8 +34,8 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xpack.core.XPackPlugin; @@ -130,7 +130,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/old-lucene-versions/src/main/java/org/elasticsearch/xpack/lucene/bwc/OldLuceneVersions.java b/x-pack/plugin/old-lucene-versions/src/main/java/org/elasticsearch/xpack/lucene/bwc/OldLuceneVersions.java index 915935a2d6b24..8808482d2256f 100644 --- a/x-pack/plugin/old-lucene-versions/src/main/java/org/elasticsearch/xpack/lucene/bwc/OldLuceneVersions.java +++ b/x-pack/plugin/old-lucene-versions/src/main/java/org/elasticsearch/xpack/lucene/bwc/OldLuceneVersions.java @@ -57,8 +57,8 @@ import org.elasticsearch.snapshots.Snapshot; import org.elasticsearch.snapshots.SnapshotRestoreException; import org.elasticsearch.snapshots.sourceonly.SourceOnlySnapshotRepository; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xpack.core.XPackPlugin; @@ -102,7 +102,7 @@ public Collection createComponents( final NamedWriteableRegistry registry, final IndexNameExpressionResolver resolver, final Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/profiling/src/main/java/org/elasticsearch/xpack/profiling/ProfilingPlugin.java b/x-pack/plugin/profiling/src/main/java/org/elasticsearch/xpack/profiling/ProfilingPlugin.java index 49e436ea4251b..e9e1801dfcafb 100644 --- a/x-pack/plugin/profiling/src/main/java/org/elasticsearch/xpack/profiling/ProfilingPlugin.java +++ b/x-pack/plugin/profiling/src/main/java/org/elasticsearch/xpack/profiling/ProfilingPlugin.java @@ -33,10 +33,10 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.ScalingExecutorBuilder; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xpack.core.XPackSettings; @@ -90,7 +90,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/searchable-snapshots/src/main/java/org/elasticsearch/xpack/searchablesnapshots/SearchableSnapshots.java b/x-pack/plugin/searchable-snapshots/src/main/java/org/elasticsearch/xpack/searchablesnapshots/SearchableSnapshots.java index f7a1d3e42036a..acd9ad9e85f50 100644 --- a/x-pack/plugin/searchable-snapshots/src/main/java/org/elasticsearch/xpack/searchablesnapshots/SearchableSnapshots.java +++ b/x-pack/plugin/searchable-snapshots/src/main/java/org/elasticsearch/xpack/searchablesnapshots/SearchableSnapshots.java @@ -70,10 +70,10 @@ import org.elasticsearch.script.ScriptService; import org.elasticsearch.snapshots.SearchableSnapshotsSettings; import org.elasticsearch.snapshots.sourceonly.SourceOnlySnapshotRepository; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.ScalingExecutorBuilder; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xcontent.XContentBuilder; @@ -331,7 +331,7 @@ public Collection createComponents( final NamedWriteableRegistry registry, final IndexNameExpressionResolver resolver, final Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/Security.java b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/Security.java index c8a302249f023..c68b5cdddd789 100644 --- a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/Security.java +++ b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/Security.java @@ -89,10 +89,11 @@ import org.elasticsearch.rest.RestStatus; import org.elasticsearch.script.ScriptService; import org.elasticsearch.search.internal.ShardSearchRequest; +import org.elasticsearch.telemetry.TelemetryProvider; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.FixedExecutorBuilder; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.RemoteClusterService; import org.elasticsearch.transport.Transport; import org.elasticsearch.transport.TransportInterceptor; @@ -633,7 +634,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/SecurityTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/SecurityTests.java index fa7ff7b12994c..f4034117e7036 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/SecurityTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/SecurityTests.java @@ -53,6 +53,7 @@ import org.elasticsearch.rest.RestHandler; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.IndexSettingsModule; import org.elasticsearch.test.MockLogAppender; @@ -61,7 +62,6 @@ import org.elasticsearch.test.rest.FakeRestRequest; import org.elasticsearch.threadpool.TestThreadPool; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.TransportRequest; import org.elasticsearch.usage.UsageService; import org.elasticsearch.watcher.ResourceWatcherService; diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/transport/netty4/SecurityNetty4HeaderSizeLimitTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/transport/netty4/SecurityNetty4HeaderSizeLimitTests.java index df6ba3abda55d..575dac05b50c3 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/transport/netty4/SecurityNetty4HeaderSizeLimitTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/transport/netty4/SecurityNetty4HeaderSizeLimitTests.java @@ -22,9 +22,9 @@ import org.elasticsearch.indices.breaker.NoneCircuitBreakerService; import org.elasticsearch.mocksocket.MockSocket; import org.elasticsearch.tasks.TaskManager; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.RemoteClusterPortSettings; import org.elasticsearch.transport.RequestHandlerRegistry; import org.elasticsearch.transport.TcpHeader; diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/transport/netty4/SecurityNetty4HttpServerTransportTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/transport/netty4/SecurityNetty4HttpServerTransportTests.java index d0cba6b2381d4..1ce1d72f46820 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/transport/netty4/SecurityNetty4HttpServerTransportTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/transport/netty4/SecurityNetty4HttpServerTransportTests.java @@ -44,10 +44,10 @@ import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestResponse; import org.elasticsearch.rest.RestStatus; +import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.test.rest.FakeRestRequest; import org.elasticsearch.threadpool.TestThreadPool; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.netty4.SharedGroupFactory; import org.elasticsearch.transport.netty4.TLSConfig; import org.elasticsearch.xpack.core.XPackSettings; diff --git a/x-pack/plugin/shutdown/src/internalClusterTest/java/org/elasticsearch/xpack/shutdown/NodeShutdownTasksIT.java b/x-pack/plugin/shutdown/src/internalClusterTest/java/org/elasticsearch/xpack/shutdown/NodeShutdownTasksIT.java index eeb766ff70c92..6c5e1e6af69ce 100644 --- a/x-pack/plugin/shutdown/src/internalClusterTest/java/org/elasticsearch/xpack/shutdown/NodeShutdownTasksIT.java +++ b/x-pack/plugin/shutdown/src/internalClusterTest/java/org/elasticsearch/xpack/shutdown/NodeShutdownTasksIT.java @@ -40,9 +40,9 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.test.ESIntegTestCase; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xcontent.ObjectParser; @@ -146,7 +146,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/shutdown/src/main/java/org/elasticsearch/xpack/shutdown/ShutdownPlugin.java b/x-pack/plugin/shutdown/src/main/java/org/elasticsearch/xpack/shutdown/ShutdownPlugin.java index 3b9b7a696c620..754ba7970eaa2 100644 --- a/x-pack/plugin/shutdown/src/main/java/org/elasticsearch/xpack/shutdown/ShutdownPlugin.java +++ b/x-pack/plugin/shutdown/src/main/java/org/elasticsearch/xpack/shutdown/ShutdownPlugin.java @@ -28,8 +28,8 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -53,7 +53,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/SnapshotLifecycle.java b/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/SnapshotLifecycle.java index cb147ab0af345..ba743005bf2df 100644 --- a/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/SnapshotLifecycle.java +++ b/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/SnapshotLifecycle.java @@ -37,8 +37,8 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xcontent.ParseField; @@ -135,7 +135,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/plugin/SqlPlugin.java b/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/plugin/SqlPlugin.java index 6e788c0ebcdc2..8f39ce939a51c 100644 --- a/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/plugin/SqlPlugin.java +++ b/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/plugin/SqlPlugin.java @@ -31,8 +31,8 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xpack.core.XPackPlugin; @@ -99,7 +99,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/stack/src/main/java/org/elasticsearch/xpack/stack/StackPlugin.java b/x-pack/plugin/stack/src/main/java/org/elasticsearch/xpack/stack/StackPlugin.java index 35f651f91ccb7..de0858e59900c 100644 --- a/x-pack/plugin/stack/src/main/java/org/elasticsearch/xpack/stack/StackPlugin.java +++ b/x-pack/plugin/stack/src/main/java/org/elasticsearch/xpack/stack/StackPlugin.java @@ -20,8 +20,8 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -55,7 +55,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/Transform.java b/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/Transform.java index 6eebc97541123..c1964448c2662 100644 --- a/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/Transform.java +++ b/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/Transform.java @@ -49,8 +49,8 @@ import org.elasticsearch.rest.RestHandler; import org.elasticsearch.rest.RestStatus; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xcontent.NamedXContentRegistry.Entry; @@ -241,7 +241,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/voting-only-node/src/main/java/org/elasticsearch/cluster/coordination/votingonly/VotingOnlyNodePlugin.java b/x-pack/plugin/voting-only-node/src/main/java/org/elasticsearch/cluster/coordination/votingonly/VotingOnlyNodePlugin.java index 81adf69aa47e4..1fee6eda5ad6d 100644 --- a/x-pack/plugin/voting-only-node/src/main/java/org/elasticsearch/cluster/coordination/votingonly/VotingOnlyNodePlugin.java +++ b/x-pack/plugin/voting-only-node/src/main/java/org/elasticsearch/cluster/coordination/votingonly/VotingOnlyNodePlugin.java @@ -36,8 +36,8 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.transport.Transport; import org.elasticsearch.transport.TransportException; import org.elasticsearch.transport.TransportInterceptor; @@ -96,7 +96,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/Watcher.java b/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/Watcher.java index afcc8a2097e94..0c8690cc62e5f 100644 --- a/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/Watcher.java +++ b/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/Watcher.java @@ -54,10 +54,10 @@ import org.elasticsearch.script.ScriptContext; import org.elasticsearch.script.ScriptService; import org.elasticsearch.script.TemplateScript; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.FixedExecutorBuilder; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; import org.elasticsearch.xcontent.XContentBuilder; @@ -317,7 +317,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/watcher/src/test/java/org/elasticsearch/xpack/watcher/WatcherPluginTests.java b/x-pack/plugin/watcher/src/test/java/org/elasticsearch/xpack/watcher/WatcherPluginTests.java index 5b40bac54ede6..e1f1933242414 100644 --- a/x-pack/plugin/watcher/src/test/java/org/elasticsearch/xpack/watcher/WatcherPluginTests.java +++ b/x-pack/plugin/watcher/src/test/java/org/elasticsearch/xpack/watcher/WatcherPluginTests.java @@ -15,10 +15,10 @@ import org.elasticsearch.indices.SystemIndexDescriptor; import org.elasticsearch.indices.TestIndexNameExpressionResolver; import org.elasticsearch.plugins.internal.DocumentParsingObserver; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.IndexSettingsModule; import org.elasticsearch.threadpool.ExecutorBuilder; -import org.elasticsearch.tracing.Tracer; import org.elasticsearch.xpack.core.watcher.watch.Watch; import org.elasticsearch.xpack.watcher.notification.NotificationService; @@ -75,7 +75,7 @@ public void testWatcherDisabledTests() throws Exception { // also no component creation if not enabled assertThat( - watcher.createComponents(null, null, null, null, null, null, null, null, null, null, null, Tracer.NOOP, null, null), + watcher.createComponents(null, null, null, null, null, null, null, null, null, null, null, TelemetryProvider.NOOP, null, null), hasSize(0) ); From 92edce8af47f406afb05a05728cda95b25d51223 Mon Sep 17 00:00:00 2001 From: Przemyslaw Gomulka Date: Tue, 19 Sep 2023 16:32:39 +0200 Subject: [PATCH 03/13] security not working --- .../server/cli/APMJvmOptions.java | 6 +- modules/apm/build.gradle | 2 +- modules/apm/src/main/java/module-info.java | 2 +- .../org/elasticsearch/telemetry/apm/APM.java | 2 +- .../telemetry/apm/APMAgentSettings.java | 5 +- .../telemetry/apm/APMMetric.java | 29 +++++-- .../telemetry/apm/OtelCounter.java | 26 +++---- .../telemetry/apm/OtelDoubleGauge.java | 29 ++++--- .../telemetry/apm/OtelDoubleHistogram.java | 30 ++++---- .../plugin-metadata/plugin-security.policy | 1 + server/src/main/java/module-info.java | 2 +- .../AuditTrailSettingsUpdateTests.java | 9 ++- .../xpack/security/Security.java | 8 +- .../audit/logfile/LoggingAuditTrail.java | 31 +++++++- .../xpack/security/SecurityTests.java | 4 +- .../logfile/LoggingAuditTrailFilterTests.java | 76 ++++++++++++++++--- .../audit/logfile/LoggingAuditTrailTests.java | 7 +- 17 files changed, 194 insertions(+), 75 deletions(-) diff --git a/distribution/tools/server-cli/src/main/java/org/elasticsearch/server/cli/APMJvmOptions.java b/distribution/tools/server-cli/src/main/java/org/elasticsearch/server/cli/APMJvmOptions.java index 9dcfc1e373a93..54859fe4a2452 100644 --- a/distribution/tools/server-cli/src/main/java/org/elasticsearch/server/cli/APMJvmOptions.java +++ b/distribution/tools/server-cli/src/main/java/org/elasticsearch/server/cli/APMJvmOptions.java @@ -50,8 +50,8 @@ class APMJvmOptions { // by the agent. Don't disable writing to a log file, as the agent will then // require extra Security Manager permissions when it tries to do something // else, and it's just painful. - "log_file", "_AGENT_HOME_/../../logs/apm.log", - + "log_file", "/Users/przemyslawgomulka/workspace/pgomulka/apm.log", + "log_level", "debug", // ES does not use auto-instrumentation. "instrument", "false" ); @@ -82,7 +82,7 @@ class APMJvmOptions { // is doing, leave this value alone. "log_level", "error", "application_packages", "org.elasticsearch,org.apache.lucene", - "metrics_interval", "120s", + "metrics_interval", "5s", "breakdown_metrics", "false", "central_config", "false" ); diff --git a/modules/apm/build.gradle b/modules/apm/build.gradle index 06a942d38bcd6..c8619c97d1068 100644 --- a/modules/apm/build.gradle +++ b/modules/apm/build.gradle @@ -9,7 +9,7 @@ apply plugin: 'elasticsearch.internal-es-plugin' esplugin { name 'apm' description 'Provides APM integration for Elasticsearch' - classname 'org.elasticsearch.tracing.apm.APM' + classname 'org.elasticsearch.telemetry.apm.APM' } def otelVersion = '1.17.0' diff --git a/modules/apm/src/main/java/module-info.java b/modules/apm/src/main/java/module-info.java index 4f1f8e817d2e8..0bea3078f5f00 100644 --- a/modules/apm/src/main/java/module-info.java +++ b/modules/apm/src/main/java/module-info.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -module org.elasticsearch.tracing.apm { +module org.elasticsearch.telemetry.apm { requires org.elasticsearch.base; requires org.elasticsearch.server; requires org.elasticsearch.xcontent; diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APM.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APM.java index 773d9123f3c82..0cbe2126f9e15 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APM.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APM.java @@ -92,7 +92,7 @@ public Collection createComponents( final APMAgentSettings apmAgentSettings = new APMAgentSettings(); apmAgentSettings.syncAgentSystemProperties(settings); - apmAgentSettings.addClusterSettingsListeners(clusterService, apmTracer); + apmAgentSettings.addClusterSettingsListeners(clusterService, telemetryProvider.get()); final APMMetric apmMetric = telemetryProvider.get().getMetric(); diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMAgentSettings.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMAgentSettings.java index d0fd6c87fe4b6..75a98cd6e34bb 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMAgentSettings.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMAgentSettings.java @@ -41,10 +41,13 @@ class APMAgentSettings { */ static Map APM_AGENT_DEFAULT_SETTINGS = Map.of("transaction_sample_rate", "0.2"); - void addClusterSettingsListeners(ClusterService clusterService, APMTracer apmTracer) { + void addClusterSettingsListeners(ClusterService clusterService, APMTelemetryProvider telemetryProvider) { + APMTracer apmTracer = telemetryProvider.getTracer(); + APMMetric apmMetric = telemetryProvider.getMetric(); final ClusterSettings clusterSettings = clusterService.getClusterSettings(); clusterSettings.addSettingsUpdateConsumer(APM_ENABLED_SETTING, enabled -> { apmTracer.setEnabled(enabled); + apmMetric.setEnabled(enabled); // The agent records data other than spans, e.g. JVM metrics, so we toggle this setting in order to // minimise its impact to a running Elasticsearch. this.setAgentSetting("recording", Boolean.toString(enabled)); diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java index f88cd4b84cd72..160e42e1f0893 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java @@ -14,6 +14,7 @@ import org.elasticsearch.common.component.AbstractLifecycleComponent; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.common.util.LazyInitializable; import org.elasticsearch.common.util.concurrent.ConcurrentCollections; import org.elasticsearch.telemetry.MetricName; import org.elasticsearch.telemetry.metric.Counter; @@ -23,6 +24,7 @@ import java.security.AccessController; import java.security.PrivilegedAction; import java.util.Map; +import java.util.concurrent.atomic.AtomicReference; import static org.elasticsearch.telemetry.apm.APMAgentSettings.APM_ENABLED_SETTING; @@ -31,7 +33,7 @@ public class APMMetric extends AbstractLifecycleComponent implements org.elastic private final Map doubleGauges = ConcurrentCollections.newConcurrentMap(); private final Map doubleHistograms = ConcurrentCollections.newConcurrentMap(); private volatile boolean enabled; - private volatile APMServices services; + private AtomicReference services = new AtomicReference<>(); record APMServices(Meter meter, OpenTelemetry openTelemetry) {} @@ -71,7 +73,10 @@ public Counter registerCounter(MetricName name, String description, T unit) if (v != null) { throw new IllegalStateException("double gauge [" + name.getRawName() + "] already registered"); } - return OtelCounter.build(services.meter, name, description, unit); + var lazyCounter = new LazyInitializable<>( + () -> services.get().meter.counterBuilder(name.getRawName()).setDescription(description).setUnit(unit.toString()).build() + ); + return OtelCounter.build(lazyCounter, name, description, unit); }); } @@ -82,7 +87,11 @@ public DoubleGauge registerDoubleGauge(MetricName name, String description, if (v != null) { throw new IllegalStateException("double gauge [" + name.getRawName() + "] already registered"); } - return OtelDoubleGauge.build(services.meter, name, description, unit); + var lazyGauge = new LazyInitializable<>( + () -> services.get().meter.gaugeBuilder(name.getRawName()).setDescription(description).setUnit(unit.toString()).buildObserver() + ); + + return OtelDoubleGauge.build(lazyGauge, name, description, unit); }); } @@ -93,19 +102,23 @@ public DoubleHistogram registerDoubleHistogram(MetricName name, String descr if (v != null) { throw new IllegalStateException("double histogram [" + name.getRawName() + "] already registered"); } - return OtelDoubleHistogram.build(services.meter, name, description, unit); + var lazyHistogram = new LazyInitializable<>( + () -> services.get().meter.histogramBuilder(name.getRawName()).setDescription(description).setUnit(unit.toString()).build() + ); + + return OtelDoubleHistogram.build(lazyHistogram, name, description, unit); }); } - APMServices createApmServices() { + AtomicReference createApmServices() { assert this.enabled; - assert this.services == null; + assert this.services.get() == null; - return AccessController.doPrivileged((PrivilegedAction) () -> { + return AccessController.doPrivileged((PrivilegedAction>) () -> { var openTelemetry = GlobalOpenTelemetry.get(); var meter = openTelemetry.getMeter("elasticsearch"); - return new APMServices(meter, openTelemetry); + return new AtomicReference<>(new APMServices(meter, openTelemetry)); }); } diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelCounter.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelCounter.java index 4f064313b1e11..0a74d9bf226d6 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelCounter.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelCounter.java @@ -9,40 +9,40 @@ package org.elasticsearch.telemetry.apm; import io.opentelemetry.api.metrics.LongCounter; -import io.opentelemetry.api.metrics.Meter; +import org.elasticsearch.common.util.LazyInitializable; import org.elasticsearch.telemetry.MetricName; import org.elasticsearch.telemetry.metric.Counter; public class OtelCounter implements Counter { - private final LongCounter counter; + private final LazyInitializable counter; private final MetricName name; private final String description; private final T unit; - private OtelCounter(LongCounter counter, MetricName name, String description, T unit) { - this.counter = counter; + private OtelCounter(LazyInitializable lazyCounter, MetricName name, String description, T unit) { + this.counter = lazyCounter; this.name = name; this.description = description; this.unit = unit; } - public static OtelCounter build(Meter meter, MetricName name, String description, T unit) { - return new OtelCounter<>( - meter.counterBuilder(name.getRawName()).setDescription(description).setUnit(unit.toString()).build(), - name, - description, - unit - ); + public static OtelCounter build( + LazyInitializable lazyCounter, + MetricName name, + String description, + T unit + ) { + return new OtelCounter<>(lazyCounter, name, description, unit); } @Override public void increment() { - counter.add(1L); + counter.getOrCompute().add(1L); } @Override public void incrementBy(long inc) { - counter.add(inc); + counter.getOrCompute().add(inc); } } diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleGauge.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleGauge.java index ffb2224cc3ece..edb7ce3efe226 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleGauge.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleGauge.java @@ -8,43 +8,48 @@ package org.elasticsearch.telemetry.apm; -import io.opentelemetry.api.metrics.Meter; import io.opentelemetry.api.metrics.ObservableDoubleMeasurement; +import org.elasticsearch.common.util.LazyInitializable; import org.elasticsearch.telemetry.MetricName; import org.elasticsearch.telemetry.metric.DoubleGauge; import java.util.Map; public class OtelDoubleGauge implements DoubleGauge { - private final ObservableDoubleMeasurement gauge; + private final LazyInitializable gauge; private final MetricName name; private final String description; private final T unit; - private OtelDoubleGauge(ObservableDoubleMeasurement gauge, MetricName name, String description, T unit) { + private OtelDoubleGauge( + LazyInitializable gauge, + MetricName name, + String description, + T unit + ) { this.gauge = gauge; this.name = name; this.description = description; this.unit = unit; } - public static OtelDoubleGauge build(Meter meter, MetricName name, String description, T unit) { - return new OtelDoubleGauge<>( - meter.gaugeBuilder(name.getRawName()).setDescription(description).setUnit(unit.toString()).buildObserver(), - name, - description, - unit - ); + public static OtelDoubleGauge build( + LazyInitializable lazyGauge, + MetricName name, + String description, + T unit + ) { + return new OtelDoubleGauge<>(lazyGauge, name, description, unit); } @Override public void record(double value) { - gauge.record(value); + gauge.getOrCompute().record(value); } @Override public void record(double value, Map attributes) { - gauge.record(value, OtelHelper.fromMap(attributes)); + gauge.getOrCompute().record(value, OtelHelper.fromMap(attributes)); } } diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleHistogram.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleHistogram.java index 78fe9cdf8575c..3de4f5996b7df 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleHistogram.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleHistogram.java @@ -8,8 +8,7 @@ package org.elasticsearch.telemetry.apm; -import io.opentelemetry.api.metrics.Meter; - +import org.elasticsearch.common.util.LazyInitializable; import org.elasticsearch.common.util.concurrent.ThreadContext; import org.elasticsearch.telemetry.MetricName; import org.elasticsearch.telemetry.metric.DoubleHistogram; @@ -17,35 +16,40 @@ import java.util.Map; public class OtelDoubleHistogram implements DoubleHistogram { - private final io.opentelemetry.api.metrics.DoubleHistogram histogram; + private final LazyInitializable histogram; private final MetricName name; private final String description; private final T unit; - public OtelDoubleHistogram(io.opentelemetry.api.metrics.DoubleHistogram histogram, MetricName name, String description, T unit) { + public OtelDoubleHistogram( + LazyInitializable histogram, + MetricName name, + String description, + T unit + ) { this.histogram = histogram; this.name = name; this.description = description; this.unit = unit; } - public static OtelDoubleHistogram build(Meter meter, MetricName name, String description, T unit) { - return new OtelDoubleHistogram<>( - meter.histogramBuilder(name.getRawName()).setDescription(description).setUnit(unit.toString()).build(), - name, - description, - unit - ); + public static OtelDoubleHistogram build( + LazyInitializable lazyHistogram, + MetricName name, + String description, + T unit + ) { + return new OtelDoubleHistogram<>(lazyHistogram, name, description, unit); } @Override public void record(double value) { - histogram.record(value); + histogram.getOrCompute().record(value); } @Override public void record(double value, Map attributes) { - histogram.record(value, OtelHelper.fromMap(attributes)); + histogram.getOrCompute().record(value, OtelHelper.fromMap(attributes)); } @Override diff --git a/modules/apm/src/main/plugin-metadata/plugin-security.policy b/modules/apm/src/main/plugin-metadata/plugin-security.policy index f0032bb291789..b85d3ec05c277 100644 --- a/modules/apm/src/main/plugin-metadata/plugin-security.policy +++ b/modules/apm/src/main/plugin-metadata/plugin-security.policy @@ -26,4 +26,5 @@ grant codeBase "${codebase.elastic-apm-agent}" { permission java.lang.RuntimePermission "getClassLoader"; permission java.io.FilePermission "<>", "read,write"; permission org.elasticsearch.secure_sm.ThreadPermission "modifyArbitraryThreadGroup"; + permission java.net.NetPermission "getProxySelector"; }; diff --git a/server/src/main/java/module-info.java b/server/src/main/java/module-info.java index 6394c4aaf49bb..c14a977e12488 100644 --- a/server/src/main/java/module-info.java +++ b/server/src/main/java/module-info.java @@ -364,7 +364,7 @@ exports org.elasticsearch.tasks; exports org.elasticsearch.threadpool; exports org.elasticsearch.telemetry; - exports org.elasticsearch.telemetry.metric to org.elasticsearch.tracing.apm; + exports org.elasticsearch.telemetry.metric to org.elasticsearch.telemetry.apm, org.elasticsearch.security; exports org.elasticsearch.transport; exports org.elasticsearch.upgrades; exports org.elasticsearch.usage; diff --git a/x-pack/plugin/security/src/internalClusterTest/java/org/elasticsearch/xpack/security/audit/logfile/AuditTrailSettingsUpdateTests.java b/x-pack/plugin/security/src/internalClusterTest/java/org/elasticsearch/xpack/security/audit/logfile/AuditTrailSettingsUpdateTests.java index 84a7f752d56a4..1036ebc000915 100644 --- a/x-pack/plugin/security/src/internalClusterTest/java/org/elasticsearch/xpack/security/audit/logfile/AuditTrailSettingsUpdateTests.java +++ b/x-pack/plugin/security/src/internalClusterTest/java/org/elasticsearch/xpack/security/audit/logfile/AuditTrailSettingsUpdateTests.java @@ -12,6 +12,7 @@ import org.elasticsearch.common.settings.Setting; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.util.concurrent.ThreadContext; +import org.elasticsearch.telemetry.metric.Metric; import org.elasticsearch.test.ESIntegTestCase.ClusterScope; import org.elasticsearch.test.SecurityIntegTestCase; import org.elasticsearch.xpack.security.audit.AuditLevel; @@ -80,7 +81,13 @@ public void testDynamicFilterSettings() throws Exception { settingsBuilder.put(startupFilterSettings); settingsBuilder.put(updateFilterSettings); // reference audit trail containing all filters - final LoggingAuditTrail auditTrail = new LoggingAuditTrail(settingsBuilder.build(), clusterService, logger, threadContext); + final LoggingAuditTrail auditTrail = new LoggingAuditTrail( + settingsBuilder.build(), + clusterService, + logger, + threadContext, + Metric.NOOP + ); final String expected = auditTrail.eventFilterPolicyRegistry.toString(); // update settings on internal cluster updateClusterSettings(Settings.builder().put(updateFilterSettings)); diff --git a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/Security.java b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/Security.java index c68b5cdddd789..b3ecdaedd83b5 100644 --- a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/Security.java +++ b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/Security.java @@ -648,7 +648,8 @@ public Collection createComponents( xContentRegistry, environment, nodeEnvironment.nodeMetadata(), - expressionResolver + expressionResolver, + telemetryProvider ); } catch (final Exception e) { throw new IllegalStateException("security initialization failed", e); @@ -665,7 +666,8 @@ Collection createComponents( NamedXContentRegistry xContentRegistry, Environment environment, NodeMetadata nodeMetadata, - IndexNameExpressionResolver expressionResolver + IndexNameExpressionResolver expressionResolver, + TelemetryProvider telemetryProvider ) throws Exception { logger.info("Security is {}", enabled ? "enabled" : "disabled"); if (enabled == false) { @@ -704,7 +706,7 @@ Collection createComponents( // audit trail service construction final AuditTrail auditTrail = XPackSettings.AUDIT_ENABLED.get(settings) - ? new LoggingAuditTrail(settings, clusterService, threadPool) + ? new LoggingAuditTrail(settings, clusterService, threadPool, telemetryProvider.getMetric()) : null; final AuditTrailService auditTrailService = new AuditTrailService(auditTrail, getLicenseState()); components.add(auditTrailService); diff --git a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/audit/logfile/LoggingAuditTrail.java b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/audit/logfile/LoggingAuditTrail.java index 1b4f4b891c7ea..4a39f45c94737 100644 --- a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/audit/logfile/LoggingAuditTrail.java +++ b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/audit/logfile/LoggingAuditTrail.java @@ -35,6 +35,9 @@ import org.elasticsearch.node.Node; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.tasks.Task; +import org.elasticsearch.telemetry.MetricName; +import org.elasticsearch.telemetry.metric.Counter; +import org.elasticsearch.telemetry.metric.Metric; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.transport.TransportRequest; import org.elasticsearch.transport.TransportResponse; @@ -381,6 +384,7 @@ public class LoggingAuditTrail implements AuditTrail, ClusterStateListener { private final ThreadContext threadContext; private final SecurityContext securityContext; final EventFilterPolicyRegistry eventFilterPolicyRegistry; + private final Counter authenticationFailedCounter; // package for testing volatile EnumSet events; boolean includeRequestBody; @@ -392,11 +396,16 @@ public String name() { return NAME; } - public LoggingAuditTrail(Settings settings, ClusterService clusterService, ThreadPool threadPool) { - this(settings, clusterService, LogManager.getLogger(LoggingAuditTrail.class), threadPool.getThreadContext()); + public LoggingAuditTrail(Settings settings, ClusterService clusterService, ThreadPool threadPool, Metric metric) { + this(settings, clusterService, LogManager.getLogger(LoggingAuditTrail.class), threadPool.getThreadContext(), metric); } - LoggingAuditTrail(Settings settings, ClusterService clusterService, Logger logger, ThreadContext threadContext) { + LoggingAuditTrail(Settings settings, ClusterService clusterService, Logger logger, ThreadContext threadContext, Metric metric) { + this.authenticationFailedCounter = metric.registerCounter( + new MetricName("authenticationFailed"), + "authenticationFailed", + new Object() + ); this.logger = logger; this.events = parse(INCLUDE_EVENT_SETTINGS.get(settings), EXCLUDE_EVENT_SETTINGS.get(settings)); this.includeRequestBody = INCLUDE_REQUEST_BODY.get(settings); @@ -564,7 +573,10 @@ public void anonymousAccessDenied(String requestId, HttpPreRequest request) { @Override public void authenticationFailed(String requestId, AuthenticationToken token, String action, TransportRequest transportRequest) { + if (events.contains(AUTHENTICATION_FAILED)) { + authenticationFailedCounter.increment(); + final Optional indices = Optional.ofNullable(indices(transportRequest)); if (eventFilterPolicyRegistry.ignorePredicate() .test(new AuditEventMetaInfo(Optional.of(token), Optional.empty(), indices, Optional.of(action))) == false) { @@ -587,7 +599,10 @@ public void authenticationFailed(String requestId, AuthenticationToken token, St @Override public void authenticationFailed(String requestId, HttpPreRequest request) { + if (events.contains(AUTHENTICATION_FAILED) && eventFilterPolicyRegistry.ignorePredicate().test(AuditEventMetaInfo.EMPTY) == false) { + authenticationFailedCounter.increment(); + new LogEntryBuilder().with(EVENT_TYPE_FIELD_NAME, REST_ORIGIN_FIELD_VALUE) .with(EVENT_ACTION_FIELD_NAME, "authentication_failed") .withRestUriAndMethod(request) @@ -600,7 +615,10 @@ public void authenticationFailed(String requestId, HttpPreRequest request) { @Override public void authenticationFailed(String requestId, String action, TransportRequest transportRequest) { + if (events.contains(AUTHENTICATION_FAILED)) { + authenticationFailedCounter.increment(); + final Optional indices = Optional.ofNullable(indices(transportRequest)); if (eventFilterPolicyRegistry.ignorePredicate() .test(new AuditEventMetaInfo(Optional.empty(), Optional.empty(), indices, Optional.of(action))) == false) { @@ -619,9 +637,12 @@ public void authenticationFailed(String requestId, String action, TransportReque @Override public void authenticationFailed(String requestId, AuthenticationToken token, HttpPreRequest request) { + if (events.contains(AUTHENTICATION_FAILED) && eventFilterPolicyRegistry.ignorePredicate() .test(new AuditEventMetaInfo(Optional.of(token), Optional.empty(), Optional.empty(), Optional.empty())) == false) { + authenticationFailedCounter.increment(); + final LogEntryBuilder logEntryBuilder = new LogEntryBuilder().with(EVENT_TYPE_FIELD_NAME, REST_ORIGIN_FIELD_VALUE) .with(EVENT_ACTION_FIELD_NAME, "authentication_failed") .with(PRINCIPAL_FIELD_NAME, token.principal()) @@ -645,6 +666,8 @@ public void authenticationFailed( TransportRequest transportRequest ) { if (events.contains(REALM_AUTHENTICATION_FAILED)) { + authenticationFailedCounter.increment(); + final Optional indices = Optional.ofNullable(indices(transportRequest)); if (eventFilterPolicyRegistry.ignorePredicate() .test(new AuditEventMetaInfo(Optional.of(token), Optional.of(realm), indices, Optional.of(action))) == false) { @@ -669,6 +692,8 @@ public void authenticationFailed(String requestId, String realm, AuthenticationT if (events.contains(REALM_AUTHENTICATION_FAILED) && eventFilterPolicyRegistry.ignorePredicate() .test(new AuditEventMetaInfo(Optional.of(token), Optional.of(realm), Optional.empty(), Optional.empty())) == false) { + authenticationFailedCounter.increment(); + new LogEntryBuilder().with(EVENT_TYPE_FIELD_NAME, REST_ORIGIN_FIELD_VALUE) .with(EVENT_ACTION_FIELD_NAME, "realm_authentication_failed") .with(REALM_FIELD_NAME, realm) diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/SecurityTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/SecurityTests.java index f4034117e7036..dcef22044a16f 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/SecurityTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/SecurityTests.java @@ -53,6 +53,7 @@ import org.elasticsearch.rest.RestHandler; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.Tracer; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.IndexSettingsModule; @@ -211,7 +212,8 @@ private Collection createComponentsUtil(Settings settings) throws Except xContentRegistry(), env, nodeMetadata, - TestIndexNameExpressionResolver.newInstance(threadContext) + TestIndexNameExpressionResolver.newInstance(threadContext), + TelemetryProvider.NOOP ); } diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/audit/logfile/LoggingAuditTrailFilterTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/audit/logfile/LoggingAuditTrailFilterTests.java index 9da5de1a5dd9b..14748c47b5bf2 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/audit/logfile/LoggingAuditTrailFilterTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/audit/logfile/LoggingAuditTrailFilterTests.java @@ -27,6 +27,7 @@ import org.elasticsearch.common.util.concurrent.ThreadContext; import org.elasticsearch.http.HttpRequest; import org.elasticsearch.rest.RestRequest; +import org.elasticsearch.telemetry.metric.Metric; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.rest.FakeRestRequest; import org.elasticsearch.test.rest.FakeRestRequest.Builder; @@ -149,7 +150,13 @@ public void testPolicyDoesNotMatchNullValuesInEvent() throws Exception { final List filteredActions = randomNonEmptyListOfFilteredActions(); settingsBuilder.putList("xpack.security.audit.logfile.events.ignore_filters.actionsPolicy.actions", filteredActions); - final LoggingAuditTrail auditTrail = new LoggingAuditTrail(settingsBuilder.build(), clusterService, logger, threadContext); + final LoggingAuditTrail auditTrail = new LoggingAuditTrail( + settingsBuilder.build(), + clusterService, + logger, + threadContext, + Metric.NOOP + ); // user field matches assertTrue( @@ -325,7 +332,13 @@ public void testSingleCompletePolicyPredicate() throws Exception { final List filteredActions = randomNonEmptyListOfFilteredActions(); settingsBuilder.putList("xpack.security.audit.logfile.events.ignore_filters.completeFilterPolicy.actions", filteredActions); - final LoggingAuditTrail auditTrail = new LoggingAuditTrail(settingsBuilder.build(), clusterService, logger, threadContext); + final LoggingAuditTrail auditTrail = new LoggingAuditTrail( + settingsBuilder.build(), + clusterService, + logger, + threadContext, + Metric.NOOP + ); // all fields match Random random = random(); @@ -521,7 +534,13 @@ public void testSingleCompleteWithEmptyFieldPolicyPredicate() throws Exception { final List filteredActions = randomNonEmptyListOfFilteredActions(); settingsBuilder.putList("xpack.security.audit.logfile.events.ignore_filters.completeFilterPolicy.actions", filteredActions); - final LoggingAuditTrail auditTrail = new LoggingAuditTrail(settingsBuilder.build(), clusterService, logger, threadContext); + final LoggingAuditTrail auditTrail = new LoggingAuditTrail( + settingsBuilder.build(), + clusterService, + logger, + threadContext, + Metric.NOOP + ); // all fields match Random random = random(); @@ -734,7 +753,13 @@ public void testTwoPolicyPredicatesWithMissingFields() throws Exception { final List filteredIndices = randomNonEmptyListOfFilteredNames(); settingsBuilder.putList("xpack.security.audit.logfile.events.ignore_filters.secondPolicy.indices", filteredIndices); - final LoggingAuditTrail auditTrail = new LoggingAuditTrail(settingsBuilder.build(), clusterService, logger, threadContext); + final LoggingAuditTrail auditTrail = new LoggingAuditTrail( + settingsBuilder.build(), + clusterService, + logger, + threadContext, + Metric.NOOP + ); final User unfilteredUser; unfilteredUser = new User(UNFILTER_MARKER + randomAlphaOfLengthBetween(1, 8)); @@ -870,7 +895,13 @@ public void testUsersFilter() throws Exception { final MockToken filteredToken = new MockToken(randomFrom(allFilteredUsers)); final MockToken unfilteredToken = new MockToken(UNFILTER_MARKER + randomAlphaOfLengthBetween(1, 4)); - final LoggingAuditTrail auditTrail = new LoggingAuditTrail(settingsBuilder.build(), clusterService, logger, threadContext); + final LoggingAuditTrail auditTrail = new LoggingAuditTrail( + settingsBuilder.build(), + clusterService, + logger, + threadContext, + Metric.NOOP + ); final List logOutput = CapturingLogger.output(logger.getName(), Level.INFO); // anonymous accessDenied auditTrail.anonymousAccessDenied(randomAlphaOfLength(8), "_action", request); @@ -1223,7 +1254,13 @@ public void testRealmsFilter() throws Exception { : new MockIndicesRequest(threadContext, new String[] { "idx1", "idx2" }); final MockToken authToken = new MockToken("token1"); - final LoggingAuditTrail auditTrail = new LoggingAuditTrail(settingsBuilder.build(), clusterService, logger, threadContext); + final LoggingAuditTrail auditTrail = new LoggingAuditTrail( + settingsBuilder.build(), + clusterService, + logger, + threadContext, + Metric.NOOP + ); final List logOutput = CapturingLogger.output(logger.getName(), Level.INFO); // anonymous accessDenied auditTrail.anonymousAccessDenied(randomAlphaOfLength(8), "_action", request); @@ -1730,7 +1767,13 @@ public void testRolesFilter() throws Exception { : new MockIndicesRequest(threadContext, new String[] { "idx1", "idx2" }); final MockToken authToken = new MockToken("token1"); - final LoggingAuditTrail auditTrail = new LoggingAuditTrail(settingsBuilder.build(), clusterService, logger, threadContext); + final LoggingAuditTrail auditTrail = new LoggingAuditTrail( + settingsBuilder.build(), + clusterService, + logger, + threadContext, + Metric.NOOP + ); final List logOutput = CapturingLogger.output(logger.getName(), Level.INFO); // anonymous accessDenied auditTrail.anonymousAccessDenied(randomAlphaOfLength(8), "_action", request); @@ -2047,7 +2090,13 @@ public void testIndicesFilter() throws Exception { final MockToken authToken = new MockToken("token1"); final TransportRequest noIndexRequest = new MockRequest(threadContext); - final LoggingAuditTrail auditTrail = new LoggingAuditTrail(settingsBuilder.build(), clusterService, logger, threadContext); + final LoggingAuditTrail auditTrail = new LoggingAuditTrail( + settingsBuilder.build(), + clusterService, + logger, + threadContext, + Metric.NOOP + ); final List logOutput = CapturingLogger.output(logger.getName(), Level.INFO); // anonymous accessDenied auditTrail.anonymousAccessDenied(randomAlphaOfLength(8), "_action", noIndexRequest); @@ -2517,7 +2566,13 @@ public void testActionsFilter() throws Exception { ? new MockRequest(threadContext) : new MockIndicesRequest(threadContext, new String[] { "idx1", "idx2" }); final MockToken authToken = new MockToken("token1"); - final LoggingAuditTrail auditTrail = new LoggingAuditTrail(settingsBuilder.build(), clusterService, logger, threadContext); + final LoggingAuditTrail auditTrail = new LoggingAuditTrail( + settingsBuilder.build(), + clusterService, + logger, + threadContext, + Metric.NOOP + ); final List logOutput = CapturingLogger.output(logger.getName(), Level.INFO); // anonymous accessDenied @@ -2752,7 +2807,8 @@ public void testRemoveIgnoreFilter() throws IllegalAccessException, IOException Settings.builder().put(settings).build(), clusterService, logger, - threadContext + threadContext, + Metric.NOOP ); final List logOutput = CapturingLogger.output(logger.getName(), Level.INFO); diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/audit/logfile/LoggingAuditTrailTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/audit/logfile/LoggingAuditTrailTests.java index 9ec2e8be383b6..0b108217d6ec6 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/audit/logfile/LoggingAuditTrailTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/audit/logfile/LoggingAuditTrailTests.java @@ -38,6 +38,7 @@ import org.elasticsearch.core.Tuple; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.tasks.Task; +import org.elasticsearch.telemetry.metric.Metric; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.rest.FakeRestRequest; import org.elasticsearch.test.rest.FakeRestRequest.Builder; @@ -353,7 +354,7 @@ public void init() throws Exception { ); } logger = CapturingLogger.newCapturingLogger(randomFrom(Level.OFF, Level.FATAL, Level.ERROR, Level.WARN, Level.INFO), patternLayout); - auditTrail = new LoggingAuditTrail(settings, clusterService, logger, threadContext); + auditTrail = new LoggingAuditTrail(settings, clusterService, logger, threadContext, Metric.NOOP); apiKeyService = new ApiKeyService( settings, Clock.systemUTC(), @@ -2708,7 +2709,7 @@ public void testCrossClusterAccessAuthenticationSuccessTransport() throws Except public void testRequestsWithoutIndices() throws Exception { settings = Settings.builder().put(settings).put("xpack.security.audit.logfile.events.include", "_all").build(); - auditTrail = new LoggingAuditTrail(settings, clusterService, logger, threadContext); + auditTrail = new LoggingAuditTrail(settings, clusterService, logger, threadContext, Metric.NOOP); final AuthorizationInfo authorizationInfo = () -> Collections.singletonMap( PRINCIPAL_ROLES_FIELD_NAME, new String[] { randomAlphaOfLengthBetween(1, 6) } @@ -2796,7 +2797,7 @@ private void updateLoggerSettings(Settings settings) { this.settings = settings; // either create a new audit trail or update the settings on the existing one if (randomBoolean()) { - this.auditTrail = new LoggingAuditTrail(settings, clusterService, logger, threadContext); + this.auditTrail = new LoggingAuditTrail(settings, clusterService, logger, threadContext, Metric.NOOP); } else { this.clusterService.getClusterSettings().applySettings(settings); } From 65bfb4d91e4ff2e1b20dab566e3d5926f4b79ff3 Mon Sep 17 00:00:00 2001 From: Przemyslaw Gomulka Date: Tue, 19 Sep 2023 16:58:05 +0200 Subject: [PATCH 04/13] fix startup order --- .../org/elasticsearch/telemetry/apm/APMMetric.java | 13 +++++++------ .../telemetry/apm/APMTelemetryProvider.java | 6 ++++-- .../security/audit/logfile/LoggingAuditTrail.java | 4 ++++ 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java index 160e42e1f0893..b504eb1ede843 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java @@ -45,7 +45,7 @@ public APMMetric(Settings settings) { void setEnabled(boolean enabled) { this.enabled = enabled; if (enabled) { - this.services = createApmServices(); + createApmServices(); } else { destroyApmServices(); } @@ -54,7 +54,7 @@ void setEnabled(boolean enabled) { @Override protected void doStart() { if (enabled) { - this.services = createApmServices(); + createApmServices(); } } @@ -110,20 +110,21 @@ public DoubleHistogram registerDoubleHistogram(MetricName name, String descr }); } - AtomicReference createApmServices() { + void createApmServices() { assert this.enabled; assert this.services.get() == null; - return AccessController.doPrivileged((PrivilegedAction>) () -> { + AccessController.doPrivileged((PrivilegedAction) () -> { var openTelemetry = GlobalOpenTelemetry.get(); var meter = openTelemetry.getMeter("elasticsearch"); - return new AtomicReference<>(new APMServices(meter, openTelemetry)); + this.services.set(new APMServices(meter, openTelemetry)); + return null; }); } private void destroyApmServices() { - this.services = null; + this.services.set(null); } } diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTelemetryProvider.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTelemetryProvider.java index eb17b9d0e19aa..d4f76d56d06c1 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTelemetryProvider.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTelemetryProvider.java @@ -13,20 +13,22 @@ public class APMTelemetryProvider implements TelemetryProvider { private Settings settings; + final APMMetric apmMetric; + final APMTracer apmTracer; public APMTelemetryProvider(Settings settings) { this.settings = settings; + apmMetric = new APMMetric(settings); + apmTracer = new APMTracer(settings); } @Override public APMTracer getTracer() { - final APMTracer apmTracer = new APMTracer(settings); return apmTracer; } @Override public APMMetric getMetric() { - final APMMetric apmMetric = new APMMetric(settings); return apmMetric; } } diff --git a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/audit/logfile/LoggingAuditTrail.java b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/audit/logfile/LoggingAuditTrail.java index 4a39f45c94737..c6bd81b87a96c 100644 --- a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/audit/logfile/LoggingAuditTrail.java +++ b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/audit/logfile/LoggingAuditTrail.java @@ -541,6 +541,8 @@ public void authenticationSuccess(String requestId, Authentication authenticatio @Override public void anonymousAccessDenied(String requestId, String action, TransportRequest transportRequest) { if (events.contains(ANONYMOUS_ACCESS_DENIED)) { + authenticationFailedCounter.increment(); + final Optional indices = Optional.ofNullable(indices(transportRequest)); if (eventFilterPolicyRegistry.ignorePredicate() .test(new AuditEventMetaInfo(Optional.empty(), Optional.empty(), indices, Optional.of(action))) == false) { @@ -561,6 +563,8 @@ public void anonymousAccessDenied(String requestId, String action, TransportRequ public void anonymousAccessDenied(String requestId, HttpPreRequest request) { if (events.contains(ANONYMOUS_ACCESS_DENIED) && eventFilterPolicyRegistry.ignorePredicate().test(AuditEventMetaInfo.EMPTY) == false) { + authenticationFailedCounter.increment(); + new LogEntryBuilder().with(EVENT_TYPE_FIELD_NAME, REST_ORIGIN_FIELD_VALUE) .with(EVENT_ACTION_FIELD_NAME, "anonymous_access_denied") .withRestUriAndMethod(request) From 3422c750180a1cd65ba0d7d757b9038c78ac8e8e Mon Sep 17 00:00:00 2001 From: Przemyslaw Gomulka Date: Wed, 20 Sep 2023 14:36:35 +0200 Subject: [PATCH 05/13] update apm agent --- .../elasticsearch/server/cli/APMJvmOptions.java | 4 +++- gradle/verification-metadata.xml | 5 +++++ modules/apm/build.gradle | 2 +- .../telemetry/apm/APMAgentSettings.java | 3 ++- .../elasticsearch/telemetry/apm/APMMetric.java | 17 +++++++++++++++++ .../elasticsearch/telemetry/apm/APMTracer.java | 7 ++----- .../telemetry/apm/APMTracerTests.java | 3 +-- .../main/java/org/elasticsearch/node/Node.java | 4 ++++ 8 files changed, 35 insertions(+), 10 deletions(-) diff --git a/distribution/tools/server-cli/src/main/java/org/elasticsearch/server/cli/APMJvmOptions.java b/distribution/tools/server-cli/src/main/java/org/elasticsearch/server/cli/APMJvmOptions.java index 54859fe4a2452..45a4a1d7d8f14 100644 --- a/distribution/tools/server-cli/src/main/java/org/elasticsearch/server/cli/APMJvmOptions.java +++ b/distribution/tools/server-cli/src/main/java/org/elasticsearch/server/cli/APMJvmOptions.java @@ -53,7 +53,9 @@ class APMJvmOptions { "log_file", "/Users/przemyslawgomulka/workspace/pgomulka/apm.log", "log_level", "debug", // ES does not use auto-instrumentation. - "instrument", "false" + "instrument", "false", + "experimental", "true", + "enable_experimental_instrumentations", "true" ); /** diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 7a894242f785b..e06946a321ef4 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -74,6 +74,11 @@ + + + + + diff --git a/modules/apm/build.gradle b/modules/apm/build.gradle index c8619c97d1068..c1fecfb25092c 100644 --- a/modules/apm/build.gradle +++ b/modules/apm/build.gradle @@ -18,7 +18,7 @@ dependencies { implementation "io.opentelemetry:opentelemetry-api:${otelVersion}" implementation "io.opentelemetry:opentelemetry-context:${otelVersion}" implementation "io.opentelemetry:opentelemetry-semconv:${otelVersion}-alpha" - runtimeOnly "co.elastic.apm:elastic-apm-agent:1.36.0" + implementation "co.elastic.apm:elastic-apm-agent:1.37.0" } tasks.named("dependencyLicenses").configure { diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMAgentSettings.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMAgentSettings.java index 75a98cd6e34bb..320d0187a43c0 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMAgentSettings.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMAgentSettings.java @@ -39,7 +39,8 @@ class APMAgentSettings { * Sensible defaults that Elasticsearch configures. This cannot be done via the APM agent * config file, as then their values could not be overridden dynamically via system properties. */ - static Map APM_AGENT_DEFAULT_SETTINGS = Map.of("transaction_sample_rate", "0.2"); + static Map APM_AGENT_DEFAULT_SETTINGS = Map.of("transaction_sample_rate", "0.2", + "enable_experimental_instrumentations", "true"); void addClusterSettingsListeners(ClusterService clusterService, APMTelemetryProvider telemetryProvider) { APMTracer apmTracer = telemetryProvider.getTracer(); diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java index b504eb1ede843..ecc18ad2d35c2 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java @@ -10,6 +10,7 @@ import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.api.metrics.LongCounter; import io.opentelemetry.api.metrics.Meter; import org.elasticsearch.common.component.AbstractLifecycleComponent; @@ -119,6 +120,22 @@ void createApmServices() { var meter = openTelemetry.getMeter("elasticsearch"); this.services.set(new APMServices(meter, openTelemetry)); + + Meter myMeter = GlobalOpenTelemetry.getMeter("my_meter"); + LongCounter counter = myMeter.counterBuilder("my_counter").build(); + + new Thread(new Runnable() { + @Override + public void run() { + try { + counter.add(42); + Thread.sleep(2000); + }catch (Exception e){ + + } + } + }).start(); + return null; }); } diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTracer.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTracer.java index 0d133dc49994a..3bffd32286ddd 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTracer.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTracer.java @@ -10,7 +10,6 @@ import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.api.OpenTelemetry; -import io.opentelemetry.api.metrics.Meter; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.SpanBuilder; import io.opentelemetry.api.trace.SpanKind; @@ -87,7 +86,7 @@ public void setNodeName(String nodeName) { /** * This class is used to make all OpenTelemetry services visible at once */ - record APMServices(Tracer tracer, Meter meter, OpenTelemetry openTelemetry) {} + record APMServices(Tracer tracer, OpenTelemetry openTelemetry) {} public APMTracer(Settings settings) { this.includeNames = APM_TRACING_NAMES_INCLUDE_SETTING.get(settings); @@ -151,9 +150,7 @@ APMServices createApmServices() { return AccessController.doPrivileged((PrivilegedAction) () -> { var openTelemetry = GlobalOpenTelemetry.get(); var tracer = openTelemetry.getTracer("elasticsearch", Version.CURRENT.toString()); - var meter = openTelemetry.getMeter("elasticsearch"); - - return new APMServices(tracer, meter, openTelemetry); + return new APMServices(tracer, openTelemetry); }); } diff --git a/modules/apm/src/test/java/org/elasticsearch/telemetry/apm/APMTracerTests.java b/modules/apm/src/test/java/org/elasticsearch/telemetry/apm/APMTracerTests.java index a5ffe7ac00ba4..5d4e7fe63ee87 100644 --- a/modules/apm/src/test/java/org/elasticsearch/telemetry/apm/APMTracerTests.java +++ b/modules/apm/src/test/java/org/elasticsearch/telemetry/apm/APMTracerTests.java @@ -10,7 +10,6 @@ import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.metrics.Meter; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.SpanBuilder; import io.opentelemetry.api.trace.SpanContext; @@ -270,7 +269,7 @@ APMServices createApmServices() { // spy the spanBuilder return new SpySpanBuilder(apmServices.tracer(), spanName); }).when(mockTracer).spanBuilder(anyString()); - return new APMServices(mockTracer, mock(Meter.class), apmServices.openTelemetry()); + return new APMServices(mockTracer, apmServices.openTelemetry()); } Instant getSpanStartTime(String spanName) { diff --git a/server/src/main/java/org/elasticsearch/node/Node.java b/server/src/main/java/org/elasticsearch/node/Node.java index b8e501be8c20e..466e00e093501 100644 --- a/server/src/main/java/org/elasticsearch/node/Node.java +++ b/server/src/main/java/org/elasticsearch/node/Node.java @@ -213,8 +213,10 @@ import org.elasticsearch.tasks.TaskCancellationService; import org.elasticsearch.tasks.TaskManager; import org.elasticsearch.tasks.TaskResultsService; +import org.elasticsearch.telemetry.MetricName; import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.Tracer; +import org.elasticsearch.telemetry.metric.Metric; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.transport.RemoteClusterPortSettings; @@ -1596,6 +1598,8 @@ public void onTimeout(TimeValue timeout) { pluginsService.filterPlugins(ClusterPlugin.class).forEach(ClusterPlugin::onNodeStarted); + + return this; } From bd3b9b3d45b31ed7d668a7de04bbe2e5fafb57ae Mon Sep 17 00:00:00 2001 From: Przemyslaw Gomulka Date: Wed, 20 Sep 2023 17:03:18 +0200 Subject: [PATCH 06/13] metric sent --- .../java/org/elasticsearch/server/cli/APMJvmOptions.java | 2 +- modules/apm/build.gradle | 8 +++++++- .../apm/src/main/plugin-metadata/plugin-security.policy | 1 + 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/distribution/tools/server-cli/src/main/java/org/elasticsearch/server/cli/APMJvmOptions.java b/distribution/tools/server-cli/src/main/java/org/elasticsearch/server/cli/APMJvmOptions.java index 45a4a1d7d8f14..b0f53286e6e75 100644 --- a/distribution/tools/server-cli/src/main/java/org/elasticsearch/server/cli/APMJvmOptions.java +++ b/distribution/tools/server-cli/src/main/java/org/elasticsearch/server/cli/APMJvmOptions.java @@ -319,7 +319,7 @@ static Path findAgentJar(String installDir) throws IOException, UserException { try (var apmStream = Files.list(apmModule)) { final List paths = apmStream.filter( - path -> path.getFileName().toString().matches("elastic-apm-agent-\\d+\\.\\d+\\.\\d+\\.jar") + path -> path.getFileName().toString().matches("elastic-apm-agent-.*.jar") ).toList(); if (paths.size() > 1) { diff --git a/modules/apm/build.gradle b/modules/apm/build.gradle index c1fecfb25092c..96032d873f986 100644 --- a/modules/apm/build.gradle +++ b/modules/apm/build.gradle @@ -14,11 +14,17 @@ esplugin { def otelVersion = '1.17.0' +repositories { + maven { + name "sonatype-nexus-snapshots" + url "https://oss.sonatype.org/content/repositories/snapshots" + } +} dependencies { implementation "io.opentelemetry:opentelemetry-api:${otelVersion}" implementation "io.opentelemetry:opentelemetry-context:${otelVersion}" implementation "io.opentelemetry:opentelemetry-semconv:${otelVersion}-alpha" - implementation "co.elastic.apm:elastic-apm-agent:1.37.0" + implementation "co.elastic.apm:elastic-apm-agent:1.42.1-SNAPSHOT" } tasks.named("dependencyLicenses").configure { diff --git a/modules/apm/src/main/plugin-metadata/plugin-security.policy b/modules/apm/src/main/plugin-metadata/plugin-security.policy index b85d3ec05c277..20c44571df746 100644 --- a/modules/apm/src/main/plugin-metadata/plugin-security.policy +++ b/modules/apm/src/main/plugin-metadata/plugin-security.policy @@ -11,6 +11,7 @@ grant { permission java.lang.RuntimePermission "createClassLoader"; permission java.lang.RuntimePermission "getClassLoader"; permission java.util.PropertyPermission "elastic.apm.*", "write"; + permission java.util.PropertyPermission "*", "read,write"; }; grant codeBase "${codebase.elastic-apm-agent}" { From 227df6e0a3452f19853f7497c547bdc496eaa35e Mon Sep 17 00:00:00 2001 From: Stuart Tettemer Date: Wed, 20 Sep 2023 14:27:40 -0500 Subject: [PATCH 07/13] telemetry provider instead of tracer for components --- .../analysis/common/CommonAnalysisPlugin.java | 4 +-- .../org/elasticsearch/telemetry/apm/APM.java | 26 +++++++++--------- .../telemetry/apm/APMMetric.java | 13 +++++---- .../telemetry/apm/APMTelemetryProvider.java | 1 + .../apm/settings/APMAgentSettings.java | 12 +++------ .../telemetry/apm/tracing/APMTracer.java | 27 ------------------- .../apm/settings/APMAgentSettingsTests.java | 9 ------- .../telemetry/apm/tracing/APMTracerTests.java | 14 ---------- .../datastreams/DataStreamsPlugin.java | 4 +-- .../ingest/geoip/IngestGeoIpPlugin.java | 4 +-- .../painless/PainlessPlugin.java | 4 +-- .../elasticsearch/reindex/ReindexPlugin.java | 4 +-- .../ReindexFromRemoteWithAuthTests.java | 2 +- .../azure/AzureRepositoryPlugin.java | 4 +-- .../repositories/s3/S3RepositoryPlugin.java | 4 +-- .../repository/url/URLRepositoryPlugin.java | 4 +-- .../RuntimeFieldsCommonPlugin.java | 4 +-- .../elasticsearch/systemd/SystemdPlugin.java | 4 +-- .../netty4/Netty4HttpServerTransport.java | 1 + .../http/ClusterInfoRestCancellationIT.java | 1 + .../cluster/SimpleClusterStateIT.java | 2 +- .../metadata/TemplateUpgradeServiceIT.java | 5 ++-- .../health/GetHealthActionIT.java | 2 +- .../elasticsearch/health/HealthServiceIT.java | 2 +- .../elasticsearch/index/FinalPipelineIT.java | 2 +- .../index/SettingsListenerIT.java | 2 +- .../ingest/IngestAsyncProcessorIT.java | 2 +- server/src/main/java/module-info.java | 2 ++ .../elasticsearch/action/ActionModule.java | 20 +++++++++++--- .../java/org/elasticsearch/node/Node.java | 20 +++++++------- .../org/elasticsearch/plugins/Plugin.java | 6 ++--- .../plugins/TelemetryPlugin.java | 5 ++-- .../telemetry/TelemetryProvider.java | 1 + .../telemetry/tracing/SpanId.java | 5 ---- .../telemetry/tracing/Tracer.java | 4 --- .../org/elasticsearch/node/NodeTests.java | 2 +- .../plugins/PluginIntrospectorTests.java | 2 +- .../test/seektracker/SeekTrackerPlugin.java | 3 ++- .../test/MockIndexEventListener.java | 3 ++- .../xpack/analytics/AnalyticsPlugin.java | 2 +- .../xpack/async/AsyncResultsIndexPlugin.java | 4 +-- .../xpack/autoscaling/Autoscaling.java | 4 +-- .../java/org/elasticsearch/xpack/ccr/Ccr.java | 4 +-- .../elasticsearch/xpack/core/XPackPlugin.java | 4 +-- .../core/LocalStateCompositeXPackPlugin.java | 7 ++--- .../xpack/deprecation/Deprecation.java | 4 +-- .../xpack/enrich/EnrichPlugin.java | 4 +-- .../xpack/application/EnterpriseSearch.java | 3 ++- .../LocalStateEnterpriseSearch.java | 5 ++-- .../xpack/eql/plugin/EqlPlugin.java | 3 ++- .../xpack/esql/plugin/EsqlPlugin.java | 4 +-- .../org/elasticsearch/xpack/fleet/Fleet.java | 3 ++- .../xpack/idp/IdentityProviderPlugin.java | 3 ++- .../xpack/ilm/UpdateSettingsStepTests.java | 3 ++- .../xpack/ilm/IndexLifecycle.java | 3 ++- .../xpack/inference/InferencePlugin.java | 4 +-- .../xpack/ml/MachineLearning.java | 3 ++- .../xpack/monitoring/Monitoring.java | 3 ++- .../xpack/lucene/bwc/OldLuceneVersions.java | 3 ++- .../xpack/profiling/ProfilingPlugin.java | 3 ++- .../SearchableSnapshots.java | 3 ++- .../xpack/security/Security.java | 11 +++++--- .../xpack/security/SecurityTests.java | 6 ++++- .../xpack/shutdown/NodeShutdownTasksIT.java | 3 ++- .../xpack/shutdown/ShutdownPlugin.java | 3 ++- .../xpack/slm/SnapshotLifecycle.java | 3 ++- .../xpack/sql/plugin/SqlPlugin.java | 3 ++- .../xpack/stack/StackPlugin.java | 3 ++- .../xpack/transform/Transform.java | 3 ++- .../votingonly/VotingOnlyNodePlugin.java | 3 ++- .../elasticsearch/xpack/watcher/Watcher.java | 3 ++- 71 files changed, 174 insertions(+), 182 deletions(-) diff --git a/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/CommonAnalysisPlugin.java b/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/CommonAnalysisPlugin.java index 6baa2ddf6c972..dd2fbe8a19bab 100644 --- a/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/CommonAnalysisPlugin.java +++ b/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/CommonAnalysisPlugin.java @@ -131,7 +131,7 @@ import org.elasticsearch.script.ScriptContext; import org.elasticsearch.script.ScriptService; import org.elasticsearch.synonyms.SynonymsManagementAPIService; -import org.elasticsearch.telemetry.tracing.Tracer; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -168,7 +168,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APM.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APM.java index 1208fa1f7b9e5..6058f5ad674cf 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APM.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APM.java @@ -21,12 +21,12 @@ import org.elasticsearch.indices.IndicesService; import org.elasticsearch.plugins.NetworkPlugin; import org.elasticsearch.plugins.Plugin; -import org.elasticsearch.plugins.TracerPlugin; +import org.elasticsearch.plugins.TelemetryPlugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.apm.settings.APMAgentSettings; import org.elasticsearch.telemetry.apm.tracing.APMTracer; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -55,8 +55,8 @@ * be passed via system properties to the Java agent, which periodically checks for changes * and applies the new settings values, provided those settings can be dynamically updated. */ -public class APM extends Plugin implements NetworkPlugin, TracerPlugin { - private final SetOnce tracer = new SetOnce<>(); +public class APM extends Plugin implements NetworkPlugin, TelemetryPlugin { + private final SetOnce telemetryProvider = new SetOnce<>(); private final Settings settings; public APM(Settings settings) { @@ -64,10 +64,10 @@ public APM(Settings settings) { } @Override - public Tracer getTracer(Settings settings) { - final APMTracer apmTracer = new APMTracer(settings); - tracer.set(apmTracer); - return apmTracer; + public TelemetryProvider getTelemetryProvider(Settings settings) { + final APMTelemetryProvider apmTelemetryProvider = new APMTelemetryProvider(settings); + telemetryProvider.set(apmTelemetryProvider); + return apmTelemetryProvider; } @Override @@ -83,20 +83,22 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer unused, + TelemetryProvider unused, AllocationService allocationService, IndicesService indicesService ) { - final APMTracer apmTracer = tracer.get(); + final APMTracer apmTracer = telemetryProvider.get().getTracer(); apmTracer.setClusterName(clusterService.getClusterName().value()); apmTracer.setNodeName(clusterService.getNodeName()); final APMAgentSettings apmAgentSettings = new APMAgentSettings(); apmAgentSettings.syncAgentSystemProperties(settings); - apmAgentSettings.addClusterSettingsListeners(clusterService, apmTracer); + apmAgentSettings.addClusterSettingsListeners(clusterService, telemetryProvider.get()); - return List.of(apmTracer); + final APMMetric apmMetric = telemetryProvider.get().getMetric(); + + return List.of(apmTracer, apmMetric); } @Override diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java index ecc18ad2d35c2..45cf1b5ea694e 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java @@ -27,14 +27,14 @@ import java.util.Map; import java.util.concurrent.atomic.AtomicReference; -import static org.elasticsearch.telemetry.apm.APMAgentSettings.APM_ENABLED_SETTING; +import static org.elasticsearch.telemetry.apm.settings.APMAgentSettings.APM_ENABLED_SETTING; public class APMMetric extends AbstractLifecycleComponent implements org.elasticsearch.telemetry.metric.Metric { private final Map counters = ConcurrentCollections.newConcurrentMap(); private final Map doubleGauges = ConcurrentCollections.newConcurrentMap(); private final Map doubleHistograms = ConcurrentCollections.newConcurrentMap(); private volatile boolean enabled; - private AtomicReference services = new AtomicReference<>(); + private AtomicReference services = new AtomicReference<>(); record APMServices(Meter meter, OpenTelemetry openTelemetry) {} @@ -43,7 +43,7 @@ public APMMetric(Settings settings) { this.enabled = APM_ENABLED_SETTING.get(settings); } - void setEnabled(boolean enabled) { + public void setEnabled(boolean enabled) { this.enabled = enabled; if (enabled) { createApmServices(); @@ -89,7 +89,10 @@ public DoubleGauge registerDoubleGauge(MetricName name, String description, throw new IllegalStateException("double gauge [" + name.getRawName() + "] already registered"); } var lazyGauge = new LazyInitializable<>( - () -> services.get().meter.gaugeBuilder(name.getRawName()).setDescription(description).setUnit(unit.toString()).buildObserver() + () -> services.get().meter.gaugeBuilder(name.getRawName()) + .setDescription(description) + .setUnit(unit.toString()) + .buildObserver() ); return OtelDoubleGauge.build(lazyGauge, name, description, unit); @@ -130,7 +133,7 @@ public void run() { try { counter.add(42); Thread.sleep(2000); - }catch (Exception e){ + } catch (Exception e) { } } diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTelemetryProvider.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTelemetryProvider.java index d4f76d56d06c1..817bcb25f87ba 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTelemetryProvider.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTelemetryProvider.java @@ -10,6 +10,7 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.telemetry.TelemetryProvider; +import org.elasticsearch.telemetry.apm.tracing.APMTracer; public class APMTelemetryProvider implements TelemetryProvider { private Settings settings; diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/settings/APMAgentSettings.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/settings/APMAgentSettings.java index bfe3018f0464f..425fe3c126692 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/settings/APMAgentSettings.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/settings/APMAgentSettings.java @@ -6,11 +6,7 @@ * Side Public License, v 1. */ -<<<<<<<< HEAD:modules/apm/src/main/java/org/elasticsearch/telemetry/apm/settings/APMAgentSettings.java package org.elasticsearch.telemetry.apm.settings; -======== -package org.elasticsearch.telemetry.apm; ->>>>>>>> bd3b9b3d45b31ed7d668a7de04bbe2e5fafb57ae:modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMAgentSettings.java import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -21,6 +17,8 @@ import org.elasticsearch.common.settings.Setting; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.core.SuppressForbidden; +import org.elasticsearch.telemetry.apm.APMMetric; +import org.elasticsearch.telemetry.apm.APMTelemetryProvider; import org.elasticsearch.telemetry.apm.tracing.APMTracer; import java.security.AccessController; @@ -47,13 +45,9 @@ public class APMAgentSettings { static Map APM_AGENT_DEFAULT_SETTINGS = Map.of("transaction_sample_rate", "0.2", "enable_experimental_instrumentations", "true"); -<<<<<<<< HEAD:modules/apm/src/main/java/org/elasticsearch/telemetry/apm/settings/APMAgentSettings.java - public void addClusterSettingsListeners(ClusterService clusterService, APMTracer apmTracer) { -======== - void addClusterSettingsListeners(ClusterService clusterService, APMTelemetryProvider telemetryProvider) { + public void addClusterSettingsListeners(ClusterService clusterService, APMTelemetryProvider telemetryProvider) { APMTracer apmTracer = telemetryProvider.getTracer(); APMMetric apmMetric = telemetryProvider.getMetric(); ->>>>>>>> bd3b9b3d45b31ed7d668a7de04bbe2e5fafb57ae:modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMAgentSettings.java final ClusterSettings clusterSettings = clusterService.getClusterSettings(); clusterSettings.addSettingsUpdateConsumer(APM_ENABLED_SETTING, enabled -> { apmTracer.setEnabled(enabled); diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/tracing/APMTracer.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/tracing/APMTracer.java index 293af6913bee0..c87fb84fc8619 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/tracing/APMTracer.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/tracing/APMTracer.java @@ -6,11 +6,7 @@ * Side Public License, v 1. */ -<<<<<<<< HEAD:modules/apm/src/main/java/org/elasticsearch/telemetry/apm/tracing/APMTracer.java package org.elasticsearch.telemetry.apm.tracing; -======== -package org.elasticsearch.telemetry.apm; ->>>>>>>> bd3b9b3d45b31ed7d668a7de04bbe2e5fafb57ae:modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTracer.java import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.api.OpenTelemetry; @@ -38,11 +34,7 @@ import org.elasticsearch.core.Nullable; import org.elasticsearch.core.Releasable; import org.elasticsearch.tasks.Task; -<<<<<<<< HEAD:modules/apm/src/main/java/org/elasticsearch/telemetry/apm/tracing/APMTracer.java import org.elasticsearch.telemetry.tracing.SpanId; -======== -import org.elasticsearch.telemetry.SpanId; ->>>>>>>> bd3b9b3d45b31ed7d668a7de04bbe2e5fafb57ae:modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTracer.java import java.security.AccessController; import java.security.PrivilegedAction; @@ -51,7 +43,6 @@ import java.util.Map; import java.util.stream.Collectors; -<<<<<<<< HEAD:modules/apm/src/main/java/org/elasticsearch/telemetry/apm/tracing/APMTracer.java import static org.elasticsearch.telemetry.apm.settings.APMAgentSettings.APM_ENABLED_SETTING; import static org.elasticsearch.telemetry.apm.settings.APMAgentSettings.APM_TRACING_NAMES_EXCLUDE_SETTING; import static org.elasticsearch.telemetry.apm.settings.APMAgentSettings.APM_TRACING_NAMES_INCLUDE_SETTING; @@ -59,26 +50,13 @@ /** * This is an implementation of the {@link org.elasticsearch.telemetry.tracing.Tracer} interface, which uses -======== -import static org.elasticsearch.telemetry.apm.APMAgentSettings.APM_ENABLED_SETTING; -import static org.elasticsearch.telemetry.apm.APMAgentSettings.APM_TRACING_NAMES_EXCLUDE_SETTING; -import static org.elasticsearch.telemetry.apm.APMAgentSettings.APM_TRACING_NAMES_INCLUDE_SETTING; -import static org.elasticsearch.telemetry.apm.APMAgentSettings.APM_TRACING_SANITIZE_FIELD_NAMES; - -/** - * This is an implementation of the {@link org.elasticsearch.telemetry.Tracer} interface, which uses ->>>>>>>> bd3b9b3d45b31ed7d668a7de04bbe2e5fafb57ae:modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTracer.java * the OpenTelemetry API to capture spans. *

* This module doesn't provide an implementation of the OTel API. Normally that would mean that the * API's default, no-op implementation would be used. However, when the APM Java is attached, it * intercepts the {@link GlobalOpenTelemetry} class and provides its own implementation instead. */ -<<<<<<<< HEAD:modules/apm/src/main/java/org/elasticsearch/telemetry/apm/tracing/APMTracer.java public class APMTracer extends AbstractLifecycleComponent implements org.elasticsearch.telemetry.tracing.Tracer { -======== -public class APMTracer extends AbstractLifecycleComponent implements org.elasticsearch.telemetry.Tracer { ->>>>>>>> bd3b9b3d45b31ed7d668a7de04bbe2e5fafb57ae:modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTracer.java private static final Logger logger = LogManager.getLogger(APMTracer.class); @@ -345,13 +323,8 @@ private void setSpanAttributes(@Nullable Map spanAttributes, Spa spanBuilder.setSpanKind(SpanKind.INTERNAL); } -<<<<<<<< HEAD:modules/apm/src/main/java/org/elasticsearch/telemetry/apm/tracing/APMTracer.java spanBuilder.setAttribute(org.elasticsearch.telemetry.tracing.Tracer.AttributeKeys.NODE_NAME, nodeName); spanBuilder.setAttribute(org.elasticsearch.telemetry.tracing.Tracer.AttributeKeys.CLUSTER_NAME, clusterName); -======== - spanBuilder.setAttribute(org.elasticsearch.telemetry.Tracer.AttributeKeys.NODE_NAME, nodeName); - spanBuilder.setAttribute(org.elasticsearch.telemetry.Tracer.AttributeKeys.CLUSTER_NAME, clusterName); ->>>>>>>> bd3b9b3d45b31ed7d668a7de04bbe2e5fafb57ae:modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTracer.java } private void setSpanAttributes(ThreadContext threadContext, @Nullable Map spanAttributes, SpanBuilder spanBuilder) { diff --git a/modules/apm/src/test/java/org/elasticsearch/telemetry/apm/settings/APMAgentSettingsTests.java b/modules/apm/src/test/java/org/elasticsearch/telemetry/apm/settings/APMAgentSettingsTests.java index f921cb5ffe0e0..3d95c9f85f5e5 100644 --- a/modules/apm/src/test/java/org/elasticsearch/telemetry/apm/settings/APMAgentSettingsTests.java +++ b/modules/apm/src/test/java/org/elasticsearch/telemetry/apm/settings/APMAgentSettingsTests.java @@ -6,20 +6,11 @@ * Side Public License, v 1. */ -<<<<<<<< HEAD:modules/apm/src/test/java/org/elasticsearch/telemetry/apm/settings/APMAgentSettingsTests.java package org.elasticsearch.telemetry.apm.settings; -======== -package org.elasticsearch.telemetry.apm; ->>>>>>>> bd3b9b3d45b31ed7d668a7de04bbe2e5fafb57ae:modules/apm/src/test/java/org/elasticsearch/telemetry/apm/APMAgentSettingsTests.java import org.elasticsearch.common.settings.Settings; import org.elasticsearch.test.ESTestCase; -<<<<<<<< HEAD:modules/apm/src/test/java/org/elasticsearch/telemetry/apm/settings/APMAgentSettingsTests.java -======== -import static org.elasticsearch.telemetry.apm.APMAgentSettings.APM_AGENT_SETTINGS; -import static org.elasticsearch.telemetry.apm.APMAgentSettings.APM_ENABLED_SETTING; ->>>>>>>> bd3b9b3d45b31ed7d668a7de04bbe2e5fafb57ae:modules/apm/src/test/java/org/elasticsearch/telemetry/apm/APMAgentSettingsTests.java import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; diff --git a/modules/apm/src/test/java/org/elasticsearch/telemetry/apm/tracing/APMTracerTests.java b/modules/apm/src/test/java/org/elasticsearch/telemetry/apm/tracing/APMTracerTests.java index 49283d8074033..ffe719197c59f 100644 --- a/modules/apm/src/test/java/org/elasticsearch/telemetry/apm/tracing/APMTracerTests.java +++ b/modules/apm/src/test/java/org/elasticsearch/telemetry/apm/tracing/APMTracerTests.java @@ -6,11 +6,7 @@ * Side Public License, v 1. */ -<<<<<<<< HEAD:modules/apm/src/test/java/org/elasticsearch/telemetry/apm/tracing/APMTracerTests.java package org.elasticsearch.telemetry.apm.tracing; -======== -package org.elasticsearch.telemetry.apm; ->>>>>>>> bd3b9b3d45b31ed7d668a7de04bbe2e5fafb57ae:modules/apm/src/test/java/org/elasticsearch/telemetry/apm/APMTracerTests.java import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; @@ -25,12 +21,8 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.util.concurrent.ThreadContext; import org.elasticsearch.tasks.Task; -<<<<<<<< HEAD:modules/apm/src/test/java/org/elasticsearch/telemetry/apm/tracing/APMTracerTests.java import org.elasticsearch.telemetry.apm.settings.APMAgentSettings; import org.elasticsearch.telemetry.tracing.SpanId; -======== -import org.elasticsearch.telemetry.SpanId; ->>>>>>>> bd3b9b3d45b31ed7d668a7de04bbe2e5fafb57ae:modules/apm/src/test/java/org/elasticsearch/telemetry/apm/APMTracerTests.java import org.elasticsearch.test.ESTestCase; import java.time.Instant; @@ -40,12 +32,6 @@ import java.util.concurrent.TimeUnit; import java.util.stream.Stream; -<<<<<<<< HEAD:modules/apm/src/test/java/org/elasticsearch/telemetry/apm/tracing/APMTracerTests.java -======== -import static org.elasticsearch.telemetry.apm.APMAgentSettings.APM_ENABLED_SETTING; -import static org.elasticsearch.telemetry.apm.APMAgentSettings.APM_TRACING_NAMES_EXCLUDE_SETTING; -import static org.elasticsearch.telemetry.apm.APMAgentSettings.APM_TRACING_NAMES_INCLUDE_SETTING; ->>>>>>>> bd3b9b3d45b31ed7d668a7de04bbe2e5fafb57ae:modules/apm/src/test/java/org/elasticsearch/telemetry/apm/APMTracerTests.java import static org.hamcrest.Matchers.aMapWithSize; import static org.hamcrest.Matchers.anEmptyMap; import static org.hamcrest.Matchers.hasKey; diff --git a/modules/data-streams/src/main/java/org/elasticsearch/datastreams/DataStreamsPlugin.java b/modules/data-streams/src/main/java/org/elasticsearch/datastreams/DataStreamsPlugin.java index 3ec77b848d168..de128c685ae98 100644 --- a/modules/data-streams/src/main/java/org/elasticsearch/datastreams/DataStreamsPlugin.java +++ b/modules/data-streams/src/main/java/org/elasticsearch/datastreams/DataStreamsPlugin.java @@ -70,7 +70,7 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; -import org.elasticsearch.telemetry.tracing.Tracer; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -170,7 +170,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/modules/ingest-geoip/src/main/java/org/elasticsearch/ingest/geoip/IngestGeoIpPlugin.java b/modules/ingest-geoip/src/main/java/org/elasticsearch/ingest/geoip/IngestGeoIpPlugin.java index fd40643281da2..afc6fa8a1c92a 100644 --- a/modules/ingest-geoip/src/main/java/org/elasticsearch/ingest/geoip/IngestGeoIpPlugin.java +++ b/modules/ingest-geoip/src/main/java/org/elasticsearch/ingest/geoip/IngestGeoIpPlugin.java @@ -48,7 +48,7 @@ import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; import org.elasticsearch.tasks.Task; -import org.elasticsearch.telemetry.tracing.Tracer; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -119,7 +119,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/PainlessPlugin.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/PainlessPlugin.java index 34e5ed3a5e5b7..52eccbe0dce90 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/PainlessPlugin.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/PainlessPlugin.java @@ -43,7 +43,7 @@ import org.elasticsearch.script.ScriptEngine; import org.elasticsearch.script.ScriptModule; import org.elasticsearch.script.ScriptService; -import org.elasticsearch.telemetry.tracing.Tracer; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -147,7 +147,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/modules/reindex/src/main/java/org/elasticsearch/reindex/ReindexPlugin.java b/modules/reindex/src/main/java/org/elasticsearch/reindex/ReindexPlugin.java index 569c510788b7f..e79f9bdaffee9 100644 --- a/modules/reindex/src/main/java/org/elasticsearch/reindex/ReindexPlugin.java +++ b/modules/reindex/src/main/java/org/elasticsearch/reindex/ReindexPlugin.java @@ -35,7 +35,7 @@ import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; import org.elasticsearch.tasks.Task; -import org.elasticsearch.telemetry.tracing.Tracer; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -100,7 +100,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/modules/reindex/src/test/java/org/elasticsearch/reindex/ReindexFromRemoteWithAuthTests.java b/modules/reindex/src/test/java/org/elasticsearch/reindex/ReindexFromRemoteWithAuthTests.java index 3be475a9483bf..e2f08fb287660 100644 --- a/modules/reindex/src/test/java/org/elasticsearch/reindex/ReindexFromRemoteWithAuthTests.java +++ b/modules/reindex/src/test/java/org/elasticsearch/reindex/ReindexFromRemoteWithAuthTests.java @@ -176,7 +176,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/modules/repository-azure/src/main/java/org/elasticsearch/repositories/azure/AzureRepositoryPlugin.java b/modules/repository-azure/src/main/java/org/elasticsearch/repositories/azure/AzureRepositoryPlugin.java index cc57692f7ba0c..f88a96e765827 100644 --- a/modules/repository-azure/src/main/java/org/elasticsearch/repositories/azure/AzureRepositoryPlugin.java +++ b/modules/repository-azure/src/main/java/org/elasticsearch/repositories/azure/AzureRepositoryPlugin.java @@ -30,7 +30,7 @@ import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.repositories.Repository; import org.elasticsearch.script.ScriptService; -import org.elasticsearch.telemetry.tracing.Tracer; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.ScalingExecutorBuilder; import org.elasticsearch.threadpool.ThreadPool; @@ -96,7 +96,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/modules/repository-s3/src/main/java/org/elasticsearch/repositories/s3/S3RepositoryPlugin.java b/modules/repository-s3/src/main/java/org/elasticsearch/repositories/s3/S3RepositoryPlugin.java index 120d421fdf48c..62fe279726164 100644 --- a/modules/repository-s3/src/main/java/org/elasticsearch/repositories/s3/S3RepositoryPlugin.java +++ b/modules/repository-s3/src/main/java/org/elasticsearch/repositories/s3/S3RepositoryPlugin.java @@ -31,7 +31,7 @@ import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.repositories.Repository; import org.elasticsearch.script.ScriptService; -import org.elasticsearch.telemetry.tracing.Tracer; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -102,7 +102,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/modules/repository-url/src/main/java/org/elasticsearch/plugin/repository/url/URLRepositoryPlugin.java b/modules/repository-url/src/main/java/org/elasticsearch/plugin/repository/url/URLRepositoryPlugin.java index 78044ae35c5a0..8057684375d69 100644 --- a/modules/repository-url/src/main/java/org/elasticsearch/plugin/repository/url/URLRepositoryPlugin.java +++ b/modules/repository-url/src/main/java/org/elasticsearch/plugin/repository/url/URLRepositoryPlugin.java @@ -28,7 +28,7 @@ import org.elasticsearch.repositories.Repository; import org.elasticsearch.repositories.url.URLRepository; import org.elasticsearch.script.ScriptService; -import org.elasticsearch.telemetry.tracing.Tracer; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -88,7 +88,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/modules/runtime-fields-common/src/main/java/org/elasticsearch/runtimefields/RuntimeFieldsCommonPlugin.java b/modules/runtime-fields-common/src/main/java/org/elasticsearch/runtimefields/RuntimeFieldsCommonPlugin.java index 2dc26f665633c..6cad1e057ef74 100644 --- a/modules/runtime-fields-common/src/main/java/org/elasticsearch/runtimefields/RuntimeFieldsCommonPlugin.java +++ b/modules/runtime-fields-common/src/main/java/org/elasticsearch/runtimefields/RuntimeFieldsCommonPlugin.java @@ -22,7 +22,7 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; -import org.elasticsearch.telemetry.tracing.Tracer; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -76,7 +76,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/modules/systemd/src/main/java/org/elasticsearch/systemd/SystemdPlugin.java b/modules/systemd/src/main/java/org/elasticsearch/systemd/SystemdPlugin.java index db119761641aa..f425de279129b 100644 --- a/modules/systemd/src/main/java/org/elasticsearch/systemd/SystemdPlugin.java +++ b/modules/systemd/src/main/java/org/elasticsearch/systemd/SystemdPlugin.java @@ -26,7 +26,7 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; -import org.elasticsearch.telemetry.tracing.Tracer; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.Scheduler; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; @@ -92,7 +92,7 @@ public Collection createComponents( final NamedWriteableRegistry namedWriteableRegistry, final IndexNameExpressionResolver expressionResolver, final Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/modules/transport-netty4/src/main/java/org/elasticsearch/http/netty4/Netty4HttpServerTransport.java b/modules/transport-netty4/src/main/java/org/elasticsearch/http/netty4/Netty4HttpServerTransport.java index 8eb1a5789102c..4dd7a92cc4f10 100644 --- a/modules/transport-netty4/src/main/java/org/elasticsearch/http/netty4/Netty4HttpServerTransport.java +++ b/modules/transport-netty4/src/main/java/org/elasticsearch/http/netty4/Netty4HttpServerTransport.java @@ -55,6 +55,7 @@ import org.elasticsearch.http.HttpServerTransport; import org.elasticsearch.http.netty4.internal.HttpHeadersAuthenticatorUtils; import org.elasticsearch.http.netty4.internal.HttpValidator; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.transport.netty4.AcceptChannelHandler; diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/ClusterInfoRestCancellationIT.java b/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/ClusterInfoRestCancellationIT.java index cbab099f9cba8..00781e13f7ba8 100644 --- a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/ClusterInfoRestCancellationIT.java +++ b/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/ClusterInfoRestCancellationIT.java @@ -26,6 +26,7 @@ import org.elasticsearch.indices.breaker.CircuitBreakerService; import org.elasticsearch.plugins.NetworkPlugin; import org.elasticsearch.plugins.Plugin; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.transport.netty4.AcceptChannelHandler; diff --git a/server/src/internalClusterTest/java/org/elasticsearch/cluster/SimpleClusterStateIT.java b/server/src/internalClusterTest/java/org/elasticsearch/cluster/SimpleClusterStateIT.java index 58b824e4676f2..9330431bce06f 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/cluster/SimpleClusterStateIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/cluster/SimpleClusterStateIT.java @@ -415,7 +415,7 @@ public Collection createComponents( final NamedWriteableRegistry namedWriteableRegistry, final IndexNameExpressionResolver expressionResolver, final Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/server/src/internalClusterTest/java/org/elasticsearch/cluster/metadata/TemplateUpgradeServiceIT.java b/server/src/internalClusterTest/java/org/elasticsearch/cluster/metadata/TemplateUpgradeServiceIT.java index 448bfdb301aeb..af0009f0b9642 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/cluster/metadata/TemplateUpgradeServiceIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/cluster/metadata/TemplateUpgradeServiceIT.java @@ -22,6 +22,7 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.test.ESIntegTestCase; import org.elasticsearch.threadpool.ThreadPool; @@ -77,7 +78,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { @@ -96,7 +97,7 @@ public Collection createComponents( namedWriteableRegistry, expressionResolver, repositoriesServiceSupplier, - tracer, + telemetryProvider, allocationService, indicesService ); diff --git a/server/src/internalClusterTest/java/org/elasticsearch/health/GetHealthActionIT.java b/server/src/internalClusterTest/java/org/elasticsearch/health/GetHealthActionIT.java index de42c95d79476..ec9eb76c49ccc 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/health/GetHealthActionIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/health/GetHealthActionIT.java @@ -107,7 +107,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/server/src/internalClusterTest/java/org/elasticsearch/health/HealthServiceIT.java b/server/src/internalClusterTest/java/org/elasticsearch/health/HealthServiceIT.java index a4333d51163dc..09118e72e8409 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/health/HealthServiceIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/health/HealthServiceIT.java @@ -136,7 +136,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/server/src/internalClusterTest/java/org/elasticsearch/index/FinalPipelineIT.java b/server/src/internalClusterTest/java/org/elasticsearch/index/FinalPipelineIT.java index 60a1e7b5bddbc..d58a2c993fa6c 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/index/FinalPipelineIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/index/FinalPipelineIT.java @@ -405,7 +405,7 @@ public Collection createComponents( final NamedWriteableRegistry namedWriteableRegistry, final IndexNameExpressionResolver expressionResolver, final Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/server/src/internalClusterTest/java/org/elasticsearch/index/SettingsListenerIT.java b/server/src/internalClusterTest/java/org/elasticsearch/index/SettingsListenerIT.java index bbb6ae9d16fc5..39a5ebc7a331c 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/index/SettingsListenerIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/index/SettingsListenerIT.java @@ -75,7 +75,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/server/src/internalClusterTest/java/org/elasticsearch/ingest/IngestAsyncProcessorIT.java b/server/src/internalClusterTest/java/org/elasticsearch/ingest/IngestAsyncProcessorIT.java index f5453c8ddf1f1..33bbb2738a1a5 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/ingest/IngestAsyncProcessorIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/ingest/IngestAsyncProcessorIT.java @@ -97,7 +97,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/server/src/main/java/module-info.java b/server/src/main/java/module-info.java index c6e6a207ae6c0..8a9f1f0b87d73 100644 --- a/server/src/main/java/module-info.java +++ b/server/src/main/java/module-info.java @@ -383,6 +383,8 @@ org.elasticsearch.serverless.constants, org.elasticsearch.serverless.apifiltering; exports org.elasticsearch.telemetry.tracing; + exports org.elasticsearch.telemetry; + exports org.elasticsearch.telemetry.metric; provides java.util.spi.CalendarDataProvider with org.elasticsearch.common.time.IsoCalendarDataProvider; provides org.elasticsearch.xcontent.ErrorOnUnknown with org.elasticsearch.common.xcontent.SuggestingErrorOnUnknown; diff --git a/server/src/main/java/org/elasticsearch/action/ActionModule.java b/server/src/main/java/org/elasticsearch/action/ActionModule.java index 7395d6003ec44..eb9058ba5d1bf 100644 --- a/server/src/main/java/org/elasticsearch/action/ActionModule.java +++ b/server/src/main/java/org/elasticsearch/action/ActionModule.java @@ -457,7 +457,7 @@ import org.elasticsearch.rest.action.synonyms.RestPutSynonymRuleAction; import org.elasticsearch.rest.action.synonyms.RestPutSynonymsAction; import org.elasticsearch.tasks.Task; -import org.elasticsearch.telemetry.tracing.Tracer; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.usage.UsageService; @@ -522,7 +522,7 @@ public ActionModule( CircuitBreakerService circuitBreakerService, UsageService usageService, SystemIndices systemIndices, - Tracer tracer, + TelemetryProvider telemetryProvider, ClusterService clusterService, List> reservedStateHandlers, RestExtension restExtension @@ -563,12 +563,24 @@ public ActionModule( var customController = getRestServerComponent( "REST controller", actionPlugins, - restPlugin -> restPlugin.getRestController(restInterceptor, nodeClient, circuitBreakerService, usageService, tracer) + restPlugin -> restPlugin.getRestController( + restInterceptor, + nodeClient, + circuitBreakerService, + usageService, + telemetryProvider.getTracer() + ) ); if (customController != null) { restController = customController; } else { - restController = new RestController(restInterceptor, nodeClient, circuitBreakerService, usageService, tracer); + restController = new RestController( + restInterceptor, + nodeClient, + circuitBreakerService, + usageService, + telemetryProvider.getTracer() + ); } reservedClusterStateService = new ReservedClusterStateService(clusterService, reservedStateHandlers); this.restExtension = restExtension; diff --git a/server/src/main/java/org/elasticsearch/node/Node.java b/server/src/main/java/org/elasticsearch/node/Node.java index 29044084d027d..1965f945561e9 100644 --- a/server/src/main/java/org/elasticsearch/node/Node.java +++ b/server/src/main/java/org/elasticsearch/node/Node.java @@ -179,7 +179,7 @@ import org.elasticsearch.plugins.SearchPlugin; import org.elasticsearch.plugins.ShutdownAwarePlugin; import org.elasticsearch.plugins.SystemIndexPlugin; -import org.elasticsearch.plugins.TracerPlugin; +import org.elasticsearch.plugins.TelemetryPlugin; import org.elasticsearch.plugins.internal.DocumentParsingObserver; import org.elasticsearch.plugins.internal.DocumentParsingObserverPlugin; import org.elasticsearch.plugins.internal.ReloadAwarePlugin; @@ -213,6 +213,7 @@ import org.elasticsearch.tasks.TaskCancellationService; import org.elasticsearch.tasks.TaskManager; import org.elasticsearch.tasks.TaskResultsService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.ThreadPool; @@ -456,7 +457,8 @@ protected Node( Task.HEADERS_TO_COPY.stream() ).collect(Collectors.toSet()); - final Tracer tracer = getTracer(pluginsService, settings); + final TelemetryProvider telemetryProvider = getTelemetryProvider(pluginsService, settings); + final Tracer tracer = telemetryProvider.getTracer(); final TaskManager taskManager = new TaskManager(settings, threadPool, taskHeaders, tracer); @@ -756,7 +758,7 @@ protected Node( namedWriteableRegistry, clusterModule.getIndexNameExpressionResolver(), repositoriesServiceReference::get, - tracer, + telemetryProvider, clusterModule.getAllocationService(), indicesService ) @@ -813,7 +815,7 @@ protected Node( circuitBreakerService, usageService, systemIndices, - tracer, + telemetryProvider, clusterService, reservedStateHandlers, pluginsService.loadSingletonServiceProvider(RestExtension.class, RestExtension::allowAll) @@ -1281,14 +1283,14 @@ private static ReloadablePlugin wrapPlugins(List reloadablePlu }; } - private Tracer getTracer(PluginsService pluginsService, Settings settings) { - final List tracerPlugins = pluginsService.filterPlugins(TracerPlugin.class); + private TelemetryProvider getTelemetryProvider(PluginsService pluginsService, Settings settings) { + final List telemetryPlugins = pluginsService.filterPlugins(TelemetryPlugin.class); - if (tracerPlugins.size() > 1) { - throw new IllegalStateException("A single TracerPlugin was expected but got: " + tracerPlugins); + if (telemetryPlugins.size() > 1) { + throw new IllegalStateException("A single TracerPlugin was expected but got: " + telemetryPlugins); } - return tracerPlugins.isEmpty() ? Tracer.NOOP : tracerPlugins.get(0).getTracer(settings); + return telemetryPlugins.isEmpty() ? TelemetryProvider.NOOP : telemetryPlugins.get(0).getTelemetryProvider(settings); } private HealthService createHealthService( diff --git a/server/src/main/java/org/elasticsearch/plugins/Plugin.java b/server/src/main/java/org/elasticsearch/plugins/Plugin.java index 83e620aa30d12..bd5d8e9220517 100644 --- a/server/src/main/java/org/elasticsearch/plugins/Plugin.java +++ b/server/src/main/java/org/elasticsearch/plugins/Plugin.java @@ -26,7 +26,7 @@ import org.elasticsearch.indices.IndicesService; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; -import org.elasticsearch.telemetry.tracing.Tracer; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; @@ -81,7 +81,7 @@ public abstract class Plugin implements Closeable { * @param indexNameExpressionResolver A service that resolves expression to index and alias names * @param repositoriesServiceSupplier A supplier for the service that manages snapshot repositories; will return null when this method * is called, but will return the repositories service once the node is initialized. - * @param tracer An interface for distributed tracing + * @param telemetryProvider An interface for distributed tracing * @param allocationService A service to manage shard allocation in the cluster * @param indicesService A service to manage indices in the cluster */ @@ -97,7 +97,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/server/src/main/java/org/elasticsearch/plugins/TelemetryPlugin.java b/server/src/main/java/org/elasticsearch/plugins/TelemetryPlugin.java index eccc38cf9f5c9..d1bf77e1b9525 100644 --- a/server/src/main/java/org/elasticsearch/plugins/TelemetryPlugin.java +++ b/server/src/main/java/org/elasticsearch/plugins/TelemetryPlugin.java @@ -9,8 +9,9 @@ package org.elasticsearch.plugins; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; -public interface TracerPlugin { - Tracer getTracer(Settings settings); +public interface TelemetryPlugin { + TelemetryProvider getTelemetryProvider(Settings settings); } diff --git a/server/src/main/java/org/elasticsearch/telemetry/TelemetryProvider.java b/server/src/main/java/org/elasticsearch/telemetry/TelemetryProvider.java index a8ba4311f60af..fc3e4aea5e77b 100644 --- a/server/src/main/java/org/elasticsearch/telemetry/TelemetryProvider.java +++ b/server/src/main/java/org/elasticsearch/telemetry/TelemetryProvider.java @@ -9,6 +9,7 @@ package org.elasticsearch.telemetry; import org.elasticsearch.telemetry.metric.Metric; +import org.elasticsearch.telemetry.tracing.Tracer; public interface TelemetryProvider { diff --git a/server/src/main/java/org/elasticsearch/telemetry/tracing/SpanId.java b/server/src/main/java/org/elasticsearch/telemetry/tracing/SpanId.java index d699bdbccaef8..56141f29f5bdc 100644 --- a/server/src/main/java/org/elasticsearch/telemetry/tracing/SpanId.java +++ b/server/src/main/java/org/elasticsearch/telemetry/tracing/SpanId.java @@ -6,12 +6,7 @@ * Side Public License, v 1. */ -<<<<<<<< HEAD:server/src/main/java/org/elasticsearch/telemetry/tracing/SpanId.java package org.elasticsearch.telemetry.tracing; -======== -package org.elasticsearch.telemetry; ->>>>>>>> bd3b9b3d45b31ed7d668a7de04bbe2e5fafb57ae:server/src/main/java/org/elasticsearch/telemetry/SpanId.java - import org.elasticsearch.rest.RestRequest; import org.elasticsearch.tasks.Task; diff --git a/server/src/main/java/org/elasticsearch/telemetry/tracing/Tracer.java b/server/src/main/java/org/elasticsearch/telemetry/tracing/Tracer.java index f6b408fc73a58..ee0b3737abbb0 100644 --- a/server/src/main/java/org/elasticsearch/telemetry/tracing/Tracer.java +++ b/server/src/main/java/org/elasticsearch/telemetry/tracing/Tracer.java @@ -6,11 +6,7 @@ * Side Public License, v 1. */ -<<<<<<<< HEAD:server/src/main/java/org/elasticsearch/telemetry/tracing/Tracer.java package org.elasticsearch.telemetry.tracing; -======== -package org.elasticsearch.telemetry; ->>>>>>>> bd3b9b3d45b31ed7d668a7de04bbe2e5fafb57ae:server/src/main/java/org/elasticsearch/telemetry/Tracer.java import org.elasticsearch.common.util.concurrent.ThreadContext; import org.elasticsearch.core.Releasable; diff --git a/server/src/test/java/org/elasticsearch/node/NodeTests.java b/server/src/test/java/org/elasticsearch/node/NodeTests.java index a7850e8a577c0..ccfd8698e6bbe 100644 --- a/server/src/test/java/org/elasticsearch/node/NodeTests.java +++ b/server/src/test/java/org/elasticsearch/node/NodeTests.java @@ -443,7 +443,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/server/src/test/java/org/elasticsearch/plugins/PluginIntrospectorTests.java b/server/src/test/java/org/elasticsearch/plugins/PluginIntrospectorTests.java index 693b7b0fb0981..c9e2aef920129 100644 --- a/server/src/test/java/org/elasticsearch/plugins/PluginIntrospectorTests.java +++ b/server/src/test/java/org/elasticsearch/plugins/PluginIntrospectorTests.java @@ -271,7 +271,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/test/external-modules/seek-tracking-directory/src/main/java/org/elasticsearch/test/seektracker/SeekTrackerPlugin.java b/test/external-modules/seek-tracking-directory/src/main/java/org/elasticsearch/test/seektracker/SeekTrackerPlugin.java index 2ff2b655cc21a..de24c80cec229 100644 --- a/test/external-modules/seek-tracking-directory/src/main/java/org/elasticsearch/test/seektracker/SeekTrackerPlugin.java +++ b/test/external-modules/seek-tracking-directory/src/main/java/org/elasticsearch/test/seektracker/SeekTrackerPlugin.java @@ -31,6 +31,7 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; @@ -75,7 +76,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/test/framework/src/main/java/org/elasticsearch/test/MockIndexEventListener.java b/test/framework/src/main/java/org/elasticsearch/test/MockIndexEventListener.java index 385778abdbc5c..f2905f24e15ef 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/MockIndexEventListener.java +++ b/test/framework/src/main/java/org/elasticsearch/test/MockIndexEventListener.java @@ -32,6 +32,7 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; @@ -88,7 +89,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/AnalyticsPlugin.java b/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/AnalyticsPlugin.java index 8c2dccd65177c..9360f97990c82 100644 --- a/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/AnalyticsPlugin.java +++ b/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/AnalyticsPlugin.java @@ -25,7 +25,7 @@ import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; import org.elasticsearch.search.aggregations.support.ValuesSourceRegistry; -import org.elasticsearch.telemetry.tracing.Tracer; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; diff --git a/x-pack/plugin/async/src/main/java/org/elasticsearch/xpack/async/AsyncResultsIndexPlugin.java b/x-pack/plugin/async/src/main/java/org/elasticsearch/xpack/async/AsyncResultsIndexPlugin.java index 9d402eef3b55e..a0e6d0daac322 100644 --- a/x-pack/plugin/async/src/main/java/org/elasticsearch/xpack/async/AsyncResultsIndexPlugin.java +++ b/x-pack/plugin/async/src/main/java/org/elasticsearch/xpack/async/AsyncResultsIndexPlugin.java @@ -23,7 +23,7 @@ import org.elasticsearch.plugins.SystemIndexPlugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; -import org.elasticsearch.telemetry.tracing.Tracer; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -73,7 +73,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/Autoscaling.java b/x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/Autoscaling.java index cd95958e31b3e..e2fc1707c0499 100644 --- a/x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/Autoscaling.java +++ b/x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/Autoscaling.java @@ -36,7 +36,7 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; -import org.elasticsearch.telemetry.tracing.Tracer; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -119,7 +119,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/Ccr.java b/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/Ccr.java index 63fcabb98672a..a139b9a55f1be 100644 --- a/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/Ccr.java +++ b/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/Ccr.java @@ -50,7 +50,7 @@ import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; import org.elasticsearch.tasks.Task; -import org.elasticsearch.telemetry.tracing.Tracer; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.FixedExecutorBuilder; import org.elasticsearch.threadpool.ThreadPool; @@ -189,7 +189,7 @@ public Collection createComponents( final NamedWriteableRegistry namedWriteableRegistry, final IndexNameExpressionResolver expressionResolver, final Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/XPackPlugin.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/XPackPlugin.java index 721b909e1d3c7..1c8881637d4c6 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/XPackPlugin.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/XPackPlugin.java @@ -89,7 +89,7 @@ import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; import org.elasticsearch.snapshots.sourceonly.SourceOnlySnapshotRepository; -import org.elasticsearch.telemetry.tracing.Tracer; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -333,7 +333,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/LocalStateCompositeXPackPlugin.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/LocalStateCompositeXPackPlugin.java index d9495afebcab8..afc64140004c7 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/LocalStateCompositeXPackPlugin.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/LocalStateCompositeXPackPlugin.java @@ -90,6 +90,7 @@ import org.elasticsearch.script.ScriptService; import org.elasticsearch.search.internal.ShardSearchRequest; import org.elasticsearch.snapshots.Snapshot; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.ThreadPool; @@ -204,7 +205,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { @@ -221,7 +222,7 @@ public Collection createComponents( namedWriteableRegistry, expressionResolver, repositoriesServiceSupplier, - tracer, + telemetryProvider, allocationService, indicesService ) @@ -241,7 +242,7 @@ public Collection createComponents( namedWriteableRegistry, expressionResolver, repositoriesServiceSupplier, - tracer, + telemetryProvider, allocationService, indicesService ) diff --git a/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/Deprecation.java b/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/Deprecation.java index 117c7d1265234..349ff1042d3a9 100644 --- a/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/Deprecation.java +++ b/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/Deprecation.java @@ -29,7 +29,7 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; -import org.elasticsearch.telemetry.tracing.Tracer; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -100,7 +100,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/enrich/src/main/java/org/elasticsearch/xpack/enrich/EnrichPlugin.java b/x-pack/plugin/enrich/src/main/java/org/elasticsearch/xpack/enrich/EnrichPlugin.java index dcb9e53f1a671..5fb20a883560f 100644 --- a/x-pack/plugin/enrich/src/main/java/org/elasticsearch/xpack/enrich/EnrichPlugin.java +++ b/x-pack/plugin/enrich/src/main/java/org/elasticsearch/xpack/enrich/EnrichPlugin.java @@ -35,7 +35,7 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; -import org.elasticsearch.telemetry.tracing.Tracer; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -201,7 +201,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/EnterpriseSearch.java b/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/EnterpriseSearch.java index 19ad17d517cc9..094726d16b0e7 100644 --- a/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/EnterpriseSearch.java +++ b/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/EnterpriseSearch.java @@ -35,6 +35,7 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; @@ -209,7 +210,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/ent-search/src/test/java/org/elasticsearch/xpack/application/LocalStateEnterpriseSearch.java b/x-pack/plugin/ent-search/src/test/java/org/elasticsearch/xpack/application/LocalStateEnterpriseSearch.java index d137f6e719ee3..3c2a71a56d88d 100644 --- a/x-pack/plugin/ent-search/src/test/java/org/elasticsearch/xpack/application/LocalStateEnterpriseSearch.java +++ b/x-pack/plugin/ent-search/src/test/java/org/elasticsearch/xpack/application/LocalStateEnterpriseSearch.java @@ -30,6 +30,7 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; @@ -114,7 +115,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { @@ -130,7 +131,7 @@ public Collection createComponents( namedWriteableRegistry, indexNameExpressionResolver, repositoriesServiceSupplier, - tracer, + telemetryProvider, allocationService, indicesService ); diff --git a/x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/plugin/EqlPlugin.java b/x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/plugin/EqlPlugin.java index 3a18983c8d5a5..a05d7e3727821 100644 --- a/x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/plugin/EqlPlugin.java +++ b/x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/plugin/EqlPlugin.java @@ -34,6 +34,7 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; @@ -83,7 +84,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/EsqlPlugin.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/EsqlPlugin.java index 3eec19961d597..783f5550a00af 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/EsqlPlugin.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/EsqlPlugin.java @@ -39,7 +39,7 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; -import org.elasticsearch.telemetry.tracing.Tracer; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.FixedExecutorBuilder; import org.elasticsearch.threadpool.ThreadPool; @@ -89,7 +89,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/fleet/src/main/java/org/elasticsearch/xpack/fleet/Fleet.java b/x-pack/plugin/fleet/src/main/java/org/elasticsearch/xpack/fleet/Fleet.java index 1a088f9aa1de7..414d5b51db4cd 100644 --- a/x-pack/plugin/fleet/src/main/java/org/elasticsearch/xpack/fleet/Fleet.java +++ b/x-pack/plugin/fleet/src/main/java/org/elasticsearch/xpack/fleet/Fleet.java @@ -43,6 +43,7 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; @@ -112,7 +113,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/identity-provider/src/main/java/org/elasticsearch/xpack/idp/IdentityProviderPlugin.java b/x-pack/plugin/identity-provider/src/main/java/org/elasticsearch/xpack/idp/IdentityProviderPlugin.java index 3261ac9d9bdb5..856c2b77abfd9 100644 --- a/x-pack/plugin/identity-provider/src/main/java/org/elasticsearch/xpack/idp/IdentityProviderPlugin.java +++ b/x-pack/plugin/identity-provider/src/main/java/org/elasticsearch/xpack/idp/IdentityProviderPlugin.java @@ -32,6 +32,7 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; @@ -98,7 +99,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/ilm/src/internalClusterTest/java/org/elasticsearch/xpack/ilm/UpdateSettingsStepTests.java b/x-pack/plugin/ilm/src/internalClusterTest/java/org/elasticsearch/xpack/ilm/UpdateSettingsStepTests.java index 18bf02fdfd8a1..a2847f33060e6 100644 --- a/x-pack/plugin/ilm/src/internalClusterTest/java/org/elasticsearch/xpack/ilm/UpdateSettingsStepTests.java +++ b/x-pack/plugin/ilm/src/internalClusterTest/java/org/elasticsearch/xpack/ilm/UpdateSettingsStepTests.java @@ -26,6 +26,7 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.test.ESSingleNodeTestCase; import org.elasticsearch.threadpool.ThreadPool; @@ -74,7 +75,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/ilm/IndexLifecycle.java b/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/ilm/IndexLifecycle.java index 6cd807db27566..672e4823111e2 100644 --- a/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/ilm/IndexLifecycle.java +++ b/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/ilm/IndexLifecycle.java @@ -38,6 +38,7 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; @@ -166,7 +167,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/InferencePlugin.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/InferencePlugin.java index aa3f6e6634678..a5b0754a7f178 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/InferencePlugin.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/InferencePlugin.java @@ -33,7 +33,7 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; -import org.elasticsearch.telemetry.tracing.Tracer; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; @@ -116,7 +116,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MachineLearning.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MachineLearning.java index 9b8009e234911..f0a768080a9b3 100644 --- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MachineLearning.java +++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MachineLearning.java @@ -77,6 +77,7 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.ScalingExecutorBuilder; @@ -907,7 +908,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/monitoring/src/main/java/org/elasticsearch/xpack/monitoring/Monitoring.java b/x-pack/plugin/monitoring/src/main/java/org/elasticsearch/xpack/monitoring/Monitoring.java index 2189d759842f4..6c5af462e2be9 100644 --- a/x-pack/plugin/monitoring/src/main/java/org/elasticsearch/xpack/monitoring/Monitoring.java +++ b/x-pack/plugin/monitoring/src/main/java/org/elasticsearch/xpack/monitoring/Monitoring.java @@ -34,6 +34,7 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; @@ -130,7 +131,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/old-lucene-versions/src/main/java/org/elasticsearch/xpack/lucene/bwc/OldLuceneVersions.java b/x-pack/plugin/old-lucene-versions/src/main/java/org/elasticsearch/xpack/lucene/bwc/OldLuceneVersions.java index 43d7bbdec4178..e5bfd738ca11c 100644 --- a/x-pack/plugin/old-lucene-versions/src/main/java/org/elasticsearch/xpack/lucene/bwc/OldLuceneVersions.java +++ b/x-pack/plugin/old-lucene-versions/src/main/java/org/elasticsearch/xpack/lucene/bwc/OldLuceneVersions.java @@ -57,6 +57,7 @@ import org.elasticsearch.snapshots.Snapshot; import org.elasticsearch.snapshots.SnapshotRestoreException; import org.elasticsearch.snapshots.sourceonly.SourceOnlySnapshotRepository; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; @@ -102,7 +103,7 @@ public Collection createComponents( final NamedWriteableRegistry registry, final IndexNameExpressionResolver resolver, final Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/profiling/src/main/java/org/elasticsearch/xpack/profiling/ProfilingPlugin.java b/x-pack/plugin/profiling/src/main/java/org/elasticsearch/xpack/profiling/ProfilingPlugin.java index 2952594122af4..c947129e5169b 100644 --- a/x-pack/plugin/profiling/src/main/java/org/elasticsearch/xpack/profiling/ProfilingPlugin.java +++ b/x-pack/plugin/profiling/src/main/java/org/elasticsearch/xpack/profiling/ProfilingPlugin.java @@ -33,6 +33,7 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.ScalingExecutorBuilder; @@ -90,7 +91,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/searchable-snapshots/src/main/java/org/elasticsearch/xpack/searchablesnapshots/SearchableSnapshots.java b/x-pack/plugin/searchable-snapshots/src/main/java/org/elasticsearch/xpack/searchablesnapshots/SearchableSnapshots.java index fd28dd9048275..8e23d379fec59 100644 --- a/x-pack/plugin/searchable-snapshots/src/main/java/org/elasticsearch/xpack/searchablesnapshots/SearchableSnapshots.java +++ b/x-pack/plugin/searchable-snapshots/src/main/java/org/elasticsearch/xpack/searchablesnapshots/SearchableSnapshots.java @@ -70,6 +70,7 @@ import org.elasticsearch.script.ScriptService; import org.elasticsearch.snapshots.SearchableSnapshotsSettings; import org.elasticsearch.snapshots.sourceonly.SourceOnlySnapshotRepository; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.ScalingExecutorBuilder; @@ -331,7 +332,7 @@ public Collection createComponents( final NamedWriteableRegistry registry, final IndexNameExpressionResolver resolver, final Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/Security.java b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/Security.java index 9a16785c39dfc..679032d7cdc80 100644 --- a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/Security.java +++ b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/Security.java @@ -90,6 +90,7 @@ import org.elasticsearch.rest.RestStatus; import org.elasticsearch.script.ScriptService; import org.elasticsearch.search.internal.ShardSearchRequest; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.FixedExecutorBuilder; @@ -635,7 +636,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { @@ -649,7 +650,8 @@ public Collection createComponents( xContentRegistry, environment, nodeEnvironment.nodeMetadata(), - expressionResolver + expressionResolver, + telemetryProvider ); } catch (final Exception e) { throw new IllegalStateException("security initialization failed", e); @@ -666,7 +668,8 @@ Collection createComponents( NamedXContentRegistry xContentRegistry, Environment environment, NodeMetadata nodeMetadata, - IndexNameExpressionResolver expressionResolver + IndexNameExpressionResolver expressionResolver, + TelemetryProvider telemetryProvider ) throws Exception { logger.info("Security is {}", enabled ? "enabled" : "disabled"); if (enabled == false) { @@ -705,7 +708,7 @@ Collection createComponents( // audit trail service construction final AuditTrail auditTrail = XPackSettings.AUDIT_ENABLED.get(settings) - ? new LoggingAuditTrail(settings, clusterService, threadPool) + ? new LoggingAuditTrail(settings, clusterService, threadPool, telemetryProvider.getMetric()) : null; final AuditTrailService auditTrailService = new AuditTrailService(auditTrail, getLicenseState()); components.add(auditTrailService); diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/SecurityTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/SecurityTests.java index 88725e015e511..e3065aae01336 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/SecurityTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/SecurityTests.java @@ -53,6 +53,7 @@ import org.elasticsearch.rest.RestHandler; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.IndexSettingsModule; @@ -202,6 +203,8 @@ private Collection createComponentsUtil(Settings settings) throws Except Client client = mock(Client.class); when(client.threadPool()).thenReturn(threadPool); when(client.settings()).thenReturn(settings); + TelemetryProvider telemetryProvider = mock(TelemetryProvider.class); + when(telemetryProvider.getMetric()).thenReturn(null); return security.createComponents( client, threadPool, @@ -211,7 +214,8 @@ private Collection createComponentsUtil(Settings settings) throws Except xContentRegistry(), env, nodeMetadata, - TestIndexNameExpressionResolver.newInstance(threadContext) + TestIndexNameExpressionResolver.newInstance(threadContext), + telemetryProvider ); } diff --git a/x-pack/plugin/shutdown/src/internalClusterTest/java/org/elasticsearch/xpack/shutdown/NodeShutdownTasksIT.java b/x-pack/plugin/shutdown/src/internalClusterTest/java/org/elasticsearch/xpack/shutdown/NodeShutdownTasksIT.java index c8838194f461d..c405bba70d215 100644 --- a/x-pack/plugin/shutdown/src/internalClusterTest/java/org/elasticsearch/xpack/shutdown/NodeShutdownTasksIT.java +++ b/x-pack/plugin/shutdown/src/internalClusterTest/java/org/elasticsearch/xpack/shutdown/NodeShutdownTasksIT.java @@ -40,6 +40,7 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.test.ESIntegTestCase; import org.elasticsearch.threadpool.ThreadPool; @@ -146,7 +147,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/shutdown/src/main/java/org/elasticsearch/xpack/shutdown/ShutdownPlugin.java b/x-pack/plugin/shutdown/src/main/java/org/elasticsearch/xpack/shutdown/ShutdownPlugin.java index 55af966b4d7e1..953b532483284 100644 --- a/x-pack/plugin/shutdown/src/main/java/org/elasticsearch/xpack/shutdown/ShutdownPlugin.java +++ b/x-pack/plugin/shutdown/src/main/java/org/elasticsearch/xpack/shutdown/ShutdownPlugin.java @@ -28,6 +28,7 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; @@ -53,7 +54,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/SnapshotLifecycle.java b/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/SnapshotLifecycle.java index aa39ec1968ff0..5f60ad294ddd1 100644 --- a/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/SnapshotLifecycle.java +++ b/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/SnapshotLifecycle.java @@ -37,6 +37,7 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; @@ -135,7 +136,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/plugin/SqlPlugin.java b/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/plugin/SqlPlugin.java index 6b0500162b567..4737df1588ac2 100644 --- a/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/plugin/SqlPlugin.java +++ b/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/plugin/SqlPlugin.java @@ -31,6 +31,7 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; @@ -99,7 +100,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/stack/src/main/java/org/elasticsearch/xpack/stack/StackPlugin.java b/x-pack/plugin/stack/src/main/java/org/elasticsearch/xpack/stack/StackPlugin.java index 8c16ad6057706..1fecf97d83928 100644 --- a/x-pack/plugin/stack/src/main/java/org/elasticsearch/xpack/stack/StackPlugin.java +++ b/x-pack/plugin/stack/src/main/java/org/elasticsearch/xpack/stack/StackPlugin.java @@ -20,6 +20,7 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; @@ -55,7 +56,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver indexNameExpressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/Transform.java b/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/Transform.java index 05546d9b1345b..527fcdda83c9d 100644 --- a/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/Transform.java +++ b/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/Transform.java @@ -49,6 +49,7 @@ import org.elasticsearch.rest.RestHandler; import org.elasticsearch.rest.RestStatus; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; @@ -241,7 +242,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/voting-only-node/src/main/java/org/elasticsearch/cluster/coordination/votingonly/VotingOnlyNodePlugin.java b/x-pack/plugin/voting-only-node/src/main/java/org/elasticsearch/cluster/coordination/votingonly/VotingOnlyNodePlugin.java index b6b3a709924aa..be65af2e5a1dc 100644 --- a/x-pack/plugin/voting-only-node/src/main/java/org/elasticsearch/cluster/coordination/votingonly/VotingOnlyNodePlugin.java +++ b/x-pack/plugin/voting-only-node/src/main/java/org/elasticsearch/cluster/coordination/votingonly/VotingOnlyNodePlugin.java @@ -36,6 +36,7 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.transport.Transport; @@ -96,7 +97,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { diff --git a/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/Watcher.java b/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/Watcher.java index e9a8e04b57c73..1146d92498216 100644 --- a/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/Watcher.java +++ b/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/Watcher.java @@ -54,6 +54,7 @@ import org.elasticsearch.script.ScriptContext; import org.elasticsearch.script.ScriptService; import org.elasticsearch.script.TemplateScript; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.FixedExecutorBuilder; @@ -317,7 +318,7 @@ public Collection createComponents( NamedWriteableRegistry namedWriteableRegistry, IndexNameExpressionResolver expressionResolver, Supplier repositoriesServiceSupplier, - Tracer tracer, + TelemetryProvider telemetryProvider, AllocationService allocationService, IndicesService indicesService ) { From 2057be4aa85d57434e5ddf0439b88388715911e2 Mon Sep 17 00:00:00 2001 From: Stuart Tettemer Date: Wed, 20 Sep 2023 14:31:44 -0500 Subject: [PATCH 08/13] spotless --- .../java/org/elasticsearch/server/cli/APMJvmOptions.java | 4 +--- .../telemetry/apm/settings/APMAgentSettings.java | 8 ++++++-- .../reindex/ReindexFromRemoteWithAuthTests.java | 1 - .../http/netty4/Netty4HttpServerTransport.java | 1 - .../elasticsearch/http/ClusterInfoRestCancellationIT.java | 1 - .../org/elasticsearch/cluster/SimpleClusterStateIT.java | 1 - .../cluster/metadata/TemplateUpgradeServiceIT.java | 1 - .../java/org/elasticsearch/health/GetHealthActionIT.java | 1 - .../java/org/elasticsearch/health/HealthServiceIT.java | 1 - .../java/org/elasticsearch/index/FinalPipelineIT.java | 1 - .../java/org/elasticsearch/index/SettingsListenerIT.java | 1 - .../org/elasticsearch/ingest/IngestAsyncProcessorIT.java | 1 - .../java/org/elasticsearch/plugins/TelemetryPlugin.java | 1 - .../java/org/elasticsearch/telemetry/tracing/SpanId.java | 1 + .../src/test/java/org/elasticsearch/node/NodeTests.java | 1 - .../elasticsearch/plugins/PluginIntrospectorTests.java | 1 - .../elasticsearch/test/seektracker/SeekTrackerPlugin.java | 1 - .../org/elasticsearch/test/MockIndexEventListener.java | 1 - .../elasticsearch/xpack/application/EnterpriseSearch.java | 1 - .../xpack/application/LocalStateEnterpriseSearch.java | 1 - .../org/elasticsearch/xpack/eql/plugin/EqlPlugin.java | 1 - .../main/java/org/elasticsearch/xpack/fleet/Fleet.java | 1 - .../elasticsearch/xpack/idp/IdentityProviderPlugin.java | 1 - .../elasticsearch/xpack/ilm/UpdateSettingsStepTests.java | 1 - .../java/org/elasticsearch/xpack/ilm/IndexLifecycle.java | 1 - .../java/org/elasticsearch/xpack/ml/MachineLearning.java | 1 - .../org/elasticsearch/xpack/monitoring/Monitoring.java | 1 - .../elasticsearch/xpack/lucene/bwc/OldLuceneVersions.java | 1 - .../elasticsearch/xpack/profiling/ProfilingPlugin.java | 1 - .../xpack/searchablesnapshots/SearchableSnapshots.java | 1 - .../elasticsearch/xpack/shutdown/NodeShutdownTasksIT.java | 1 - .../org/elasticsearch/xpack/shutdown/ShutdownPlugin.java | 1 - .../org/elasticsearch/xpack/slm/SnapshotLifecycle.java | 1 - .../org/elasticsearch/xpack/sql/plugin/SqlPlugin.java | 1 - .../java/org/elasticsearch/xpack/stack/StackPlugin.java | 1 - .../java/org/elasticsearch/xpack/transform/Transform.java | 1 - .../coordination/votingonly/VotingOnlyNodePlugin.java | 1 - .../java/org/elasticsearch/xpack/watcher/Watcher.java | 1 - 38 files changed, 8 insertions(+), 40 deletions(-) diff --git a/distribution/tools/server-cli/src/main/java/org/elasticsearch/server/cli/APMJvmOptions.java b/distribution/tools/server-cli/src/main/java/org/elasticsearch/server/cli/APMJvmOptions.java index b0f53286e6e75..898ea9757ec85 100644 --- a/distribution/tools/server-cli/src/main/java/org/elasticsearch/server/cli/APMJvmOptions.java +++ b/distribution/tools/server-cli/src/main/java/org/elasticsearch/server/cli/APMJvmOptions.java @@ -318,9 +318,7 @@ static Path findAgentJar(String installDir) throws IOException, UserException { } try (var apmStream = Files.list(apmModule)) { - final List paths = apmStream.filter( - path -> path.getFileName().toString().matches("elastic-apm-agent-.*.jar") - ).toList(); + final List paths = apmStream.filter(path -> path.getFileName().toString().matches("elastic-apm-agent-.*.jar")).toList(); if (paths.size() > 1) { throw new UserException( diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/settings/APMAgentSettings.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/settings/APMAgentSettings.java index 425fe3c126692..bb39365dbead7 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/settings/APMAgentSettings.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/settings/APMAgentSettings.java @@ -42,8 +42,12 @@ public class APMAgentSettings { * Sensible defaults that Elasticsearch configures. This cannot be done via the APM agent * config file, as then their values could not be overridden dynamically via system properties. */ - static Map APM_AGENT_DEFAULT_SETTINGS = Map.of("transaction_sample_rate", "0.2", - "enable_experimental_instrumentations", "true"); + static Map APM_AGENT_DEFAULT_SETTINGS = Map.of( + "transaction_sample_rate", + "0.2", + "enable_experimental_instrumentations", + "true" + ); public void addClusterSettingsListeners(ClusterService clusterService, APMTelemetryProvider telemetryProvider) { APMTracer apmTracer = telemetryProvider.getTracer(); diff --git a/modules/reindex/src/test/java/org/elasticsearch/reindex/ReindexFromRemoteWithAuthTests.java b/modules/reindex/src/test/java/org/elasticsearch/reindex/ReindexFromRemoteWithAuthTests.java index e2f08fb287660..7ab2ff508af5a 100644 --- a/modules/reindex/src/test/java/org/elasticsearch/reindex/ReindexFromRemoteWithAuthTests.java +++ b/modules/reindex/src/test/java/org/elasticsearch/reindex/ReindexFromRemoteWithAuthTests.java @@ -45,7 +45,6 @@ import org.elasticsearch.rest.root.MainRestPlugin; import org.elasticsearch.script.ScriptService; import org.elasticsearch.tasks.Task; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.test.ESSingleNodeTestCase; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.transport.netty4.Netty4Plugin; diff --git a/modules/transport-netty4/src/main/java/org/elasticsearch/http/netty4/Netty4HttpServerTransport.java b/modules/transport-netty4/src/main/java/org/elasticsearch/http/netty4/Netty4HttpServerTransport.java index 4dd7a92cc4f10..8eb1a5789102c 100644 --- a/modules/transport-netty4/src/main/java/org/elasticsearch/http/netty4/Netty4HttpServerTransport.java +++ b/modules/transport-netty4/src/main/java/org/elasticsearch/http/netty4/Netty4HttpServerTransport.java @@ -55,7 +55,6 @@ import org.elasticsearch.http.HttpServerTransport; import org.elasticsearch.http.netty4.internal.HttpHeadersAuthenticatorUtils; import org.elasticsearch.http.netty4.internal.HttpValidator; -import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.transport.netty4.AcceptChannelHandler; diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/ClusterInfoRestCancellationIT.java b/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/ClusterInfoRestCancellationIT.java index 00781e13f7ba8..cbab099f9cba8 100644 --- a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/ClusterInfoRestCancellationIT.java +++ b/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/ClusterInfoRestCancellationIT.java @@ -26,7 +26,6 @@ import org.elasticsearch.indices.breaker.CircuitBreakerService; import org.elasticsearch.plugins.NetworkPlugin; import org.elasticsearch.plugins.Plugin; -import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.transport.netty4.AcceptChannelHandler; diff --git a/server/src/internalClusterTest/java/org/elasticsearch/cluster/SimpleClusterStateIT.java b/server/src/internalClusterTest/java/org/elasticsearch/cluster/SimpleClusterStateIT.java index 9330431bce06f..b40f348e69a86 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/cluster/SimpleClusterStateIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/cluster/SimpleClusterStateIT.java @@ -37,7 +37,6 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.test.ESIntegTestCase; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; diff --git a/server/src/internalClusterTest/java/org/elasticsearch/cluster/metadata/TemplateUpgradeServiceIT.java b/server/src/internalClusterTest/java/org/elasticsearch/cluster/metadata/TemplateUpgradeServiceIT.java index af0009f0b9642..aff04ca521844 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/cluster/metadata/TemplateUpgradeServiceIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/cluster/metadata/TemplateUpgradeServiceIT.java @@ -23,7 +23,6 @@ import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; import org.elasticsearch.telemetry.TelemetryProvider; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.test.ESIntegTestCase; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; diff --git a/server/src/internalClusterTest/java/org/elasticsearch/health/GetHealthActionIT.java b/server/src/internalClusterTest/java/org/elasticsearch/health/GetHealthActionIT.java index ec9eb76c49ccc..d23a51abf54a0 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/health/GetHealthActionIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/health/GetHealthActionIT.java @@ -27,7 +27,6 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.test.ESIntegTestCase; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; diff --git a/server/src/internalClusterTest/java/org/elasticsearch/health/HealthServiceIT.java b/server/src/internalClusterTest/java/org/elasticsearch/health/HealthServiceIT.java index 09118e72e8409..68cda5b1c0d0e 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/health/HealthServiceIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/health/HealthServiceIT.java @@ -27,7 +27,6 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.test.ESIntegTestCase; import org.elasticsearch.test.InternalTestCluster; import org.elasticsearch.threadpool.ThreadPool; diff --git a/server/src/internalClusterTest/java/org/elasticsearch/index/FinalPipelineIT.java b/server/src/internalClusterTest/java/org/elasticsearch/index/FinalPipelineIT.java index d58a2c993fa6c..d8496c141c1c3 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/index/FinalPipelineIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/index/FinalPipelineIT.java @@ -38,7 +38,6 @@ import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.rest.RestStatus; import org.elasticsearch.script.ScriptService; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.test.ESIntegTestCase; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; diff --git a/server/src/internalClusterTest/java/org/elasticsearch/index/SettingsListenerIT.java b/server/src/internalClusterTest/java/org/elasticsearch/index/SettingsListenerIT.java index 39a5ebc7a331c..25784ffdfca54 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/index/SettingsListenerIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/index/SettingsListenerIT.java @@ -22,7 +22,6 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.test.ESIntegTestCase; import org.elasticsearch.test.ESIntegTestCase.ClusterScope; import org.elasticsearch.threadpool.ThreadPool; diff --git a/server/src/internalClusterTest/java/org/elasticsearch/ingest/IngestAsyncProcessorIT.java b/server/src/internalClusterTest/java/org/elasticsearch/ingest/IngestAsyncProcessorIT.java index 33bbb2738a1a5..06a88581534f7 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/ingest/IngestAsyncProcessorIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/ingest/IngestAsyncProcessorIT.java @@ -27,7 +27,6 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.test.ESSingleNodeTestCase; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; diff --git a/server/src/main/java/org/elasticsearch/plugins/TelemetryPlugin.java b/server/src/main/java/org/elasticsearch/plugins/TelemetryPlugin.java index d1bf77e1b9525..4f47da99a3d5f 100644 --- a/server/src/main/java/org/elasticsearch/plugins/TelemetryPlugin.java +++ b/server/src/main/java/org/elasticsearch/plugins/TelemetryPlugin.java @@ -10,7 +10,6 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.telemetry.TelemetryProvider; -import org.elasticsearch.telemetry.tracing.Tracer; public interface TelemetryPlugin { TelemetryProvider getTelemetryProvider(Settings settings); diff --git a/server/src/main/java/org/elasticsearch/telemetry/tracing/SpanId.java b/server/src/main/java/org/elasticsearch/telemetry/tracing/SpanId.java index 56141f29f5bdc..8a22102baadf9 100644 --- a/server/src/main/java/org/elasticsearch/telemetry/tracing/SpanId.java +++ b/server/src/main/java/org/elasticsearch/telemetry/tracing/SpanId.java @@ -7,6 +7,7 @@ */ package org.elasticsearch.telemetry.tracing; + import org.elasticsearch.rest.RestRequest; import org.elasticsearch.tasks.Task; diff --git a/server/src/test/java/org/elasticsearch/node/NodeTests.java b/server/src/test/java/org/elasticsearch/node/NodeTests.java index ccfd8698e6bbe..135bb019e9f50 100644 --- a/server/src/test/java/org/elasticsearch/node/NodeTests.java +++ b/server/src/test/java/org/elasticsearch/node/NodeTests.java @@ -46,7 +46,6 @@ import org.elasticsearch.rest.RestRequest; import org.elasticsearch.script.ScriptService; import org.elasticsearch.tasks.Task; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.InternalTestCluster; import org.elasticsearch.test.MockHttpTransport; diff --git a/server/src/test/java/org/elasticsearch/plugins/PluginIntrospectorTests.java b/server/src/test/java/org/elasticsearch/plugins/PluginIntrospectorTests.java index c9e2aef920129..f124b5c86ac64 100644 --- a/server/src/test/java/org/elasticsearch/plugins/PluginIntrospectorTests.java +++ b/server/src/test/java/org/elasticsearch/plugins/PluginIntrospectorTests.java @@ -32,7 +32,6 @@ import org.elasticsearch.ingest.Processor; import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.PrivilegedOperations; import org.elasticsearch.test.compiler.InMemoryJavaCompiler; diff --git a/test/external-modules/seek-tracking-directory/src/main/java/org/elasticsearch/test/seektracker/SeekTrackerPlugin.java b/test/external-modules/seek-tracking-directory/src/main/java/org/elasticsearch/test/seektracker/SeekTrackerPlugin.java index de24c80cec229..cc68a3e3ba0cd 100644 --- a/test/external-modules/seek-tracking-directory/src/main/java/org/elasticsearch/test/seektracker/SeekTrackerPlugin.java +++ b/test/external-modules/seek-tracking-directory/src/main/java/org/elasticsearch/test/seektracker/SeekTrackerPlugin.java @@ -32,7 +32,6 @@ import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; import org.elasticsearch.telemetry.TelemetryProvider; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; diff --git a/test/framework/src/main/java/org/elasticsearch/test/MockIndexEventListener.java b/test/framework/src/main/java/org/elasticsearch/test/MockIndexEventListener.java index f2905f24e15ef..9b9f464d8dff3 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/MockIndexEventListener.java +++ b/test/framework/src/main/java/org/elasticsearch/test/MockIndexEventListener.java @@ -33,7 +33,6 @@ import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; import org.elasticsearch.telemetry.TelemetryProvider; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; diff --git a/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/EnterpriseSearch.java b/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/EnterpriseSearch.java index 094726d16b0e7..ad2c033b0ee0c 100644 --- a/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/EnterpriseSearch.java +++ b/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/EnterpriseSearch.java @@ -36,7 +36,6 @@ import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; import org.elasticsearch.telemetry.TelemetryProvider; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; diff --git a/x-pack/plugin/ent-search/src/test/java/org/elasticsearch/xpack/application/LocalStateEnterpriseSearch.java b/x-pack/plugin/ent-search/src/test/java/org/elasticsearch/xpack/application/LocalStateEnterpriseSearch.java index 3c2a71a56d88d..f10480e9f64a7 100644 --- a/x-pack/plugin/ent-search/src/test/java/org/elasticsearch/xpack/application/LocalStateEnterpriseSearch.java +++ b/x-pack/plugin/ent-search/src/test/java/org/elasticsearch/xpack/application/LocalStateEnterpriseSearch.java @@ -31,7 +31,6 @@ import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; import org.elasticsearch.telemetry.TelemetryProvider; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; diff --git a/x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/plugin/EqlPlugin.java b/x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/plugin/EqlPlugin.java index a05d7e3727821..d65a81db11266 100644 --- a/x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/plugin/EqlPlugin.java +++ b/x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/plugin/EqlPlugin.java @@ -35,7 +35,6 @@ import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; import org.elasticsearch.telemetry.TelemetryProvider; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; diff --git a/x-pack/plugin/fleet/src/main/java/org/elasticsearch/xpack/fleet/Fleet.java b/x-pack/plugin/fleet/src/main/java/org/elasticsearch/xpack/fleet/Fleet.java index 414d5b51db4cd..0cfa3c43b6b5a 100644 --- a/x-pack/plugin/fleet/src/main/java/org/elasticsearch/xpack/fleet/Fleet.java +++ b/x-pack/plugin/fleet/src/main/java/org/elasticsearch/xpack/fleet/Fleet.java @@ -44,7 +44,6 @@ import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; import org.elasticsearch.telemetry.TelemetryProvider; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; diff --git a/x-pack/plugin/identity-provider/src/main/java/org/elasticsearch/xpack/idp/IdentityProviderPlugin.java b/x-pack/plugin/identity-provider/src/main/java/org/elasticsearch/xpack/idp/IdentityProviderPlugin.java index 856c2b77abfd9..943394f326653 100644 --- a/x-pack/plugin/identity-provider/src/main/java/org/elasticsearch/xpack/idp/IdentityProviderPlugin.java +++ b/x-pack/plugin/identity-provider/src/main/java/org/elasticsearch/xpack/idp/IdentityProviderPlugin.java @@ -33,7 +33,6 @@ import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; import org.elasticsearch.telemetry.TelemetryProvider; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; diff --git a/x-pack/plugin/ilm/src/internalClusterTest/java/org/elasticsearch/xpack/ilm/UpdateSettingsStepTests.java b/x-pack/plugin/ilm/src/internalClusterTest/java/org/elasticsearch/xpack/ilm/UpdateSettingsStepTests.java index a2847f33060e6..06ac4673264f3 100644 --- a/x-pack/plugin/ilm/src/internalClusterTest/java/org/elasticsearch/xpack/ilm/UpdateSettingsStepTests.java +++ b/x-pack/plugin/ilm/src/internalClusterTest/java/org/elasticsearch/xpack/ilm/UpdateSettingsStepTests.java @@ -27,7 +27,6 @@ import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; import org.elasticsearch.telemetry.TelemetryProvider; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.test.ESSingleNodeTestCase; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; diff --git a/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/ilm/IndexLifecycle.java b/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/ilm/IndexLifecycle.java index 672e4823111e2..6409c2b72e1f1 100644 --- a/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/ilm/IndexLifecycle.java +++ b/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/ilm/IndexLifecycle.java @@ -39,7 +39,6 @@ import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; import org.elasticsearch.telemetry.TelemetryProvider; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MachineLearning.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MachineLearning.java index f0a768080a9b3..d527f998a1ee8 100644 --- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MachineLearning.java +++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MachineLearning.java @@ -78,7 +78,6 @@ import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; import org.elasticsearch.telemetry.TelemetryProvider; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.ScalingExecutorBuilder; import org.elasticsearch.threadpool.ThreadPool; diff --git a/x-pack/plugin/monitoring/src/main/java/org/elasticsearch/xpack/monitoring/Monitoring.java b/x-pack/plugin/monitoring/src/main/java/org/elasticsearch/xpack/monitoring/Monitoring.java index 6c5af462e2be9..47e24b60896da 100644 --- a/x-pack/plugin/monitoring/src/main/java/org/elasticsearch/xpack/monitoring/Monitoring.java +++ b/x-pack/plugin/monitoring/src/main/java/org/elasticsearch/xpack/monitoring/Monitoring.java @@ -35,7 +35,6 @@ import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; import org.elasticsearch.telemetry.TelemetryProvider; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; diff --git a/x-pack/plugin/old-lucene-versions/src/main/java/org/elasticsearch/xpack/lucene/bwc/OldLuceneVersions.java b/x-pack/plugin/old-lucene-versions/src/main/java/org/elasticsearch/xpack/lucene/bwc/OldLuceneVersions.java index e5bfd738ca11c..8808482d2256f 100644 --- a/x-pack/plugin/old-lucene-versions/src/main/java/org/elasticsearch/xpack/lucene/bwc/OldLuceneVersions.java +++ b/x-pack/plugin/old-lucene-versions/src/main/java/org/elasticsearch/xpack/lucene/bwc/OldLuceneVersions.java @@ -58,7 +58,6 @@ import org.elasticsearch.snapshots.SnapshotRestoreException; import org.elasticsearch.snapshots.sourceonly.SourceOnlySnapshotRepository; import org.elasticsearch.telemetry.TelemetryProvider; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; diff --git a/x-pack/plugin/profiling/src/main/java/org/elasticsearch/xpack/profiling/ProfilingPlugin.java b/x-pack/plugin/profiling/src/main/java/org/elasticsearch/xpack/profiling/ProfilingPlugin.java index c947129e5169b..e9e1801dfcafb 100644 --- a/x-pack/plugin/profiling/src/main/java/org/elasticsearch/xpack/profiling/ProfilingPlugin.java +++ b/x-pack/plugin/profiling/src/main/java/org/elasticsearch/xpack/profiling/ProfilingPlugin.java @@ -34,7 +34,6 @@ import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; import org.elasticsearch.telemetry.TelemetryProvider; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.ScalingExecutorBuilder; import org.elasticsearch.threadpool.ThreadPool; diff --git a/x-pack/plugin/searchable-snapshots/src/main/java/org/elasticsearch/xpack/searchablesnapshots/SearchableSnapshots.java b/x-pack/plugin/searchable-snapshots/src/main/java/org/elasticsearch/xpack/searchablesnapshots/SearchableSnapshots.java index 8e23d379fec59..acd9ad9e85f50 100644 --- a/x-pack/plugin/searchable-snapshots/src/main/java/org/elasticsearch/xpack/searchablesnapshots/SearchableSnapshots.java +++ b/x-pack/plugin/searchable-snapshots/src/main/java/org/elasticsearch/xpack/searchablesnapshots/SearchableSnapshots.java @@ -71,7 +71,6 @@ import org.elasticsearch.snapshots.SearchableSnapshotsSettings; import org.elasticsearch.snapshots.sourceonly.SourceOnlySnapshotRepository; import org.elasticsearch.telemetry.TelemetryProvider; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.ScalingExecutorBuilder; import org.elasticsearch.threadpool.ThreadPool; diff --git a/x-pack/plugin/shutdown/src/internalClusterTest/java/org/elasticsearch/xpack/shutdown/NodeShutdownTasksIT.java b/x-pack/plugin/shutdown/src/internalClusterTest/java/org/elasticsearch/xpack/shutdown/NodeShutdownTasksIT.java index c405bba70d215..6c5e1e6af69ce 100644 --- a/x-pack/plugin/shutdown/src/internalClusterTest/java/org/elasticsearch/xpack/shutdown/NodeShutdownTasksIT.java +++ b/x-pack/plugin/shutdown/src/internalClusterTest/java/org/elasticsearch/xpack/shutdown/NodeShutdownTasksIT.java @@ -41,7 +41,6 @@ import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; import org.elasticsearch.telemetry.TelemetryProvider; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.test.ESIntegTestCase; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; diff --git a/x-pack/plugin/shutdown/src/main/java/org/elasticsearch/xpack/shutdown/ShutdownPlugin.java b/x-pack/plugin/shutdown/src/main/java/org/elasticsearch/xpack/shutdown/ShutdownPlugin.java index 953b532483284..754ba7970eaa2 100644 --- a/x-pack/plugin/shutdown/src/main/java/org/elasticsearch/xpack/shutdown/ShutdownPlugin.java +++ b/x-pack/plugin/shutdown/src/main/java/org/elasticsearch/xpack/shutdown/ShutdownPlugin.java @@ -29,7 +29,6 @@ import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; import org.elasticsearch.telemetry.TelemetryProvider; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; diff --git a/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/SnapshotLifecycle.java b/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/SnapshotLifecycle.java index 5f60ad294ddd1..ba743005bf2df 100644 --- a/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/SnapshotLifecycle.java +++ b/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/SnapshotLifecycle.java @@ -38,7 +38,6 @@ import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; import org.elasticsearch.telemetry.TelemetryProvider; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; diff --git a/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/plugin/SqlPlugin.java b/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/plugin/SqlPlugin.java index 4737df1588ac2..8f39ce939a51c 100644 --- a/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/plugin/SqlPlugin.java +++ b/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/plugin/SqlPlugin.java @@ -32,7 +32,6 @@ import org.elasticsearch.rest.RestHandler; import org.elasticsearch.script.ScriptService; import org.elasticsearch.telemetry.TelemetryProvider; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; diff --git a/x-pack/plugin/stack/src/main/java/org/elasticsearch/xpack/stack/StackPlugin.java b/x-pack/plugin/stack/src/main/java/org/elasticsearch/xpack/stack/StackPlugin.java index 1fecf97d83928..de0858e59900c 100644 --- a/x-pack/plugin/stack/src/main/java/org/elasticsearch/xpack/stack/StackPlugin.java +++ b/x-pack/plugin/stack/src/main/java/org/elasticsearch/xpack/stack/StackPlugin.java @@ -21,7 +21,6 @@ import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; import org.elasticsearch.telemetry.TelemetryProvider; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; diff --git a/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/Transform.java b/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/Transform.java index 527fcdda83c9d..c1964448c2662 100644 --- a/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/Transform.java +++ b/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/Transform.java @@ -50,7 +50,6 @@ import org.elasticsearch.rest.RestStatus; import org.elasticsearch.script.ScriptService; import org.elasticsearch.telemetry.TelemetryProvider; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; diff --git a/x-pack/plugin/voting-only-node/src/main/java/org/elasticsearch/cluster/coordination/votingonly/VotingOnlyNodePlugin.java b/x-pack/plugin/voting-only-node/src/main/java/org/elasticsearch/cluster/coordination/votingonly/VotingOnlyNodePlugin.java index be65af2e5a1dc..1fee6eda5ad6d 100644 --- a/x-pack/plugin/voting-only-node/src/main/java/org/elasticsearch/cluster/coordination/votingonly/VotingOnlyNodePlugin.java +++ b/x-pack/plugin/voting-only-node/src/main/java/org/elasticsearch/cluster/coordination/votingonly/VotingOnlyNodePlugin.java @@ -37,7 +37,6 @@ import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; import org.elasticsearch.telemetry.TelemetryProvider; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.transport.Transport; import org.elasticsearch.transport.TransportException; diff --git a/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/Watcher.java b/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/Watcher.java index 1146d92498216..0c8690cc62e5f 100644 --- a/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/Watcher.java +++ b/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/Watcher.java @@ -55,7 +55,6 @@ import org.elasticsearch.script.ScriptService; import org.elasticsearch.script.TemplateScript; import org.elasticsearch.telemetry.TelemetryProvider; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.threadpool.ExecutorBuilder; import org.elasticsearch.threadpool.FixedExecutorBuilder; import org.elasticsearch.threadpool.ThreadPool; From 8b90b0415d222e363b543cec9c37dd818255751b Mon Sep 17 00:00:00 2001 From: Stuart Tettemer Date: Wed, 20 Sep 2023 15:47:18 -0500 Subject: [PATCH 09/13] Add long and double instruments --- .../telemetry/apm/APMMetric.java | 146 ++++++++++++------ .../telemetry/apm/InstrumentRegistrar.java | 35 +++++ .../telemetry/apm/OtelDoubleCounter.java | 67 ++++++++ .../telemetry/apm/OtelDoubleGauge.java | 5 + .../telemetry/apm/OtelDoubleHistogram.java | 5 + .../apm/OtelDoubleUpDownCounter.java | 65 ++++++++ ...{OtelCounter.java => OtelLongCounter.java} | 29 +++- .../telemetry/apm/OtelLongGauge.java | 59 +++++++ .../telemetry/apm/OtelLongHistogram.java | 63 ++++++++ .../telemetry/apm/OtelLongUpDownCounter.java | 65 ++++++++ .../telemetry/metric/DoubleCounter.java | 51 ++++++ .../telemetry/metric/DoubleGauge.java | 8 +- .../telemetry/metric/DoubleHistogram.java | 8 +- .../telemetry/metric/DoubleUpDownCounter.java | 45 ++++++ .../metric/{Counter.java => Instrument.java} | 18 +-- .../telemetry/metric/LongCounter.java | 51 ++++++ .../telemetry/metric/LongGauge.java | 39 +++++ .../telemetry/metric/LongHistogram.java | 44 ++++++ .../telemetry/metric/LongUpDownCounter.java | 44 ++++++ .../telemetry/metric/Metric.java | 41 ++++- 20 files changed, 820 insertions(+), 68 deletions(-) create mode 100644 modules/apm/src/main/java/org/elasticsearch/telemetry/apm/InstrumentRegistrar.java create mode 100644 modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleCounter.java create mode 100644 modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleUpDownCounter.java rename modules/apm/src/main/java/org/elasticsearch/telemetry/apm/{OtelCounter.java => OtelLongCounter.java} (56%) create mode 100644 modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongGauge.java create mode 100644 modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongHistogram.java create mode 100644 modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongUpDownCounter.java create mode 100644 server/src/main/java/org/elasticsearch/telemetry/metric/DoubleCounter.java create mode 100644 server/src/main/java/org/elasticsearch/telemetry/metric/DoubleUpDownCounter.java rename server/src/main/java/org/elasticsearch/telemetry/metric/{Counter.java => Instrument.java} (60%) create mode 100644 server/src/main/java/org/elasticsearch/telemetry/metric/LongCounter.java create mode 100644 server/src/main/java/org/elasticsearch/telemetry/metric/LongGauge.java create mode 100644 server/src/main/java/org/elasticsearch/telemetry/metric/LongHistogram.java create mode 100644 server/src/main/java/org/elasticsearch/telemetry/metric/LongUpDownCounter.java diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java index 45cf1b5ea694e..868df113e1613 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java @@ -10,29 +10,36 @@ import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.api.OpenTelemetry; -import io.opentelemetry.api.metrics.LongCounter; import io.opentelemetry.api.metrics.Meter; import org.elasticsearch.common.component.AbstractLifecycleComponent; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.util.LazyInitializable; -import org.elasticsearch.common.util.concurrent.ConcurrentCollections; import org.elasticsearch.telemetry.MetricName; -import org.elasticsearch.telemetry.metric.Counter; +import org.elasticsearch.telemetry.metric.DoubleCounter; import org.elasticsearch.telemetry.metric.DoubleGauge; import org.elasticsearch.telemetry.metric.DoubleHistogram; +import org.elasticsearch.telemetry.metric.DoubleUpDownCounter; +import org.elasticsearch.telemetry.metric.LongCounter; +import org.elasticsearch.telemetry.metric.LongGauge; +import org.elasticsearch.telemetry.metric.LongHistogram; +import org.elasticsearch.telemetry.metric.LongUpDownCounter; import java.security.AccessController; import java.security.PrivilegedAction; -import java.util.Map; import java.util.concurrent.atomic.AtomicReference; import static org.elasticsearch.telemetry.apm.settings.APMAgentSettings.APM_ENABLED_SETTING; public class APMMetric extends AbstractLifecycleComponent implements org.elasticsearch.telemetry.metric.Metric { - private final Map counters = ConcurrentCollections.newConcurrentMap(); - private final Map doubleGauges = ConcurrentCollections.newConcurrentMap(); - private final Map doubleHistograms = ConcurrentCollections.newConcurrentMap(); + private final InstrumentRegistrar doubleCounters = new InstrumentRegistrar<>(); + private final InstrumentRegistrar doubleUpDownCounters = new InstrumentRegistrar<>(); + private final InstrumentRegistrar doubleGauges = new InstrumentRegistrar<>(); + private final InstrumentRegistrar doubleHistograms = new InstrumentRegistrar<>(); + private final InstrumentRegistrar longCounters = new InstrumentRegistrar<>(); + private final InstrumentRegistrar longUpDownCounters = new InstrumentRegistrar<>(); + private final InstrumentRegistrar longGauges = new InstrumentRegistrar<>(); + private final InstrumentRegistrar longHistograms = new InstrumentRegistrar<>(); private volatile boolean enabled; private AtomicReference services = new AtomicReference<>(); @@ -68,50 +75,103 @@ protected void doStop() { protected void doClose() {} @Override - - public Counter registerCounter(MetricName name, String description, T unit) { - return counters.compute(name, (k, v) -> { - if (v != null) { - throw new IllegalStateException("double gauge [" + name.getRawName() + "] already registered"); - } - var lazyCounter = new LazyInitializable<>( - () -> services.get().meter.counterBuilder(name.getRawName()).setDescription(description).setUnit(unit.toString()).build() - ); - return OtelCounter.build(lazyCounter, name, description, unit); - }); + public DoubleCounter registerDoubleCounter(MetricName name, String description, T unit) { + var lazyCounter = new LazyInitializable<>( + () -> services.get().meter.counterBuilder(name.getRawName()) + .ofDoubles() + .setDescription(description) + .setUnit(unit.toString()) + .build() + ); + var counter = OtelDoubleCounter.build(lazyCounter, name, description, unit); + doubleCounters.register(counter); + return counter; } @Override + public DoubleUpDownCounter registerDoubleUpDownCounter(MetricName name, String description, T unit) { + var lazyCounter = new LazyInitializable<>( + () -> services.get().meter.upDownCounterBuilder(name.getRawName()) + .ofDoubles() + .setDescription(description) + .setUnit(unit.toString()) + .build() + ); + var counter = OtelDoubleUpDownCounter.build(lazyCounter, name, description, unit); + doubleUpDownCounters.register(counter); + return counter; + } + @Override public DoubleGauge registerDoubleGauge(MetricName name, String description, T unit) { - return doubleGauges.compute(name, (k, v) -> { - if (v != null) { - throw new IllegalStateException("double gauge [" + name.getRawName() + "] already registered"); - } - var lazyGauge = new LazyInitializable<>( - () -> services.get().meter.gaugeBuilder(name.getRawName()) - .setDescription(description) - .setUnit(unit.toString()) - .buildObserver() - ); - - return OtelDoubleGauge.build(lazyGauge, name, description, unit); - }); + var lazyGauge = new LazyInitializable<>( + () -> services.get().meter.gaugeBuilder(name.getRawName()).setDescription(description).setUnit(unit.toString()).buildObserver() + ); + + var gauge = OtelDoubleGauge.build(lazyGauge, name, description, unit); + doubleGauges.register(gauge); + return gauge; } @Override - public DoubleHistogram registerDoubleHistogram(MetricName name, String description, T unit) { - return doubleHistograms.compute(name, (k, v) -> { - if (v != null) { - throw new IllegalStateException("double histogram [" + name.getRawName() + "] already registered"); - } - var lazyHistogram = new LazyInitializable<>( - () -> services.get().meter.histogramBuilder(name.getRawName()).setDescription(description).setUnit(unit.toString()).build() - ); - - return OtelDoubleHistogram.build(lazyHistogram, name, description, unit); - }); + var lazyHistogram = new LazyInitializable<>( + () -> services.get().meter.histogramBuilder(name.getRawName()).setDescription(description).setUnit(unit.toString()).build() + ); + + var histogram = OtelDoubleHistogram.build(lazyHistogram, name, description, unit); + doubleHistograms.register(histogram); + return histogram; + } + + @Override + public LongCounter registerLongCounter(MetricName name, String description, T unit) { + var lazyCounter = new LazyInitializable<>( + () -> services.get().meter.counterBuilder(name.getRawName()).setDescription(description).setUnit(unit.toString()).build() + ); + var counter = OtelLongCounter.build(lazyCounter, name, description, unit); + longCounters.register(counter); + return counter; + } + + @Override + public LongUpDownCounter registerLongUpDownCounter(MetricName name, String description, T unit) { + var lazyCounter = new LazyInitializable<>( + () -> services.get().meter.upDownCounterBuilder(name.getRawName()).setDescription(description).setUnit(unit.toString()).build() + ); + var counter = OtelLongUpDownCounter.build(lazyCounter, name, description, unit); + longUpDownCounters.register(counter); + return counter; + } + + @Override + public LongGauge registerLongGauge(MetricName name, String description, T unit) { + var lazyGauge = new LazyInitializable<>( + () -> services.get().meter.gaugeBuilder(name.getRawName()) + .ofLongs() + .setDescription(description) + .setUnit(unit.toString()) + .buildObserver() + ); + + var gauge = OtelLongGauge.build(lazyGauge, name, description, unit); + longGauges.register(gauge); + return gauge; + } + + @Override + public LongHistogram registerLongHistogram(MetricName name, String description, T unit) { + var lazyHistogram = new LazyInitializable<>( + () -> services.get().meter.histogramBuilder(name.getRawName()) + .ofLongs() + .setDescription(description) + .setUnit(unit.toString()) + .build() + ); + + var histogram = OtelLongHistogram.build(lazyHistogram, name, description, unit); + longHistograms.register(histogram); + return histogram; } void createApmServices() { @@ -125,7 +185,7 @@ void createApmServices() { this.services.set(new APMServices(meter, openTelemetry)); Meter myMeter = GlobalOpenTelemetry.getMeter("my_meter"); - LongCounter counter = myMeter.counterBuilder("my_counter").build(); + var counter = myMeter.counterBuilder("my_counter").build(); new Thread(new Runnable() { @Override diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/InstrumentRegistrar.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/InstrumentRegistrar.java new file mode 100644 index 0000000000000..0d1c30b2b7e06 --- /dev/null +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/InstrumentRegistrar.java @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.telemetry.apm; + +import org.elasticsearch.common.util.concurrent.ConcurrentCollections; +import org.elasticsearch.telemetry.MetricName; +import org.elasticsearch.telemetry.metric.Instrument; + +import java.util.Map; + +public class InstrumentRegistrar { + private final Map registered = ConcurrentCollections.newConcurrentMap(); + + void register(T instrument) { + registered.compute(instrument.getName(), (k, v) -> { + if (v != null) { + throw new IllegalStateException( + instrument.getClass().getSimpleName() + "[" + instrument.getName().getRawName() + "] already registered" + ); + } + + return instrument; + }); + } + + T get(MetricName name) { + return registered.get(name); + } +} diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleCounter.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleCounter.java new file mode 100644 index 0000000000000..2f86e70f6e735 --- /dev/null +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleCounter.java @@ -0,0 +1,67 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.telemetry.apm; + +import io.opentelemetry.api.metrics.DoubleCounter; + +import org.elasticsearch.common.util.LazyInitializable; +import org.elasticsearch.common.util.concurrent.ThreadContext; +import org.elasticsearch.telemetry.MetricName; + +import java.util.Map; + +public class OtelDoubleCounter implements org.elasticsearch.telemetry.metric.DoubleCounter { + private final LazyInitializable counter; + private final MetricName name; + private final String description; + private final T unit; + + private OtelDoubleCounter(LazyInitializable lazyCounter, MetricName name, String description, T unit) { + this.counter = lazyCounter; + this.name = name; + this.description = description; + this.unit = unit; + } + + public static OtelDoubleCounter build( + LazyInitializable lazyCounter, + MetricName name, + String description, + T unit + ) { + return new OtelDoubleCounter<>(lazyCounter, name, description, unit); + } + + @Override + public MetricName getName() { + return name; + } + + @Override + public void increment() { + counter.getOrCompute().add(1d); + } + + @Override + public void incrementBy(double inc) { + assert inc >= 0; + counter.getOrCompute().add(inc); + } + + @Override + public void incrementBy(double inc, Map attributes) { + assert inc >= 0; + counter.getOrCompute().add(inc, OtelHelper.fromMap(attributes)); + } + + @Override + public void incrementBy(double inc, Map attributes, ThreadContext threadContext) { + throw new UnsupportedOperationException("unimplemented"); + } +} diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleGauge.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleGauge.java index edb7ce3efe226..da912fd015ab0 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleGauge.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleGauge.java @@ -43,6 +43,11 @@ public static OtelDoubleGauge build( return new OtelDoubleGauge<>(lazyGauge, name, description, unit); } + @Override + public MetricName getName() { + return name; + } + @Override public void record(double value) { gauge.getOrCompute().record(value); diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleHistogram.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleHistogram.java index 3de4f5996b7df..f850f26926dcc 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleHistogram.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleHistogram.java @@ -42,6 +42,11 @@ public static OtelDoubleHistogram build( return new OtelDoubleHistogram<>(lazyHistogram, name, description, unit); } + @Override + public MetricName getName() { + return name; + } + @Override public void record(double value) { histogram.getOrCompute().record(value); diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleUpDownCounter.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleUpDownCounter.java new file mode 100644 index 0000000000000..30842d3c1f469 --- /dev/null +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleUpDownCounter.java @@ -0,0 +1,65 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.telemetry.apm; + +import io.opentelemetry.api.metrics.DoubleUpDownCounter; + +import org.elasticsearch.common.util.LazyInitializable; +import org.elasticsearch.common.util.concurrent.ThreadContext; +import org.elasticsearch.telemetry.MetricName; + +import java.util.Map; + +public class OtelDoubleUpDownCounter implements org.elasticsearch.telemetry.metric.DoubleUpDownCounter { + private final LazyInitializable counter; + private final MetricName name; + private final String description; + private final T unit; + + private OtelDoubleUpDownCounter( + LazyInitializable lazyCounter, + MetricName name, + String description, + T unit + ) { + this.counter = lazyCounter; + this.name = name; + this.description = description; + this.unit = unit; + } + + public static OtelDoubleUpDownCounter build( + LazyInitializable lazyCounter, + MetricName name, + String description, + T unit + ) { + return new OtelDoubleUpDownCounter<>(lazyCounter, name, description, unit); + } + + @Override + public MetricName getName() { + return name; + } + + @Override + public void add(double inc) { + counter.getOrCompute().add(inc); + } + + @Override + public void add(double inc, Map attributes) { + counter.getOrCompute().add(inc, OtelHelper.fromMap(attributes)); + } + + @Override + public void add(double inc, Map attributes, ThreadContext threadContext) { + throw new UnsupportedOperationException("unimplemented"); + } +} diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelCounter.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongCounter.java similarity index 56% rename from modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelCounter.java rename to modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongCounter.java index 0a74d9bf226d6..be4cd3b69371a 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelCounter.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongCounter.java @@ -11,29 +11,36 @@ import io.opentelemetry.api.metrics.LongCounter; import org.elasticsearch.common.util.LazyInitializable; +import org.elasticsearch.common.util.concurrent.ThreadContext; import org.elasticsearch.telemetry.MetricName; -import org.elasticsearch.telemetry.metric.Counter; -public class OtelCounter implements Counter { +import java.util.Map; + +public class OtelLongCounter implements org.elasticsearch.telemetry.metric.LongCounter { private final LazyInitializable counter; private final MetricName name; private final String description; private final T unit; - private OtelCounter(LazyInitializable lazyCounter, MetricName name, String description, T unit) { + private OtelLongCounter(LazyInitializable lazyCounter, MetricName name, String description, T unit) { this.counter = lazyCounter; this.name = name; this.description = description; this.unit = unit; } - public static OtelCounter build( + public static OtelLongCounter build( LazyInitializable lazyCounter, MetricName name, String description, T unit ) { - return new OtelCounter<>(lazyCounter, name, description, unit); + return new OtelLongCounter<>(lazyCounter, name, description, unit); + } + + @Override + public MetricName getName() { + return name; } @Override @@ -43,6 +50,18 @@ public void increment() { @Override public void incrementBy(long inc) { + assert inc >= 0; counter.getOrCompute().add(inc); } + + @Override + public void incrementBy(long inc, Map attributes) { + assert inc >= 0; + counter.getOrCompute().add(inc, OtelHelper.fromMap(attributes)); + } + + @Override + public void incrementBy(double inc, Map attributes, ThreadContext threadContext) { + throw new UnsupportedOperationException("unimplemented"); + } } diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongGauge.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongGauge.java new file mode 100644 index 0000000000000..e003a32f2c762 --- /dev/null +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongGauge.java @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.telemetry.apm; + +import io.opentelemetry.api.metrics.ObservableLongMeasurement; + +import org.elasticsearch.common.util.LazyInitializable; +import org.elasticsearch.telemetry.MetricName; + +import java.util.Map; + +public class OtelLongGauge implements org.elasticsearch.telemetry.metric.LongGauge { + private final LazyInitializable gauge; + private final MetricName name; + private final String description; + private final T unit; + + private OtelLongGauge( + LazyInitializable gauge, + MetricName name, + String description, + T unit + ) { + this.gauge = gauge; + this.name = name; + this.description = description; + this.unit = unit; + } + + public static OtelLongGauge build( + LazyInitializable lazyGauge, + MetricName name, + String description, + T unit + ) { + return new OtelLongGauge<>(lazyGauge, name, description, unit); + } + + @Override + public MetricName getName() { + return name; + } + + @Override + public void record(long value) { + gauge.getOrCompute().record(value); + } + + @Override + public void record(long value, Map attributes) { + gauge.getOrCompute().record(value, OtelHelper.fromMap(attributes)); + } +} diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongHistogram.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongHistogram.java new file mode 100644 index 0000000000000..244e5e130edea --- /dev/null +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongHistogram.java @@ -0,0 +1,63 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.telemetry.apm; + +import org.elasticsearch.common.util.LazyInitializable; +import org.elasticsearch.common.util.concurrent.ThreadContext; +import org.elasticsearch.telemetry.MetricName; + +import java.util.Map; + +public class OtelLongHistogram implements org.elasticsearch.telemetry.metric.LongHistogram { + private final LazyInitializable histogram; + private final MetricName name; + private final String description; + private final T unit; + + public OtelLongHistogram( + LazyInitializable histogram, + MetricName name, + String description, + T unit + ) { + this.histogram = histogram; + this.name = name; + this.description = description; + this.unit = unit; + } + + public static OtelLongHistogram build( + LazyInitializable lazyHistogram, + MetricName name, + String description, + T unit + ) { + return new OtelLongHistogram<>(lazyHistogram, name, description, unit); + } + + @Override + public MetricName getName() { + return name; + } + + @Override + public void record(long value) { + histogram.getOrCompute().record(value); + } + + @Override + public void record(long value, Map attributes) { + histogram.getOrCompute().record(value, OtelHelper.fromMap(attributes)); + } + + @Override + public void record(long value, Map attributes, ThreadContext threadContext) { + throw new UnsupportedOperationException("unimplemented"); + } +} diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongUpDownCounter.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongUpDownCounter.java new file mode 100644 index 0000000000000..d882702710590 --- /dev/null +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongUpDownCounter.java @@ -0,0 +1,65 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.telemetry.apm; + +import io.opentelemetry.api.metrics.LongUpDownCounter; + +import org.elasticsearch.common.util.LazyInitializable; +import org.elasticsearch.common.util.concurrent.ThreadContext; +import org.elasticsearch.telemetry.MetricName; + +import java.util.Map; + +public class OtelLongUpDownCounter implements org.elasticsearch.telemetry.metric.LongUpDownCounter { + private final LazyInitializable counter; + private final MetricName name; + private final String description; + private final T unit; + + private OtelLongUpDownCounter( + LazyInitializable lazyCounter, + MetricName name, + String description, + T unit + ) { + this.counter = lazyCounter; + this.name = name; + this.description = description; + this.unit = unit; + } + + public static OtelLongUpDownCounter build( + LazyInitializable lazyCounter, + MetricName name, + String description, + T unit + ) { + return new OtelLongUpDownCounter<>(lazyCounter, name, description, unit); + } + + @Override + public MetricName getName() { + return name; + } + + @Override + public void add(long inc) { + counter.getOrCompute().add(inc); + } + + @Override + public void add(long inc, Map attributes) { + counter.getOrCompute().add(inc, OtelHelper.fromMap(attributes)); + } + + @Override + public void add(long inc, Map attributes, ThreadContext threadContext) { + throw new UnsupportedOperationException("unimplemented"); + } +} diff --git a/server/src/main/java/org/elasticsearch/telemetry/metric/DoubleCounter.java b/server/src/main/java/org/elasticsearch/telemetry/metric/DoubleCounter.java new file mode 100644 index 0000000000000..692f75c0a1e8b --- /dev/null +++ b/server/src/main/java/org/elasticsearch/telemetry/metric/DoubleCounter.java @@ -0,0 +1,51 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.telemetry.metric; + +import org.elasticsearch.common.util.concurrent.ThreadContext; +import org.elasticsearch.telemetry.MetricName; + +import java.util.Map; + +public interface DoubleCounter extends Instrument { + void increment(); + + void incrementBy(double inc); + + void incrementBy(double inc, Map attributes); + + void incrementBy(double inc, Map attributes, ThreadContext threadContext); + + DoubleCounter NOOP = new DoubleCounter() { + @Override + public MetricName getName() { + return null; + } + + @Override + public void increment() { + + } + + @Override + public void incrementBy(double inc) { + + } + + @Override + public void incrementBy(double inc, Map attributes) { + + } + + @Override + public void incrementBy(double inc, Map attributes, ThreadContext threadContext) { + + } + }; +} diff --git a/server/src/main/java/org/elasticsearch/telemetry/metric/DoubleGauge.java b/server/src/main/java/org/elasticsearch/telemetry/metric/DoubleGauge.java index bef1bc8e80535..002d0a854e0e2 100644 --- a/server/src/main/java/org/elasticsearch/telemetry/metric/DoubleGauge.java +++ b/server/src/main/java/org/elasticsearch/telemetry/metric/DoubleGauge.java @@ -8,17 +8,23 @@ package org.elasticsearch.telemetry.metric; +import org.elasticsearch.telemetry.MetricName; + import java.util.Map; /** * Record non-additive double values */ -public interface DoubleGauge { +public interface DoubleGauge extends Instrument { void record(double value); void record(double value, Map attributes); DoubleGauge NOOP = new DoubleGauge() { + @Override + public MetricName getName() { + return null; + } @Override public void record(double value) { diff --git a/server/src/main/java/org/elasticsearch/telemetry/metric/DoubleHistogram.java b/server/src/main/java/org/elasticsearch/telemetry/metric/DoubleHistogram.java index 487052f7d9799..88feacaffe42e 100644 --- a/server/src/main/java/org/elasticsearch/telemetry/metric/DoubleHistogram.java +++ b/server/src/main/java/org/elasticsearch/telemetry/metric/DoubleHistogram.java @@ -9,10 +9,11 @@ package org.elasticsearch.telemetry.metric; import org.elasticsearch.common.util.concurrent.ThreadContext; +import org.elasticsearch.telemetry.MetricName; import java.util.Map; -public interface DoubleHistogram { +public interface DoubleHistogram extends Instrument { void record(double value); void record(double value, Map attributes); @@ -20,6 +21,11 @@ public interface DoubleHistogram { void record(double value, Map attributes, ThreadContext threadContext); DoubleHistogram NOOP = new DoubleHistogram() { + @Override + public MetricName getName() { + return null; + } + @Override public void record(double value) { diff --git a/server/src/main/java/org/elasticsearch/telemetry/metric/DoubleUpDownCounter.java b/server/src/main/java/org/elasticsearch/telemetry/metric/DoubleUpDownCounter.java new file mode 100644 index 0000000000000..4b88d3fcc9d3b --- /dev/null +++ b/server/src/main/java/org/elasticsearch/telemetry/metric/DoubleUpDownCounter.java @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.telemetry.metric; + +import org.elasticsearch.common.util.concurrent.ThreadContext; +import org.elasticsearch.telemetry.MetricName; + +import java.util.Map; + +public interface DoubleUpDownCounter extends Instrument { + // inc may be negative + void add(double inc); + + void add(double inc, Map attributes); + + void add(double inc, Map attributes, ThreadContext threadContext); + + DoubleUpDownCounter NOOP = new DoubleUpDownCounter() { + @Override + public MetricName getName() { + return null; + } + + @Override + public void add(double inc) { + + } + + @Override + public void add(double inc, Map attributes) { + + } + + @Override + public void add(double inc, Map attributes, ThreadContext threadContext) { + + } + }; +} diff --git a/server/src/main/java/org/elasticsearch/telemetry/metric/Counter.java b/server/src/main/java/org/elasticsearch/telemetry/metric/Instrument.java similarity index 60% rename from server/src/main/java/org/elasticsearch/telemetry/metric/Counter.java rename to server/src/main/java/org/elasticsearch/telemetry/metric/Instrument.java index 03eba11a8575d..0b479ca59c513 100644 --- a/server/src/main/java/org/elasticsearch/telemetry/metric/Counter.java +++ b/server/src/main/java/org/elasticsearch/telemetry/metric/Instrument.java @@ -8,20 +8,8 @@ package org.elasticsearch.telemetry.metric; -public interface Counter { - void increment(); +import org.elasticsearch.telemetry.MetricName; - void incrementBy(long inc); - - Counter NOOP = new Counter() { - @Override - public void increment() { - - } - - @Override - public void incrementBy(long inc) { - - } - }; +public interface Instrument { + MetricName getName(); } diff --git a/server/src/main/java/org/elasticsearch/telemetry/metric/LongCounter.java b/server/src/main/java/org/elasticsearch/telemetry/metric/LongCounter.java new file mode 100644 index 0000000000000..02c454869f759 --- /dev/null +++ b/server/src/main/java/org/elasticsearch/telemetry/metric/LongCounter.java @@ -0,0 +1,51 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.telemetry.metric; + +import org.elasticsearch.common.util.concurrent.ThreadContext; +import org.elasticsearch.telemetry.MetricName; + +import java.util.Map; + +public interface LongCounter extends Instrument { + void increment(); + + void incrementBy(long inc); + + void incrementBy(long inc, Map attributes); + + void incrementBy(double inc, Map attributes, ThreadContext threadContext); + + LongCounter NOOP = new LongCounter() { + @Override + public MetricName getName() { + return null; + } + + @Override + public void increment() { + + } + + @Override + public void incrementBy(long inc) { + + } + + @Override + public void incrementBy(long inc, Map attributes) { + + } + + @Override + public void incrementBy(double inc, Map attributes, ThreadContext threadContext) { + + } + }; +} diff --git a/server/src/main/java/org/elasticsearch/telemetry/metric/LongGauge.java b/server/src/main/java/org/elasticsearch/telemetry/metric/LongGauge.java new file mode 100644 index 0000000000000..79f382a3c06ce --- /dev/null +++ b/server/src/main/java/org/elasticsearch/telemetry/metric/LongGauge.java @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.telemetry.metric; + +import org.elasticsearch.telemetry.MetricName; + +import java.util.Map; + +/** + * Record non-additive double values + */ +public interface LongGauge extends Instrument { + void record(long value); + + void record(long value, Map attributes); + + LongGauge NOOP = new LongGauge() { + @Override + public MetricName getName() { + return null; + } + + @Override + public void record(long value) { + + } + + @Override + public void record(long value, Map attributes) { + + } + }; +} diff --git a/server/src/main/java/org/elasticsearch/telemetry/metric/LongHistogram.java b/server/src/main/java/org/elasticsearch/telemetry/metric/LongHistogram.java new file mode 100644 index 0000000000000..844835564a574 --- /dev/null +++ b/server/src/main/java/org/elasticsearch/telemetry/metric/LongHistogram.java @@ -0,0 +1,44 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.telemetry.metric; + +import org.elasticsearch.common.util.concurrent.ThreadContext; +import org.elasticsearch.telemetry.MetricName; + +import java.util.Map; + +public interface LongHistogram extends Instrument { + void record(long value); + + void record(long value, Map attributes); + + void record(long value, Map attributes, ThreadContext threadContext); + + LongHistogram NOOP = new LongHistogram() { + @Override + public MetricName getName() { + return null; + } + + @Override + public void record(long value) { + + } + + @Override + public void record(long value, Map attributes) { + + } + + @Override + public void record(long value, Map attributes, ThreadContext threadContext) { + + } + }; +} diff --git a/server/src/main/java/org/elasticsearch/telemetry/metric/LongUpDownCounter.java b/server/src/main/java/org/elasticsearch/telemetry/metric/LongUpDownCounter.java new file mode 100644 index 0000000000000..92fc17ec2074b --- /dev/null +++ b/server/src/main/java/org/elasticsearch/telemetry/metric/LongUpDownCounter.java @@ -0,0 +1,44 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.telemetry.metric; + +import org.elasticsearch.common.util.concurrent.ThreadContext; +import org.elasticsearch.telemetry.MetricName; + +import java.util.Map; + +public interface LongUpDownCounter extends Instrument { + void add(long inc); + + void add(long inc, Map attributes); + + void add(long inc, Map attributes, ThreadContext threadContext); + + LongUpDownCounter NOOP = new LongUpDownCounter() { + @Override + public MetricName getName() { + return null; + } + + @Override + public void add(long inc) { + + } + + @Override + public void add(long inc, Map attributes) { + + } + + @Override + public void add(long inc, Map attributes, ThreadContext threadContext) { + + } + }; +} diff --git a/server/src/main/java/org/elasticsearch/telemetry/metric/Metric.java b/server/src/main/java/org/elasticsearch/telemetry/metric/Metric.java index 47d134fa40d09..40da909c24f91 100644 --- a/server/src/main/java/org/elasticsearch/telemetry/metric/Metric.java +++ b/server/src/main/java/org/elasticsearch/telemetry/metric/Metric.java @@ -11,16 +11,30 @@ import org.elasticsearch.telemetry.MetricName; public interface Metric { - Counter registerCounter(MetricName name, String description, T unit); + DoubleCounter registerDoubleCounter(MetricName name, String description, T unit); + + DoubleUpDownCounter registerDoubleUpDownCounter(MetricName name, String description, T unit); DoubleGauge registerDoubleGauge(MetricName name, String description, T unit); DoubleHistogram registerDoubleHistogram(MetricName name, String description, T unit); + LongCounter registerLongCounter(MetricName name, String description, T unit); + + LongUpDownCounter registerLongUpDownCounter(MetricName name, String description, T unit); + + LongGauge registerLongGauge(MetricName name, String description, T unit); + + LongHistogram registerLongHistogram(MetricName name, String description, T unit); + Metric NOOP = new Metric() { @Override - public Counter registerCounter(MetricName name, String description, T unit) { - return Counter.NOOP; + public DoubleCounter registerDoubleCounter(MetricName name, String description, T unit) { + return DoubleCounter.NOOP; + } + + public DoubleUpDownCounter registerDoubleUpDownCounter(MetricName name, String description, T unit) { + return DoubleUpDownCounter.NOOP; } @Override @@ -32,5 +46,26 @@ public DoubleGauge registerDoubleGauge(MetricName name, String description, public DoubleHistogram registerDoubleHistogram(MetricName name, String description, T unit) { return DoubleHistogram.NOOP; } + + @Override + public LongCounter registerLongCounter(MetricName name, String description, T unit) { + return LongCounter.NOOP; + } + + public LongUpDownCounter registerLongUpDownCounter(MetricName name, String description, T unit) { + return LongUpDownCounter.NOOP; + } + + @Override + + public LongGauge registerLongGauge(MetricName name, String description, T unit) { + return LongGauge.NOOP; + } + + @Override + + public LongHistogram registerLongHistogram(MetricName name, String description, T unit) { + return LongHistogram.NOOP; + } }; } From a1674dc4c848e451648a5033539683850ff075a5 Mon Sep 17 00:00:00 2001 From: Stuart Tettemer Date: Wed, 20 Sep 2023 16:10:53 -0500 Subject: [PATCH 10/13] Replace Tracer with TelemetryProvider --- .../PredicateTokenScriptFilterTests.java | 19 +++++++++++++++++-- .../ScriptedConditionTokenFilterTests.java | 19 +++++++++++++++++-- .../ReindexFromRemoteWithAuthTests.java | 1 + .../azure/AzureStorageServiceTests.java | 4 ++-- .../systemd/SystemdPluginTests.java | 12 ++++++------ .../cluster/SimpleClusterStateIT.java | 1 + .../health/GetHealthActionIT.java | 1 + .../elasticsearch/health/HealthServiceIT.java | 1 + .../elasticsearch/index/FinalPipelineIT.java | 1 + .../index/SettingsListenerIT.java | 1 + .../ingest/IngestAsyncProcessorIT.java | 1 + .../org/elasticsearch/telemetry/Meter.java | 11 ----------- .../org/elasticsearch/node/NodeTests.java | 1 + .../plugins/PluginIntrospectorTests.java | 1 + .../audit/logfile/LoggingAuditTrail.java | 6 +++--- .../xpack/security/SecurityTests.java | 3 +-- .../xpack/watcher/WatcherPluginTests.java | 4 ++-- 17 files changed, 57 insertions(+), 30 deletions(-) delete mode 100644 server/src/main/java/org/elasticsearch/telemetry/Meter.java diff --git a/modules/analysis-common/src/test/java/org/elasticsearch/analysis/common/PredicateTokenScriptFilterTests.java b/modules/analysis-common/src/test/java/org/elasticsearch/analysis/common/PredicateTokenScriptFilterTests.java index af7386ba9b629..7b60c1a64abb6 100644 --- a/modules/analysis-common/src/test/java/org/elasticsearch/analysis/common/PredicateTokenScriptFilterTests.java +++ b/modules/analysis-common/src/test/java/org/elasticsearch/analysis/common/PredicateTokenScriptFilterTests.java @@ -28,7 +28,7 @@ import org.elasticsearch.script.Script; import org.elasticsearch.script.ScriptContext; import org.elasticsearch.script.ScriptService; -import org.elasticsearch.telemetry.tracing.Tracer; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.test.ESTokenStreamTestCase; import org.elasticsearch.test.IndexSettingsModule; import org.elasticsearch.threadpool.ThreadPool; @@ -68,7 +68,22 @@ public FactoryType compile(Script script, ScriptContext FactoryType compile(Script script, ScriptContext events; boolean includeRequestBody; @@ -401,7 +401,7 @@ public LoggingAuditTrail(Settings settings, ClusterService clusterService, Threa } LoggingAuditTrail(Settings settings, ClusterService clusterService, Logger logger, ThreadContext threadContext, Metric metric) { - this.authenticationFailedCounter = metric.registerCounter( + this.authenticationFailedCounter = metric.registerLongCounter( new MetricName("authenticationFailed"), "authenticationFailed", new Object() diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/SecurityTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/SecurityTests.java index e3065aae01336..f082cfa443acb 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/SecurityTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/SecurityTests.java @@ -54,7 +54,6 @@ import org.elasticsearch.rest.RestRequest; import org.elasticsearch.script.ScriptService; import org.elasticsearch.telemetry.TelemetryProvider; -import org.elasticsearch.telemetry.tracing.Tracer; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.IndexSettingsModule; import org.elasticsearch.test.MockLogAppender; @@ -778,7 +777,7 @@ public void testSecurityRestHandlerInterceptorCanBeInstalled() throws IllegalAcc null, usageService, null, - Tracer.NOOP, + TelemetryProvider.NOOP, mock(ClusterService.class), List.of(), RestExtension.allowAll() diff --git a/x-pack/plugin/watcher/src/test/java/org/elasticsearch/xpack/watcher/WatcherPluginTests.java b/x-pack/plugin/watcher/src/test/java/org/elasticsearch/xpack/watcher/WatcherPluginTests.java index a427b8bfcfee2..e1f1933242414 100644 --- a/x-pack/plugin/watcher/src/test/java/org/elasticsearch/xpack/watcher/WatcherPluginTests.java +++ b/x-pack/plugin/watcher/src/test/java/org/elasticsearch/xpack/watcher/WatcherPluginTests.java @@ -15,7 +15,7 @@ import org.elasticsearch.indices.SystemIndexDescriptor; import org.elasticsearch.indices.TestIndexNameExpressionResolver; import org.elasticsearch.plugins.internal.DocumentParsingObserver; -import org.elasticsearch.telemetry.tracing.Tracer; +import org.elasticsearch.telemetry.TelemetryProvider; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.IndexSettingsModule; import org.elasticsearch.threadpool.ExecutorBuilder; @@ -75,7 +75,7 @@ public void testWatcherDisabledTests() throws Exception { // also no component creation if not enabled assertThat( - watcher.createComponents(null, null, null, null, null, null, null, null, null, null, null, Tracer.NOOP, null, null), + watcher.createComponents(null, null, null, null, null, null, null, null, null, null, null, TelemetryProvider.NOOP, null, null), hasSize(0) ); From aeed9b4b388d66ea0aa294cb3002a5926360779c Mon Sep 17 00:00:00 2001 From: Przemyslaw Gomulka Date: Thu, 21 Sep 2023 09:23:33 +0200 Subject: [PATCH 11/13] sm --- modules/apm/build.gradle | 2 +- .../java/org/elasticsearch/telemetry/apm/APM.java | 3 +++ .../elasticsearch/telemetry/apm/APMMetric.java | 15 --------------- .../main/plugin-metadata/plugin-security.policy | 3 ++- 4 files changed, 6 insertions(+), 17 deletions(-) diff --git a/modules/apm/build.gradle b/modules/apm/build.gradle index 96032d873f986..4a9d37f2dd2a3 100644 --- a/modules/apm/build.gradle +++ b/modules/apm/build.gradle @@ -24,7 +24,7 @@ dependencies { implementation "io.opentelemetry:opentelemetry-api:${otelVersion}" implementation "io.opentelemetry:opentelemetry-context:${otelVersion}" implementation "io.opentelemetry:opentelemetry-semconv:${otelVersion}-alpha" - implementation "co.elastic.apm:elastic-apm-agent:1.42.1-SNAPSHOT" + runtime "co.elastic.apm:elastic-apm-agent:1.42.1-SNAPSHOT" } tasks.named("dependencyLicenses").configure { diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APM.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APM.java index 0cbe2126f9e15..1ac14e500404f 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APM.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APM.java @@ -29,6 +29,9 @@ import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; +import java.lang.invoke.MethodHandles; +import java.security.AccessController; +import java.security.PrivilegedAction; import java.util.Collection; import java.util.List; import java.util.function.Supplier; diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java index ecc18ad2d35c2..312d8e2774ed7 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java @@ -121,21 +121,6 @@ void createApmServices() { this.services.set(new APMServices(meter, openTelemetry)); - Meter myMeter = GlobalOpenTelemetry.getMeter("my_meter"); - LongCounter counter = myMeter.counterBuilder("my_counter").build(); - - new Thread(new Runnable() { - @Override - public void run() { - try { - counter.add(42); - Thread.sleep(2000); - }catch (Exception e){ - - } - } - }).start(); - return null; }); } diff --git a/modules/apm/src/main/plugin-metadata/plugin-security.policy b/modules/apm/src/main/plugin-metadata/plugin-security.policy index 20c44571df746..450896fe151ec 100644 --- a/modules/apm/src/main/plugin-metadata/plugin-security.policy +++ b/modules/apm/src/main/plugin-metadata/plugin-security.policy @@ -10,11 +10,12 @@ grant { permission java.lang.RuntimePermission "accessSystemModules"; permission java.lang.RuntimePermission "createClassLoader"; permission java.lang.RuntimePermission "getClassLoader"; - permission java.util.PropertyPermission "elastic.apm.*", "write"; permission java.util.PropertyPermission "*", "read,write"; + }; grant codeBase "${codebase.elastic-apm-agent}" { + permission java.lang.RuntimePermission "accessDeclaredMembers"; permission java.lang.RuntimePermission "setContextClassLoader"; permission java.lang.RuntimePermission "setFactory"; From 2dbac8c6b8d13d4291aea509b8a9226b086a6590 Mon Sep 17 00:00:00 2001 From: Przemyslaw Gomulka Date: Thu, 21 Sep 2023 09:42:40 +0200 Subject: [PATCH 12/13] metric package --- modules/apm/build.gradle | 2 +- modules/apm/src/main/java/module-info.java | 1 + .../src/main/java/org/elasticsearch/telemetry/apm/APM.java | 4 +--- .../org/elasticsearch/telemetry/apm/APMTelemetryProvider.java | 1 + .../elasticsearch/telemetry/apm/{ => metrics}/APMMetric.java | 2 +- .../telemetry/apm/{ => metrics}/InstrumentRegistrar.java | 2 +- .../telemetry/apm/{ => metrics}/OtelDoubleCounter.java | 2 +- .../telemetry/apm/{ => metrics}/OtelDoubleGauge.java | 2 +- .../telemetry/apm/{ => metrics}/OtelDoubleHistogram.java | 2 +- .../telemetry/apm/{ => metrics}/OtelDoubleUpDownCounter.java | 2 +- .../elasticsearch/telemetry/apm/{ => metrics}/OtelHelper.java | 2 +- .../telemetry/apm/{ => metrics}/OtelLongCounter.java | 2 +- .../telemetry/apm/{ => metrics}/OtelLongGauge.java | 2 +- .../telemetry/apm/{ => metrics}/OtelLongHistogram.java | 2 +- .../telemetry/apm/{ => metrics}/OtelLongUpDownCounter.java | 2 +- .../telemetry/apm/settings/APMAgentSettings.java | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) rename modules/apm/src/main/java/org/elasticsearch/telemetry/apm/{ => metrics}/APMMetric.java (99%) rename modules/apm/src/main/java/org/elasticsearch/telemetry/apm/{ => metrics}/InstrumentRegistrar.java (95%) rename modules/apm/src/main/java/org/elasticsearch/telemetry/apm/{ => metrics}/OtelDoubleCounter.java (97%) rename modules/apm/src/main/java/org/elasticsearch/telemetry/apm/{ => metrics}/OtelDoubleGauge.java (97%) rename modules/apm/src/main/java/org/elasticsearch/telemetry/apm/{ => metrics}/OtelDoubleHistogram.java (97%) rename modules/apm/src/main/java/org/elasticsearch/telemetry/apm/{ => metrics}/OtelDoubleUpDownCounter.java (97%) rename modules/apm/src/main/java/org/elasticsearch/telemetry/apm/{ => metrics}/OtelHelper.java (96%) rename modules/apm/src/main/java/org/elasticsearch/telemetry/apm/{ => metrics}/OtelLongCounter.java (97%) rename modules/apm/src/main/java/org/elasticsearch/telemetry/apm/{ => metrics}/OtelLongGauge.java (97%) rename modules/apm/src/main/java/org/elasticsearch/telemetry/apm/{ => metrics}/OtelLongHistogram.java (97%) rename modules/apm/src/main/java/org/elasticsearch/telemetry/apm/{ => metrics}/OtelLongUpDownCounter.java (97%) diff --git a/modules/apm/build.gradle b/modules/apm/build.gradle index 4a9d37f2dd2a3..83ab0b84bf8c5 100644 --- a/modules/apm/build.gradle +++ b/modules/apm/build.gradle @@ -24,7 +24,7 @@ dependencies { implementation "io.opentelemetry:opentelemetry-api:${otelVersion}" implementation "io.opentelemetry:opentelemetry-context:${otelVersion}" implementation "io.opentelemetry:opentelemetry-semconv:${otelVersion}-alpha" - runtime "co.elastic.apm:elastic-apm-agent:1.42.1-SNAPSHOT" + runtimeOnly "co.elastic.apm:elastic-apm-agent:1.42.1-SNAPSHOT" } tasks.named("dependencyLicenses").configure { diff --git a/modules/apm/src/main/java/module-info.java b/modules/apm/src/main/java/module-info.java index 0bea3078f5f00..4576a6882b465 100644 --- a/modules/apm/src/main/java/module-info.java +++ b/modules/apm/src/main/java/module-info.java @@ -16,4 +16,5 @@ requires io.opentelemetry.api; exports org.elasticsearch.telemetry.apm; + exports org.elasticsearch.telemetry.apm.metrics; } diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APM.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APM.java index 888c74fa328d2..b66e4893424aa 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APM.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APM.java @@ -25,15 +25,13 @@ import org.elasticsearch.repositories.RepositoriesService; import org.elasticsearch.script.ScriptService; import org.elasticsearch.telemetry.TelemetryProvider; +import org.elasticsearch.telemetry.apm.metrics.APMMetric; import org.elasticsearch.telemetry.apm.settings.APMAgentSettings; import org.elasticsearch.telemetry.apm.tracing.APMTracer; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.watcher.ResourceWatcherService; import org.elasticsearch.xcontent.NamedXContentRegistry; -import java.lang.invoke.MethodHandles; -import java.security.AccessController; -import java.security.PrivilegedAction; import java.util.Collection; import java.util.List; import java.util.function.Supplier; diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTelemetryProvider.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTelemetryProvider.java index 817bcb25f87ba..5da1f18e1bc94 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTelemetryProvider.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMTelemetryProvider.java @@ -10,6 +10,7 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.telemetry.TelemetryProvider; +import org.elasticsearch.telemetry.apm.metrics.APMMetric; import org.elasticsearch.telemetry.apm.tracing.APMTracer; public class APMTelemetryProvider implements TelemetryProvider { diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/APMMetric.java similarity index 99% rename from modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java rename to modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/APMMetric.java index 588f9ffe650c6..88fd772033005 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/APMMetric.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/APMMetric.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.telemetry.apm; +package org.elasticsearch.telemetry.apm.metrics; import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.api.OpenTelemetry; diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/InstrumentRegistrar.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/InstrumentRegistrar.java similarity index 95% rename from modules/apm/src/main/java/org/elasticsearch/telemetry/apm/InstrumentRegistrar.java rename to modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/InstrumentRegistrar.java index 0d1c30b2b7e06..70f303ef2ceb7 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/InstrumentRegistrar.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/InstrumentRegistrar.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.telemetry.apm; +package org.elasticsearch.telemetry.apm.metrics; import org.elasticsearch.common.util.concurrent.ConcurrentCollections; import org.elasticsearch.telemetry.MetricName; diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleCounter.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelDoubleCounter.java similarity index 97% rename from modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleCounter.java rename to modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelDoubleCounter.java index 2f86e70f6e735..8b69efee7b269 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleCounter.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelDoubleCounter.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.telemetry.apm; +package org.elasticsearch.telemetry.apm.metrics; import io.opentelemetry.api.metrics.DoubleCounter; diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleGauge.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelDoubleGauge.java similarity index 97% rename from modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleGauge.java rename to modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelDoubleGauge.java index da912fd015ab0..efba54f71cac7 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleGauge.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelDoubleGauge.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.telemetry.apm; +package org.elasticsearch.telemetry.apm.metrics; import io.opentelemetry.api.metrics.ObservableDoubleMeasurement; diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleHistogram.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelDoubleHistogram.java similarity index 97% rename from modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleHistogram.java rename to modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelDoubleHistogram.java index f850f26926dcc..331d438e560f4 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleHistogram.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelDoubleHistogram.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.telemetry.apm; +package org.elasticsearch.telemetry.apm.metrics; import org.elasticsearch.common.util.LazyInitializable; import org.elasticsearch.common.util.concurrent.ThreadContext; diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleUpDownCounter.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelDoubleUpDownCounter.java similarity index 97% rename from modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleUpDownCounter.java rename to modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelDoubleUpDownCounter.java index 30842d3c1f469..ba0f4ceceeb35 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelDoubleUpDownCounter.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelDoubleUpDownCounter.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.telemetry.apm; +package org.elasticsearch.telemetry.apm.metrics; import io.opentelemetry.api.metrics.DoubleUpDownCounter; diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelHelper.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelHelper.java similarity index 96% rename from modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelHelper.java rename to modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelHelper.java index 370887e35fe71..fe69d2914560f 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelHelper.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelHelper.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.telemetry.apm; +package org.elasticsearch.telemetry.apm.metrics; import io.opentelemetry.api.common.Attributes; diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongCounter.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelLongCounter.java similarity index 97% rename from modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongCounter.java rename to modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelLongCounter.java index be4cd3b69371a..af21560b693e4 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongCounter.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelLongCounter.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.telemetry.apm; +package org.elasticsearch.telemetry.apm.metrics; import io.opentelemetry.api.metrics.LongCounter; diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongGauge.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelLongGauge.java similarity index 97% rename from modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongGauge.java rename to modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelLongGauge.java index e003a32f2c762..58afc8dab5f2f 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongGauge.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelLongGauge.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.telemetry.apm; +package org.elasticsearch.telemetry.apm.metrics; import io.opentelemetry.api.metrics.ObservableLongMeasurement; diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongHistogram.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelLongHistogram.java similarity index 97% rename from modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongHistogram.java rename to modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelLongHistogram.java index 244e5e130edea..c512e81487ede 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongHistogram.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelLongHistogram.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.telemetry.apm; +package org.elasticsearch.telemetry.apm.metrics; import org.elasticsearch.common.util.LazyInitializable; import org.elasticsearch.common.util.concurrent.ThreadContext; diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongUpDownCounter.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelLongUpDownCounter.java similarity index 97% rename from modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongUpDownCounter.java rename to modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelLongUpDownCounter.java index d882702710590..1251e2e658846 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/OtelLongUpDownCounter.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/metrics/OtelLongUpDownCounter.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.telemetry.apm; +package org.elasticsearch.telemetry.apm.metrics; import io.opentelemetry.api.metrics.LongUpDownCounter; diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/settings/APMAgentSettings.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/settings/APMAgentSettings.java index bb39365dbead7..468a3d1a73c3e 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/settings/APMAgentSettings.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/settings/APMAgentSettings.java @@ -17,8 +17,8 @@ import org.elasticsearch.common.settings.Setting; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.core.SuppressForbidden; -import org.elasticsearch.telemetry.apm.APMMetric; import org.elasticsearch.telemetry.apm.APMTelemetryProvider; +import org.elasticsearch.telemetry.apm.metrics.APMMetric; import org.elasticsearch.telemetry.apm.tracing.APMTracer; import java.security.AccessController; From 97fe725c32d19aeb1adc10faab8bb04686ea8387 Mon Sep 17 00:00:00 2001 From: Przemyslaw Gomulka Date: Thu, 21 Sep 2023 18:23:30 +0200 Subject: [PATCH 13/13] half done swtichable instruments --- modules/apm/build.gradle | 2 + .../apm/internal/metrics/APMMetric.java | 64 ++++++++++--------- .../internal/metrics/OtelDoubleCounter.java | 34 ++++++---- .../apm/internal/metrics/OtelDoubleGauge.java | 28 ++++---- .../internal/metrics/OtelDoubleHistogram.java | 25 +++++--- .../metrics/OtelDoubleUpDownCounter.java | 30 +++++---- .../apm/internal/metrics/OtelLongCounter.java | 10 ++- .../apm/internal/metrics/OtelLongGauge.java | 6 +- .../internal/metrics/OtelLongHistogram.java | 7 +- .../metrics/OtelLongUpDownCounter.java | 7 +- .../metrics/SwitchableInstrument.java | 45 +++++++++++++ 11 files changed, 173 insertions(+), 85 deletions(-) create mode 100644 modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/SwitchableInstrument.java diff --git a/modules/apm/build.gradle b/modules/apm/build.gradle index 83ab0b84bf8c5..667e6a8d1c0dc 100644 --- a/modules/apm/build.gradle +++ b/modules/apm/build.gradle @@ -24,6 +24,8 @@ dependencies { implementation "io.opentelemetry:opentelemetry-api:${otelVersion}" implementation "io.opentelemetry:opentelemetry-context:${otelVersion}" implementation "io.opentelemetry:opentelemetry-semconv:${otelVersion}-alpha" + implementation "org.apache.logging.log4j:log4j-api:${versions.log4j}" + runtimeOnly "co.elastic.apm:elastic-apm-agent:1.42.1-SNAPSHOT" } diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/APMMetric.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/APMMetric.java index c4b4b2fc96a30..43efdef640594 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/APMMetric.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/APMMetric.java @@ -27,11 +27,14 @@ import java.security.AccessController; import java.security.PrivilegedAction; +import java.util.ArrayList; +import java.util.List; import java.util.concurrent.atomic.AtomicReference; import static org.elasticsearch.telemetry.apm.internal.APMAgentSettings.APM_ENABLED_SETTING; public class APMMetric extends AbstractLifecycleComponent implements org.elasticsearch.telemetry.metric.Metric { + private final InstrumentRegistrar doubleCounters = new InstrumentRegistrar<>(); private final InstrumentRegistrar doubleUpDownCounters = new InstrumentRegistrar<>(); private final InstrumentRegistrar doubleGauges = new InstrumentRegistrar<>(); @@ -43,6 +46,8 @@ public class APMMetric extends AbstractLifecycleComponent implements org.elastic private volatile boolean enabled; private AtomicReference services = new AtomicReference<>(); + private final List allRegisteredInstruments = new ArrayList<>(); + record APMServices(Meter meter, OpenTelemetry openTelemetry) {} // TODO remove duplication between APMTracer and APMMetric. enabled, create apm services etc @@ -54,9 +59,12 @@ public void setEnabled(boolean enabled) { this.enabled = enabled; if (enabled) { createApmServices(); + allRegisteredInstruments.forEach(si -> si.setEnabled(true)); } else { + allRegisteredInstruments.forEach(si -> si.setEnabled(false)); destroyApmServices(); } + } @Override @@ -76,51 +84,35 @@ protected void doClose() {} @Override public DoubleCounter registerDoubleCounter(MetricName name, String description, T unit) { - var lazyCounter = new LazyInitializable<>( - () -> services.get().meter.counterBuilder(name.getRawName()) - .ofDoubles() - .setDescription(description) - .setUnit(unit.toString()) - .build() - ); - var counter = OtelDoubleCounter.build(lazyCounter, name, description, unit); + var counter = OtelDoubleCounter.build(()->services.get().meter, name, description, unit); doubleCounters.register(counter); + allRegisteredInstruments.add(counter); return counter; } @Override public DoubleUpDownCounter registerDoubleUpDownCounter(MetricName name, String description, T unit) { - var lazyCounter = new LazyInitializable<>( - () -> services.get().meter.upDownCounterBuilder(name.getRawName()) - .ofDoubles() - .setDescription(description) - .setUnit(unit.toString()) - .build() - ); - var counter = OtelDoubleUpDownCounter.build(lazyCounter, name, description, unit); + var counter = OtelDoubleUpDownCounter.build(services.get().meter, name, description, unit); doubleUpDownCounters.register(counter); + allRegisteredInstruments.add(counter); + return counter; } @Override public DoubleGauge registerDoubleGauge(MetricName name, String description, T unit) { - var lazyGauge = new LazyInitializable<>( - () -> services.get().meter.gaugeBuilder(name.getRawName()).setDescription(description).setUnit(unit.toString()).buildObserver() - ); - - var gauge = OtelDoubleGauge.build(lazyGauge, name, description, unit); + var gauge = OtelDoubleGauge.build(services.get().meter, name, description, unit); doubleGauges.register(gauge); + allRegisteredInstruments.add(gauge); + return gauge; } @Override public DoubleHistogram registerDoubleHistogram(MetricName name, String description, T unit) { - var lazyHistogram = new LazyInitializable<>( - () -> services.get().meter.histogramBuilder(name.getRawName()).setDescription(description).setUnit(unit.toString()).build() - ); - - var histogram = OtelDoubleHistogram.build(lazyHistogram, name, description, unit); + var histogram = OtelDoubleHistogram.build(services.get().meter, name, description, unit); doubleHistograms.register(histogram); + allRegisteredInstruments.add(histogram); return histogram; } @@ -129,23 +121,29 @@ public LongCounter registerLongCounter(MetricName name, String description, var lazyCounter = new LazyInitializable<>( () -> services.get().meter.counterBuilder(name.getRawName()).setDescription(description).setUnit(unit.toString()).build() ); - var counter = OtelLongCounter.build(lazyCounter, name, description, unit); + var counter = OtelLongCounter.build(lazyCounter,services.get().meter, name, description, unit); longCounters.register(counter); + allRegisteredInstruments.add(counter); + return counter; } @Override public LongUpDownCounter registerLongUpDownCounter(MetricName name, String description, T unit) { + var lazyCounter = new LazyInitializable<>( () -> services.get().meter.upDownCounterBuilder(name.getRawName()).setDescription(description).setUnit(unit.toString()).build() ); - var counter = OtelLongUpDownCounter.build(lazyCounter, name, description, unit); + var counter = OtelLongUpDownCounter.build(lazyCounter,services.get().meter, name, description, unit); longUpDownCounters.register(counter); + allRegisteredInstruments.add(counter); + return counter; } @Override public LongGauge registerLongGauge(MetricName name, String description, T unit) { + var lazyGauge = new LazyInitializable<>( () -> services.get().meter.gaugeBuilder(name.getRawName()) .ofLongs() @@ -154,13 +152,16 @@ public LongGauge registerLongGauge(MetricName name, String description, T un .buildObserver() ); - var gauge = OtelLongGauge.build(lazyGauge, name, description, unit); + var gauge = OtelLongGauge.build(lazyGauge, services.get().meter, name, description, unit); longGauges.register(gauge); + allRegisteredInstruments.add(gauge); + return gauge; } @Override public LongHistogram registerLongHistogram(MetricName name, String description, T unit) { + var lazyHistogram = new LazyInitializable<>( () -> services.get().meter.histogramBuilder(name.getRawName()) .ofLongs() @@ -169,8 +170,10 @@ public LongHistogram registerLongHistogram(MetricName name, String descripti .build() ); - var histogram = OtelLongHistogram.build(lazyHistogram, name, description, unit); + var histogram = OtelLongHistogram.build(lazyHistogram,services.get().meter, name, description, unit); longHistograms.register(histogram); + allRegisteredInstruments.add(histogram); + return histogram; } @@ -183,7 +186,6 @@ void createApmServices() { var meter = openTelemetry.getMeter("elasticsearch"); this.services.set(new APMServices(meter, openTelemetry)); - return null; }); } diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelDoubleCounter.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelDoubleCounter.java index 9dd38c733efee..7a6080fd4304f 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelDoubleCounter.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelDoubleCounter.java @@ -8,34 +8,44 @@ package org.elasticsearch.telemetry.apm.internal.metrics; -import io.opentelemetry.api.metrics.DoubleCounter; +import io.opentelemetry.api.metrics.Meter; -import org.elasticsearch.common.util.LazyInitializable; import org.elasticsearch.common.util.concurrent.ThreadContext; import org.elasticsearch.telemetry.MetricName; +import org.elasticsearch.telemetry.metric.DoubleCounter; import java.util.Map; +import java.util.function.Function; -public class OtelDoubleCounter implements org.elasticsearch.telemetry.metric.DoubleCounter { - private final LazyInitializable counter; +public class OtelDoubleCounter extends SwitchableInstrument implements DoubleCounter { private final MetricName name; private final String description; private final T unit; - private OtelDoubleCounter(LazyInitializable lazyCounter, MetricName name, String description, T unit) { - this.counter = lazyCounter; + private OtelDoubleCounter( + Function producer, + Meter meter, + MetricName name, + String description, + T unit + ) { + super(producer, meter); this.name = name; this.description = description; this.unit = unit; } - public static OtelDoubleCounter build( - LazyInitializable lazyCounter, + public static OtelDoubleCounter build(Meter meter, MetricName name, String description, T unit) { + return new OtelDoubleCounter<>((m) -> createInstrument(m, name, description, unit), meter, name, description, unit); + } + + private static io.opentelemetry.api.metrics.DoubleCounter createInstrument( + Meter meter, MetricName name, String description, T unit ) { - return new OtelDoubleCounter<>(lazyCounter, name, description, unit); + return meter.counterBuilder(name.getRawName()).ofDoubles().setDescription(description).setUnit(unit.toString()).build(); } @Override @@ -45,19 +55,19 @@ public MetricName getName() { @Override public void increment() { - counter.getOrCompute().add(1d); + getInstrument().add(1d); } @Override public void incrementBy(double inc) { assert inc >= 0; - counter.getOrCompute().add(inc); + getInstrument().add(inc); } @Override public void incrementBy(double inc, Map attributes) { assert inc >= 0; - counter.getOrCompute().add(inc, OtelHelper.fromMap(attributes)); + getInstrument().add(inc, OtelHelper.fromMap(attributes)); } @Override diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelDoubleGauge.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelDoubleGauge.java index 48ce37b35bd22..3d05a422216ae 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelDoubleGauge.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelDoubleGauge.java @@ -8,39 +8,39 @@ package org.elasticsearch.telemetry.apm.internal.metrics; +import io.opentelemetry.api.metrics.Meter; import io.opentelemetry.api.metrics.ObservableDoubleMeasurement; -import org.elasticsearch.common.util.LazyInitializable; import org.elasticsearch.telemetry.MetricName; import org.elasticsearch.telemetry.metric.DoubleGauge; import java.util.Map; +import java.util.function.Function; -public class OtelDoubleGauge implements DoubleGauge { - private final LazyInitializable gauge; +public class OtelDoubleGauge extends SwitchableInstrument implements DoubleGauge { private final MetricName name; private final String description; private final T unit; private OtelDoubleGauge( - LazyInitializable gauge, + Function instrumentProducer, + Meter meter, MetricName name, String description, T unit ) { - this.gauge = gauge; + super(instrumentProducer, meter); this.name = name; this.description = description; this.unit = unit; } - public static OtelDoubleGauge build( - LazyInitializable lazyGauge, - MetricName name, - String description, - T unit - ) { - return new OtelDoubleGauge<>(lazyGauge, name, description, unit); + public static OtelDoubleGauge build(Meter meter, MetricName name, String description, T unit) { + return new OtelDoubleGauge<>((m) -> createInstrument(meter, name, description, unit), meter, name, description, unit); + } + + private static ObservableDoubleMeasurement createInstrument(Meter meter, MetricName name, String description, T unit) { + return meter.gaugeBuilder(name.getRawName()).setDescription(description).setUnit(unit.toString()).buildObserver(); } @Override @@ -50,11 +50,11 @@ public MetricName getName() { @Override public void record(double value) { - gauge.getOrCompute().record(value); + getInstrument().record(value); } @Override public void record(double value, Map attributes) { - gauge.getOrCompute().record(value, OtelHelper.fromMap(attributes)); + getInstrument().record(value, OtelHelper.fromMap(attributes)); } } diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelDoubleHistogram.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelDoubleHistogram.java index 80d90878ca3a2..059a302657869 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelDoubleHistogram.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelDoubleHistogram.java @@ -8,38 +8,47 @@ package org.elasticsearch.telemetry.apm.internal.metrics; +import io.opentelemetry.api.metrics.Meter; + import org.elasticsearch.common.util.LazyInitializable; import org.elasticsearch.common.util.concurrent.ThreadContext; import org.elasticsearch.telemetry.MetricName; import org.elasticsearch.telemetry.metric.DoubleHistogram; import java.util.Map; +import java.util.function.Function; -public class OtelDoubleHistogram implements DoubleHistogram { - private final LazyInitializable histogram; +public class OtelDoubleHistogram extends SwitchableInstrument implements DoubleHistogram { private final MetricName name; private final String description; private final T unit; public OtelDoubleHistogram( - LazyInitializable histogram, + Function instrumentProducer, + Meter meter, MetricName name, String description, T unit ) { - this.histogram = histogram; + super(instrumentProducer, meter); this.name = name; this.description = description; this.unit = unit; } public static OtelDoubleHistogram build( - LazyInitializable lazyHistogram, + Meter meter, MetricName name, String description, T unit ) { - return new OtelDoubleHistogram<>(lazyHistogram, name, description, unit); + return new OtelDoubleHistogram<>( + (m) -> createInstrument(m, name, description, unit) + , meter, name, description, unit); + } + + private static io.opentelemetry.api.metrics.DoubleHistogram createInstrument(Meter meter, MetricName name, String description, T unit) { + return meter.histogramBuilder(name.getRawName()).setDescription(description).setUnit(unit.toString()).build(); } @Override @@ -49,12 +58,12 @@ public MetricName getName() { @Override public void record(double value) { - histogram.getOrCompute().record(value); + getInstrument().record(value); } @Override public void record(double value, Map attributes) { - histogram.getOrCompute().record(value, OtelHelper.fromMap(attributes)); + getInstrument().record(value, OtelHelper.fromMap(attributes)); } @Override diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelDoubleUpDownCounter.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelDoubleUpDownCounter.java index f9b1e38490313..350512b5f7180 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelDoubleUpDownCounter.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelDoubleUpDownCounter.java @@ -9,38 +9,40 @@ package org.elasticsearch.telemetry.apm.internal.metrics; import io.opentelemetry.api.metrics.DoubleUpDownCounter; +import io.opentelemetry.api.metrics.Meter; -import org.elasticsearch.common.util.LazyInitializable; import org.elasticsearch.common.util.concurrent.ThreadContext; import org.elasticsearch.telemetry.MetricName; import java.util.Map; +import java.util.function.Function; -public class OtelDoubleUpDownCounter implements org.elasticsearch.telemetry.metric.DoubleUpDownCounter { - private final LazyInitializable counter; +public class OtelDoubleUpDownCounter extends SwitchableInstrument + implements + org.elasticsearch.telemetry.metric.DoubleUpDownCounter { private final MetricName name; private final String description; private final T unit; private OtelDoubleUpDownCounter( - LazyInitializable lazyCounter, + Function instanceProducer, + Meter metric, MetricName name, String description, T unit ) { - this.counter = lazyCounter; + super(instanceProducer, metric); this.name = name; this.description = description; this.unit = unit; } - public static OtelDoubleUpDownCounter build( - LazyInitializable lazyCounter, - MetricName name, - String description, - T unit - ) { - return new OtelDoubleUpDownCounter<>(lazyCounter, name, description, unit); + public static OtelDoubleUpDownCounter build(Meter meter, MetricName name, String description, T unit) { + return new OtelDoubleUpDownCounter<>((m) -> createInstrument(m, name, description, unit), meter, name, description, unit); + } + + private static DoubleUpDownCounter createInstrument(Meter meter, MetricName name, String description, T unit) { + return meter.upDownCounterBuilder(name.getRawName()).ofDoubles().setDescription(description).setUnit(unit.toString()).build(); } @Override @@ -50,12 +52,12 @@ public MetricName getName() { @Override public void add(double inc) { - counter.getOrCompute().add(inc); + getInstrument().add(inc); } @Override public void add(double inc, Map attributes) { - counter.getOrCompute().add(inc, OtelHelper.fromMap(attributes)); + getInstrument().add(inc, OtelHelper.fromMap(attributes)); } @Override diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelLongCounter.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelLongCounter.java index 8f764aa77b6b2..2d47c33591652 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelLongCounter.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelLongCounter.java @@ -10,19 +10,22 @@ import io.opentelemetry.api.metrics.LongCounter; +import io.opentelemetry.api.metrics.Meter; + import org.elasticsearch.common.util.LazyInitializable; import org.elasticsearch.common.util.concurrent.ThreadContext; import org.elasticsearch.telemetry.MetricName; import java.util.Map; -public class OtelLongCounter implements org.elasticsearch.telemetry.metric.LongCounter { +public class OtelLongCounter extends SwitchableInstrument implements org.elasticsearch.telemetry.metric.LongCounter { private final LazyInitializable counter; private final MetricName name; private final String description; private final T unit; - private OtelLongCounter(LazyInitializable lazyCounter, MetricName name, String description, T unit) { + private OtelLongCounter(LazyInitializable lazyCounter, MetricName name, String description, T unit, Meter meter) { + super(null, null); this.counter = lazyCounter; this.name = name; this.description = description; @@ -31,11 +34,12 @@ private OtelLongCounter(LazyInitializable lazyCou public static OtelLongCounter build( LazyInitializable lazyCounter, + Meter meter, MetricName name, String description, T unit ) { - return new OtelLongCounter<>(lazyCounter, name, description, unit); + return new OtelLongCounter<>(lazyCounter, name, description, unit, meter); } @Override diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelLongGauge.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelLongGauge.java index 50ab085da6da9..628837d8e166e 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelLongGauge.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelLongGauge.java @@ -8,6 +8,7 @@ package org.elasticsearch.telemetry.apm.internal.metrics; +import io.opentelemetry.api.metrics.Meter; import io.opentelemetry.api.metrics.ObservableLongMeasurement; import org.elasticsearch.common.util.LazyInitializable; @@ -15,7 +16,7 @@ import java.util.Map; -public class OtelLongGauge implements org.elasticsearch.telemetry.metric.LongGauge { +public class OtelLongGauge extends SwitchableInstrument implements org.elasticsearch.telemetry.metric.LongGauge { private final LazyInitializable gauge; private final MetricName name; private final String description; @@ -27,6 +28,8 @@ private OtelLongGauge( String description, T unit ) { + super(null, null); + this.gauge = gauge; this.name = name; this.description = description; @@ -35,6 +38,7 @@ private OtelLongGauge( public static OtelLongGauge build( LazyInitializable lazyGauge, + Meter meter, MetricName name, String description, T unit diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelLongHistogram.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelLongHistogram.java index 3e431ce9736bb..ae503ea8953a0 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelLongHistogram.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelLongHistogram.java @@ -8,13 +8,15 @@ package org.elasticsearch.telemetry.apm.internal.metrics; +import io.opentelemetry.api.metrics.Meter; + import org.elasticsearch.common.util.LazyInitializable; import org.elasticsearch.common.util.concurrent.ThreadContext; import org.elasticsearch.telemetry.MetricName; import java.util.Map; -public class OtelLongHistogram implements org.elasticsearch.telemetry.metric.LongHistogram { +public class OtelLongHistogram extends SwitchableInstrument implements org.elasticsearch.telemetry.metric.LongHistogram { private final LazyInitializable histogram; private final MetricName name; private final String description; @@ -26,6 +28,8 @@ public OtelLongHistogram( String description, T unit ) { + super(null, null); + this.histogram = histogram; this.name = name; this.description = description; @@ -34,6 +38,7 @@ public OtelLongHistogram( public static OtelLongHistogram build( LazyInitializable lazyHistogram, + Meter meter, MetricName name, String description, T unit diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelLongUpDownCounter.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelLongUpDownCounter.java index bfe5b21bfb0d2..b8e5edee58a54 100644 --- a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelLongUpDownCounter.java +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/OtelLongUpDownCounter.java @@ -10,13 +10,15 @@ import io.opentelemetry.api.metrics.LongUpDownCounter; +import io.opentelemetry.api.metrics.Meter; + import org.elasticsearch.common.util.LazyInitializable; import org.elasticsearch.common.util.concurrent.ThreadContext; import org.elasticsearch.telemetry.MetricName; import java.util.Map; -public class OtelLongUpDownCounter implements org.elasticsearch.telemetry.metric.LongUpDownCounter { +public class OtelLongUpDownCounter extends SwitchableInstrument implements org.elasticsearch.telemetry.metric.LongUpDownCounter { private final LazyInitializable counter; private final MetricName name; private final String description; @@ -28,6 +30,8 @@ private OtelLongUpDownCounter( String description, T unit ) { + super(null, null); + this.counter = lazyCounter; this.name = name; this.description = description; @@ -36,6 +40,7 @@ private OtelLongUpDownCounter( public static OtelLongUpDownCounter build( LazyInitializable lazyCounter, + Meter meter, MetricName name, String description, T unit diff --git a/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/SwitchableInstrument.java b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/SwitchableInstrument.java new file mode 100644 index 0000000000000..6822d5a070906 --- /dev/null +++ b/modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/metrics/SwitchableInstrument.java @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.telemetry.apm.internal.metrics; + +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.api.metrics.Meter; + +import org.elasticsearch.common.util.LazyInitializable; + +import java.util.function.Function; + +public abstract class SwitchableInstrument { + private static final Meter NOOP_METER = OpenTelemetry.noop().getMeter("elasticsearch"); + private final LazyInitializable instrument; + private final T noopInstrument; + private volatile boolean enabled; + + public SwitchableInstrument(Function instrumentProducer, Meter meter) { + this.instrument = new LazyInitializable<>(() -> instrumentProducer.apply(meter)); + this.noopInstrument = instrumentProducer.apply(NOOP_METER); + } + + void setEnabled(boolean enabled) { + this.enabled = enabled; + } + + public boolean isEnabled() { + return enabled; + } + + public T getInstrument() { + if (enabled) { + return instrument.getOrCompute(); + } else { + return noopInstrument; + } + } + +}