Skip to content

Commit cc8fff2

Browse files
authored
removed 'stable' term from metrics, left deprecated typealiases (#852)
1 parent bb0d390 commit cc8fff2

File tree

100 files changed

+995
-657
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

100 files changed

+995
-657
lines changed

.github/workflows/Create-Release-PR.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
import Foundation
2626
2727
extension Resource {
28-
public static let OTEL_SWIFT_SDK_VERSION : String = "${{ inputs.new_version }}"
28+
public static let OTEL_SWIFT_SDK_VERSION: String = "${{ inputs.new_version }}"
2929
}
3030
' > Sources/OpenTelemetrySdk/Version.swift
3131
- name: update Podspec

Examples/OTLP Exporter/main.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -82,20 +82,20 @@
8282
createSpans()
8383

8484
// Metrics
85-
let otlpMetricExporter = StableOtlpMetricExporter(channel: client)
86-
let meterProvider = StableMeterProviderSdk.builder()
85+
let otlpMetricExporter = OtlpMetricExporter(channel: client)
86+
let meterProvider = MeterProviderSdk.builder()
8787
.registerMetricReader(
88-
reader: StablePeriodicMetricReaderBuilder(
88+
reader: PeriodicMetricReaderBuilder(
8989
exporter: otlpMetricExporter).setInterval(timeInterval: 60)
9090
.build()
9191
)
9292
.registerView(
9393
selector: InstrumentSelector.builder().setInstrument(name: ".*").build(),
94-
view: StableView.builder().build()
94+
view: View.builder().build()
9595
)
9696
.build()
9797

98-
OpenTelemetry.registerStableMeterProvider(meterProvider: meterProvider)
98+
OpenTelemetry.registerMeterProvider(meterProvider: meterProvider)
9999

100100
let labels1 = ["dim1": AttributeValue.string("value1")]
101101

Examples/Prometheus Sample/main.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,21 +28,21 @@ DispatchQueue.global(qos: .default).async {
2828
}
2929
}
3030

31-
let meterProvider = StableMeterProviderSdk.builder()
31+
let meterProvider = MeterProviderSdk.builder()
3232
.registerView(
3333
selector: InstrumentSelector
3434
.builder()
3535
.setInstrument(type: .histogram).build(),
36-
view: StableView.builder()
36+
view: View.builder()
3737
.withAggregation(
3838
aggregation: ExplicitBucketHistogramAggregation(bucketBoundaries: [5, 10, 25])
3939
).build()
4040
)
4141
.registerMetricReader(
42-
reader: StablePeriodicMetricReaderBuilder(exporter: promExporter).build(
42+
reader: PeriodicMetricReaderBuilder(exporter: promExporter).build(
4343
)).build()
4444

45-
OpenTelemetry.registerStableMeterProvider(meterProvider: meterProvider)
45+
OpenTelemetry.registerMeterProvider(meterProvider: meterProvider)
4646

4747
var meter = meterProvider.get(name: "MyMeter")
4848

Examples/Stable Metric Sample/main.swift

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,27 +39,36 @@ func basicConfiguration() {
3939

4040
// register view will process all instruments using `.*` regex
4141

42-
OpenTelemetry.registerStableMeterProvider(meterProvider: StableMeterProviderSdk.builder()
43-
.registerView(selector: InstrumentSelector.builder().setInstrument(name: ".*").build(), view: StableView.builder().build())
44-
.registerMetricReader(reader: StablePeriodicMetricReaderBuilder(exporter: StableOtlpMetricExporter(channel: exporterChannel)).build())
42+
OpenTelemetry.registerMeterProvider(
43+
meterProvider: MeterProviderSdk.builder()
44+
.registerView(
45+
selector: InstrumentSelector.builder().setInstrument(name: ".*").build(),
46+
view: View.builder().build()
47+
)
48+
.registerMetricReader(
49+
reader: PeriodicMetricReaderBuilder(
50+
exporter: OtlpMetricExporter(channel: exporterChannel)
51+
)
52+
.build()
53+
)
4554
.build()
4655
)
4756
}
4857

4958
func complexViewConfiguration() {
5059
let group = MultiThreadedEventLoopGroup(numberOfThreads: 1)
51-
let exporterChannel = ClientConnection.insecure(group: group)
60+
_ = ClientConnection.insecure(group: group)
5261
.connect(host: "localhost", port: 8200)
5362

5463
// The example registers a View that re-configures the Gauge instrument into a sum instrument named "GaugeSum"
5564

56-
OpenTelemetry.registerStableMeterProvider(
57-
meterProvider: StableMeterProviderSdk.builder()
65+
OpenTelemetry.registerMeterProvider(
66+
meterProvider: MeterProviderSdk.builder()
5867
.registerView(
5968
selector: InstrumentSelector.builder()
6069
.setInstrument(name: "Gauge")
6170
.build(),
62-
view: StableView.builder()
71+
view: View.builder()
6372
.withName(name: "GaugeSum")
6473
.withAggregation(
6574
aggregation: Aggregations
@@ -69,7 +78,7 @@ func complexViewConfiguration() {
6978
)
7079
.setExemplarFilter(exemplarFilter: AlwaysOnFilter())
7180
.registerMetricReader(
72-
reader: StablePeriodicMetricReaderBuilder(
81+
reader: PeriodicMetricReaderBuilder(
7382
exporter: StdoutMetricExporter(isDebug: true)
7483
)
7584
.build()
@@ -81,15 +90,15 @@ func complexViewConfiguration() {
8190
basicConfiguration()
8291

8392
// creating a new meter & instrument
84-
let meter = OpenTelemetry.instance.stableMeterProvider?.meterBuilder(name: "MyMeter").build()
85-
var gaugeBuilder = meter!.gaugeBuilder(name: "Gauge")
93+
let meter = OpenTelemetry.instance.meterProvider.meterBuilder(name: "MyMeter").build()
94+
var gaugeBuilder = meter.gaugeBuilder(name: "Gauge")
8695

8796
// observable gauge
8897
var observableGauge = gaugeBuilder.buildWithCallback { ObservableDoubleMeasurement in
8998
ObservableDoubleMeasurement.record(value: 1.0, attributes: ["test": AttributeValue.bool(true)])
9099
}
91100

92-
var gauge = (meter?.gaugeBuilder(name: "Gauge") as! DoubleGaugeBuilderSdk).buildWithCallback { _ in
101+
var gauge = meter.gaugeBuilder(name: "Gauge").buildWithCallback { _ in
93102
// noop
94103
}
95104

Sources/Exporters/OpenTelemetryProtocolCommon/common/ExporterMetrics.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public class ExporterMetrics {
1818
public static let ATTRIBUTE_KEY_TYPE: String = "type"
1919
public static let ATTRIBUTE_KEY_SUCCESS: String = "success"
2020

21-
private let meterProvider: any StableMeterProvider
21+
private let meterProvider: any MeterProvider
2222
private let exporterName: String
2323
private let transportName: String
2424
private var seenAttrs: [String: AttributeValue] = [:]
@@ -34,7 +34,7 @@ public class ExporterMetrics {
3434
/// - exporterName: Could be `span`, `log` etc
3535
/// - transportName: Kind of exporter defined by type `TransporterType`
3636
public init(type: String,
37-
meterProvider: any StableMeterProvider,
37+
meterProvider: any MeterProvider,
3838
exporterName: String,
3939
transportName: TransporterType) {
4040
self.meterProvider = meterProvider
@@ -72,14 +72,14 @@ public class ExporterMetrics {
7272
* Create an instance for recording exporter metrics under the meter
7373
* "io.opentelemetry.exporters." + exporterName + "-transporterType".
7474
**/
75-
private var meter: any StableMeter {
75+
private var meter: any Meter {
7676
meterProvider.get(name: "io.opentelemetry.exporters.\(exporterName)-\(transportName)")
7777
}
7878

7979
// MARK: - Static function
8080

8181
public static func makeExporterMetric(type: String,
82-
meterProvider: any StableMeterProvider,
82+
meterProvider: any MeterProvider,
8383
exporterName: String,
8484
transportName: TransporterType) -> ExporterMetrics {
8585
ExporterMetrics(type: type,

Sources/Exporters/OpenTelemetryProtocolCommon/metric/MetricsAdapter.swift

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import OpenTelemetryApi
77
import OpenTelemetrySdk
88

99
public enum MetricsAdapter {
10-
public static func toProtoResourceMetrics(stableMetricData: [StableMetricData]) -> [Opentelemetry_Proto_Metrics_V1_ResourceMetrics] {
11-
let resourceAndScopeMap = groupByResourceAndScope(stableMetricData: stableMetricData)
10+
public static func toProtoResourceMetrics(metricData: [MetricData]) -> [Opentelemetry_Proto_Metrics_V1_ResourceMetrics] {
11+
let resourceAndScopeMap = groupByResourceAndScope(metricData: metricData)
1212

1313
var resourceMetrics = [Opentelemetry_Proto_Metrics_V1_ResourceMetrics]()
1414
resourceAndScopeMap.forEach { resMap in
@@ -30,26 +30,26 @@ public enum MetricsAdapter {
3030
return resourceMetrics
3131
}
3232

33-
private static func groupByResourceAndScope(stableMetricData: [StableMetricData]) -> [Resource: [InstrumentationScopeInfo: [Opentelemetry_Proto_Metrics_V1_Metric]]] {
33+
private static func groupByResourceAndScope(metricData: [MetricData]) -> [Resource: [InstrumentationScopeInfo: [Opentelemetry_Proto_Metrics_V1_Metric]]] {
3434
var results = [Resource: [InstrumentationScopeInfo: [Opentelemetry_Proto_Metrics_V1_Metric]]]()
3535

36-
stableMetricData.forEach {
37-
if let metric = toProtoMetric(stableMetric: $0) {
36+
metricData.forEach {
37+
if let metric = toProtoMetric(metricData: $0) {
3838
results[$0.resource, default: [InstrumentationScopeInfo: [Opentelemetry_Proto_Metrics_V1_Metric]]()][$0.instrumentationScopeInfo, default: [Opentelemetry_Proto_Metrics_V1_Metric]()].append(metric)
3939
}
4040
}
4141
return results
4242
}
4343

44-
public static func toProtoMetric(stableMetric: StableMetricData) -> Opentelemetry_Proto_Metrics_V1_Metric? {
44+
public static func toProtoMetric(metricData: MetricData) -> Opentelemetry_Proto_Metrics_V1_Metric? {
4545
var protoMetric = Opentelemetry_Proto_Metrics_V1_Metric()
46-
protoMetric.name = stableMetric.name
47-
protoMetric.unit = stableMetric.unit
48-
protoMetric.description_p = stableMetric.description
49-
if stableMetric.data.points.isEmpty { return nil }
46+
protoMetric.name = metricData.name
47+
protoMetric.unit = metricData.unit
48+
protoMetric.description_p = metricData.description
49+
if metricData.data.points.isEmpty { return nil }
5050

51-
stableMetric.data.points.forEach {
52-
switch stableMetric.type {
51+
metricData.data.points.forEach {
52+
switch metricData.type {
5353
case .LongGauge:
5454
guard let gaugeData = $0 as? LongPointData else {
5555
break
@@ -65,9 +65,9 @@ public enum MetricsAdapter {
6565
var protoDataPoint = Opentelemetry_Proto_Metrics_V1_NumberDataPoint()
6666
injectPointData(protoNumberPoint: &protoDataPoint, pointData: gaugeData)
6767
protoDataPoint.value = .asInt(Int64(gaugeData.value))
68-
protoMetric.sum.aggregationTemporality = stableMetric.data.aggregationTemporality.convertToProtoEnum()
68+
protoMetric.sum.aggregationTemporality = metricData.data.aggregationTemporality.convertToProtoEnum()
6969
protoMetric.sum.dataPoints.append(protoDataPoint)
70-
protoMetric.sum.isMonotonic = stableMetric.isMonotonic
70+
protoMetric.sum.isMonotonic = metricData.isMonotonic
7171
case .DoubleGauge:
7272
guard let gaugeData = $0 as? DoublePointData else {
7373
break
@@ -83,9 +83,9 @@ public enum MetricsAdapter {
8383
var protoDataPoint = Opentelemetry_Proto_Metrics_V1_NumberDataPoint()
8484
injectPointData(protoNumberPoint: &protoDataPoint, pointData: gaugeData)
8585
protoDataPoint.value = .asDouble(gaugeData.value)
86-
protoMetric.sum.aggregationTemporality = stableMetric.data.aggregationTemporality.convertToProtoEnum()
86+
protoMetric.sum.aggregationTemporality = metricData.data.aggregationTemporality.convertToProtoEnum()
8787
protoMetric.sum.dataPoints.append(protoDataPoint)
88-
protoMetric.sum.isMonotonic = stableMetric.isMonotonic
88+
protoMetric.sum.isMonotonic = metricData.isMonotonic
8989
case .Summary:
9090
guard let summaryData = $0 as? SummaryPointData else {
9191
break
@@ -113,7 +113,7 @@ public enum MetricsAdapter {
113113
protoDataPoint.min = Double(histogramData.min)
114114
protoDataPoint.explicitBounds = histogramData.boundaries.map { Double($0) }
115115
protoDataPoint.bucketCounts = histogramData.counts.map { UInt64($0) }
116-
protoMetric.histogram.aggregationTemporality = stableMetric.data.aggregationTemporality.convertToProtoEnum()
116+
protoMetric.histogram.aggregationTemporality = metricData.data.aggregationTemporality.convertToProtoEnum()
117117
protoMetric.histogram.dataPoints.append(protoDataPoint)
118118
case .ExponentialHistogram:
119119
guard let exponentialHistogramData = $0 as? ExponentialHistogramPointData else {
@@ -139,7 +139,7 @@ public enum MetricsAdapter {
139139
protoDataPoint.positive = positiveBuckets
140140
protoDataPoint.negative = negativeBuckets
141141

142-
protoMetric.exponentialHistogram.aggregationTemporality = stableMetric.data.aggregationTemporality.convertToProtoEnum()
142+
protoMetric.exponentialHistogram.aggregationTemporality = metricData.data.aggregationTemporality.convertToProtoEnum()
143143
protoMetric.exponentialHistogram.dataPoints.append(protoDataPoint)
144144
}
145145
}

Sources/Exporters/OpenTelemetryProtocolGrpc/metric/StableOtlpMetricExporter.swift renamed to Sources/Exporters/OpenTelemetryProtocolGrpc/metric/OtlpMetricExporter.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import NIOHPACK
1111
import OpenTelemetryProtocolExporterCommon
1212
import OpenTelemetrySdk
1313

14-
public class StableOtlpMetricExporter: StableMetricExporter {
14+
public class OtlpMetricExporter: MetricExporter {
1515
public func getAggregationTemporality(for instrument: OpenTelemetrySdk.InstrumentType) -> OpenTelemetrySdk.AggregationTemporality {
1616
return aggregationTemporalitySelector.getAggregationTemporality(for: instrument)
1717
}
@@ -40,9 +40,9 @@ public class StableOtlpMetricExporter: StableMetricExporter {
4040
}
4141
}
4242

43-
public func export(metrics: [OpenTelemetrySdk.StableMetricData]) -> OpenTelemetrySdk.ExportResult {
43+
public func export(metrics: [OpenTelemetrySdk.MetricData]) -> OpenTelemetrySdk.ExportResult {
4444
let exportRequest = Opentelemetry_Proto_Collector_Metrics_V1_ExportMetricsServiceRequest.with {
45-
$0.resourceMetrics = MetricsAdapter.toProtoResourceMetrics(stableMetricData: metrics)
45+
$0.resourceMetrics = MetricsAdapter.toProtoResourceMetrics(metricData: metrics)
4646
}
4747
if config.timeout > 0 {
4848
metricClient.defaultCallOptions.timeLimit = TimeLimit.timeout(TimeAmount.nanoseconds(Int64(config.timeout.toNanoseconds)))

Sources/Exporters/OpenTelemetryProtocolHttp/OtlpHttpExporterBase.swift

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,24 @@
77
import DataCompression
88
#endif
99
import Foundation
10-
import SwiftProtobuf
1110
import OpenTelemetryProtocolExporterCommon
11+
import SwiftProtobuf
1212
#if canImport(FoundationNetworking)
1313
import FoundationNetworking
1414
#endif
1515

16+
@available(*, deprecated, renamed: "OtlpHttpExporterBase")
17+
public typealias StableOtlpHTTPExporterBase = OtlpHttpExporterBase
18+
1619
public class OtlpHttpExporterBase {
1720
let endpoint: URL
1821
let httpClient: HTTPClient
1922
let envVarHeaders: [(String, String)]?
2023
let config: OtlpConfiguration
2124

22-
public init(endpoint: URL,
23-
config: OtlpConfiguration = OtlpConfiguration(),
24-
useSession: URLSession? = nil,
25-
envVarHeaders: [(String, String)]? = EnvVarHeaders.attributes) {
25+
// MARK: - Init
26+
27+
public init(endpoint: URL, config: OtlpConfiguration = OtlpConfiguration(), useSession: URLSession? = nil, envVarHeaders: [(String, String)]? = EnvVarHeaders.attributes) {
2628
self.envVarHeaders = envVarHeaders
2729
self.endpoint = endpoint
2830
self.config = config
@@ -36,6 +38,17 @@ public class OtlpHttpExporterBase {
3638
public func createRequest(body: Message, endpoint: URL) -> URLRequest {
3739
var request = URLRequest(url: endpoint)
3840

41+
if let headers = envVarHeaders {
42+
headers.forEach { key, value in
43+
request.addValue(value, forHTTPHeaderField: key)
44+
}
45+
46+
} else if let headers = config.headers {
47+
headers.forEach { key, value in
48+
request.addValue(value, forHTTPHeaderField: key)
49+
}
50+
}
51+
3952
do {
4053
let rawData = try body.serializedData()
4154
request.httpMethod = "POST"
@@ -62,13 +75,13 @@ public class OtlpHttpExporterBase {
6275
break
6376
}
6477
#endif
78+
6579
// Apply final data. Could be compressed or raw
6680
// but it doesn't matter here
6781
request.httpBody = compressedData
6882
} catch {
6983
print("Error serializing body: \(error)")
7084
}
71-
7285
return request
7386
}
7487

0 commit comments

Comments
 (0)