-
Notifications
You must be signed in to change notification settings - Fork 774
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Meter provider configuration factory (#5773)
- Loading branch information
Showing
26 changed files
with
1,552 additions
and
93 deletions.
There are no files selected for viewing
10 changes: 9 additions & 1 deletion
10
docs/apidiffs/current_vs_latest/opentelemetry-exporter-logging.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,10 @@ | ||
Comparing source compatibility of against | ||
No changes. | ||
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.logging.LoggingMetricExporter (not serializable) | ||
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0 | ||
+++ NEW METHOD: PUBLIC(+) java.lang.String toString() | ||
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.logging.LoggingSpanExporter (not serializable) | ||
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0 | ||
+++ NEW METHOD: PUBLIC(+) java.lang.String toString() | ||
*** MODIFIED CLASS: PUBLIC io.opentelemetry.exporter.logging.SystemOutLogRecordExporter (not serializable) | ||
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0 | ||
+++ NEW METHOD: PUBLIC(+) java.lang.String toString() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
77 changes: 77 additions & 0 deletions
77
...src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/AggregationFactory.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
/* | ||
* Copyright The OpenTelemetry Authors | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
package io.opentelemetry.sdk.extension.incubator.fileconfig; | ||
|
||
import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; | ||
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException; | ||
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.Aggregation; | ||
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.Base2ExponentialBucketHistogram; | ||
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExplicitBucketHistogram; | ||
import java.io.Closeable; | ||
import java.util.List; | ||
import javax.annotation.Nullable; | ||
|
||
final class AggregationFactory | ||
implements Factory<Aggregation, io.opentelemetry.sdk.metrics.Aggregation> { | ||
|
||
private static final AggregationFactory INSTANCE = new AggregationFactory(); | ||
|
||
private AggregationFactory() {} | ||
|
||
static AggregationFactory getInstance() { | ||
return INSTANCE; | ||
} | ||
|
||
@Override | ||
public io.opentelemetry.sdk.metrics.Aggregation create( | ||
@Nullable Aggregation model, SpiHelper spiHelper, List<Closeable> closeables) { | ||
if (model == null) { | ||
return io.opentelemetry.sdk.metrics.Aggregation.defaultAggregation(); | ||
} | ||
|
||
if (model.getDrop() != null) { | ||
return io.opentelemetry.sdk.metrics.Aggregation.drop(); | ||
} | ||
if (model.getSum() != null) { | ||
return io.opentelemetry.sdk.metrics.Aggregation.sum(); | ||
} | ||
if (model.getLastValue() != null) { | ||
return io.opentelemetry.sdk.metrics.Aggregation.lastValue(); | ||
} | ||
Base2ExponentialBucketHistogram exponentialBucketHistogram = | ||
model.getBase2ExponentialBucketHistogram(); | ||
if (exponentialBucketHistogram != null) { | ||
Integer maxScale = exponentialBucketHistogram.getMaxScale(); | ||
if (maxScale == null) { | ||
maxScale = 20; | ||
} | ||
Integer maxSize = exponentialBucketHistogram.getMaxSize(); | ||
if (maxSize == null) { | ||
maxSize = 160; | ||
} | ||
try { | ||
return io.opentelemetry.sdk.metrics.Aggregation.base2ExponentialBucketHistogram( | ||
maxSize, maxScale); | ||
} catch (IllegalArgumentException e) { | ||
throw new ConfigurationException("Invalid exponential bucket histogram", e); | ||
} | ||
} | ||
ExplicitBucketHistogram explicitBucketHistogram = model.getExplicitBucketHistogram(); | ||
if (explicitBucketHistogram != null) { | ||
List<Double> boundaries = explicitBucketHistogram.getBoundaries(); | ||
if (boundaries == null) { | ||
return io.opentelemetry.sdk.metrics.Aggregation.explicitBucketHistogram(); | ||
} | ||
try { | ||
return io.opentelemetry.sdk.metrics.Aggregation.explicitBucketHistogram(boundaries); | ||
} catch (IllegalArgumentException e) { | ||
throw new ConfigurationException("Invalid explicit bucket histogram", e); | ||
} | ||
} | ||
|
||
return io.opentelemetry.sdk.metrics.Aggregation.defaultAggregation(); | ||
} | ||
} |
65 changes: 65 additions & 0 deletions
65
...n/java/io/opentelemetry/sdk/extension/incubator/fileconfig/InstrumentSelectorFactory.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
/* | ||
* Copyright The OpenTelemetry Authors | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
package io.opentelemetry.sdk.extension.incubator.fileconfig; | ||
|
||
import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; | ||
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException; | ||
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.Selector; | ||
import io.opentelemetry.sdk.metrics.InstrumentSelector; | ||
import io.opentelemetry.sdk.metrics.InstrumentSelectorBuilder; | ||
import io.opentelemetry.sdk.metrics.InstrumentType; | ||
import java.io.Closeable; | ||
import java.util.List; | ||
import javax.annotation.Nullable; | ||
|
||
final class InstrumentSelectorFactory implements Factory<Selector, InstrumentSelector> { | ||
|
||
private static final InstrumentSelectorFactory INSTANCE = new InstrumentSelectorFactory(); | ||
|
||
private InstrumentSelectorFactory() {} | ||
|
||
static InstrumentSelectorFactory getInstance() { | ||
return INSTANCE; | ||
} | ||
|
||
@Override | ||
public InstrumentSelector create( | ||
@Nullable Selector model, SpiHelper spiHelper, List<Closeable> closeables) { | ||
if (model == null) { | ||
throw new ConfigurationException("selector must not be null"); | ||
} | ||
|
||
InstrumentSelectorBuilder builder = InstrumentSelector.builder(); | ||
if (model.getInstrumentName() != null) { | ||
builder.setName(model.getInstrumentName()); | ||
} | ||
if (model.getInstrumentType() != null) { | ||
InstrumentType instrumentType; | ||
try { | ||
instrumentType = InstrumentType.valueOf(model.getInstrumentType().name()); | ||
} catch (IllegalArgumentException e) { | ||
throw new ConfigurationException( | ||
"Unrecognized instrument type: " + model.getInstrumentType(), e); | ||
} | ||
builder.setType(instrumentType); | ||
} | ||
if (model.getMeterName() != null) { | ||
builder.setMeterName(model.getMeterName()); | ||
} | ||
if (model.getMeterSchemaUrl() != null) { | ||
builder.setMeterSchemaUrl(model.getMeterSchemaUrl()); | ||
} | ||
if (model.getMeterVersion() != null) { | ||
builder.setMeterVersion(model.getMeterVersion()); | ||
} | ||
|
||
try { | ||
return builder.build(); | ||
} catch (IllegalArgumentException e) { | ||
throw new ConfigurationException("Invalid selector", e); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
61 changes: 61 additions & 0 deletions
61
...c/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MeterProviderFactory.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
/* | ||
* Copyright The OpenTelemetry Authors | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
package io.opentelemetry.sdk.extension.incubator.fileconfig; | ||
|
||
import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; | ||
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.MeterProvider; | ||
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.MetricReader; | ||
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.View; | ||
import io.opentelemetry.sdk.metrics.SdkMeterProvider; | ||
import io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder; | ||
import java.io.Closeable; | ||
import java.util.List; | ||
import javax.annotation.Nullable; | ||
|
||
final class MeterProviderFactory implements Factory<MeterProvider, SdkMeterProviderBuilder> { | ||
|
||
private static final MeterProviderFactory INSTANCE = new MeterProviderFactory(); | ||
|
||
private MeterProviderFactory() {} | ||
|
||
static MeterProviderFactory getInstance() { | ||
return INSTANCE; | ||
} | ||
|
||
@Override | ||
public SdkMeterProviderBuilder create( | ||
@Nullable MeterProvider model, SpiHelper spiHelper, List<Closeable> closeables) { | ||
if (model == null) { | ||
return SdkMeterProvider.builder(); | ||
} | ||
|
||
SdkMeterProviderBuilder builder = SdkMeterProvider.builder(); | ||
|
||
List<MetricReader> readerModels = model.getReaders(); | ||
if (readerModels != null) { | ||
readerModels.forEach( | ||
readerModel -> { | ||
io.opentelemetry.sdk.metrics.export.MetricReader metricReader = | ||
MetricReaderFactory.getInstance().create(readerModel, spiHelper, closeables); | ||
if (metricReader != null) { | ||
builder.registerMetricReader(metricReader); | ||
} | ||
}); | ||
} | ||
|
||
List<View> viewModels = model.getViews(); | ||
if (viewModels != null) { | ||
viewModels.forEach( | ||
viewModel -> | ||
builder.registerView( | ||
InstrumentSelectorFactory.getInstance() | ||
.create(viewModel.getSelector(), spiHelper, closeables), | ||
ViewFactory.getInstance().create(viewModel.getStream(), spiHelper, closeables))); | ||
} | ||
|
||
return builder; | ||
} | ||
} |
Oops, something went wrong.