|
29 | 29 | import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfigurationCustomizerProvider; |
30 | 30 | import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.BatchLogRecordProcessorModel; |
31 | 31 | import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.BatchSpanProcessorModel; |
| 32 | +import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalInstrumentationModel; |
| 33 | +import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalLanguageSpecificInstrumentationModel; |
| 34 | +import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalLanguageSpecificInstrumentationPropertyModel; |
32 | 35 | import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalResourceDetectionModel; |
33 | 36 | import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalResourceDetectorModel; |
34 | 37 | import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LogRecordExporterModel; |
|
58 | 61 | public class ElasticDeclarativeConfigurationCustomizer |
59 | 62 | implements DeclarativeConfigurationCustomizerProvider { |
60 | 63 |
|
| 64 | + private static final String RUNTIME_TELEMETRY = "runtime_telemetry"; |
| 65 | + private static final String EMIT_EXPERIMENTAL_METRICS_DEVELOPMENT = |
| 66 | + "emit_experimental_metrics/development"; |
| 67 | + |
61 | 68 | @Override |
62 | 69 | public void customize(DeclarativeConfigurationCustomizer customizer) { |
63 | 70 | customizer.addModelCustomizer( |
64 | 71 | model -> { |
65 | 72 | customizeResources(model); |
66 | 73 | customizeUserAgent(model); |
| 74 | + customizeExperimentalRuntimeTelemetryMetrics(model); |
67 | 75 | return model; |
68 | 76 | }); |
69 | 77 | } |
70 | 78 |
|
| 79 | + private static void customizeExperimentalRuntimeTelemetryMetrics( |
| 80 | + OpenTelemetryConfigurationModel model) { |
| 81 | + |
| 82 | + ExperimentalInstrumentationModel instrumentationDevelopment = |
| 83 | + model.getInstrumentationDevelopment(); |
| 84 | + if (instrumentationDevelopment == null) { |
| 85 | + instrumentationDevelopment = new ExperimentalInstrumentationModel(); |
| 86 | + model.withInstrumentationDevelopment(instrumentationDevelopment); |
| 87 | + } |
| 88 | + |
| 89 | + ExperimentalLanguageSpecificInstrumentationModel java = instrumentationDevelopment.getJava(); |
| 90 | + if (java == null) { |
| 91 | + java = new ExperimentalLanguageSpecificInstrumentationModel(); |
| 92 | + instrumentationDevelopment.withJava(java); |
| 93 | + } |
| 94 | + |
| 95 | + ExperimentalLanguageSpecificInstrumentationPropertyModel runtimeTelemetry = |
| 96 | + java.getAdditionalProperties().get(RUNTIME_TELEMETRY); |
| 97 | + if (runtimeTelemetry == null) { |
| 98 | + runtimeTelemetry = new ExperimentalLanguageSpecificInstrumentationPropertyModel(); |
| 99 | + java.withAdditionalProperty(RUNTIME_TELEMETRY, runtimeTelemetry); |
| 100 | + } |
| 101 | + if (runtimeTelemetry.getAdditionalProperties().get(EMIT_EXPERIMENTAL_METRICS_DEVELOPMENT) |
| 102 | + == null) { |
| 103 | + runtimeTelemetry.withAdditionalProperty(EMIT_EXPERIMENTAL_METRICS_DEVELOPMENT, true); |
| 104 | + } |
| 105 | + } |
| 106 | + |
71 | 107 | private static void customizeResources(OpenTelemetryConfigurationModel model) { |
72 | 108 | // this is equivalent to adding the following explicitly in declarative configuration |
73 | 109 | // |
|
0 commit comments