open-telemetry / opentelemetry-swift

OpenTelemetry API for Swift
https://opentelemetry.io/docs/instrumentation/swift/
Apache License 2.0
209 stars 129 forks source link

StableOtlpHTTPMetricExporter not working #500

Closed Archish27 closed 7 months ago

Archish27 commented 8 months ago

The following snippet is used for metric -

let otlpMetricExporter = StableOtlpHTTPMetricExporter(
    endpoint: URL(string: "http://example.com/v1/metrics")!,
    config: OtlpConfiguration(timeout: TimeInterval(10000),
                              headers: [("Access-Control-Allow-Headers", "*")]))

OpenTelemetry.registerStableMeterProvider(meterProvider: StableMeterProviderSdk
    .builder()
    .registerMetricReader(reader:
                            StablePeriodicMetricReaderBuilder(exporter: otlpMetricExporter)
                                .setInterval(timeInterval: 5)
                                .build()).build())

Unable to see /v1/metrics endpoint getting hit.

bryce-b commented 8 months ago

Hi @Archish27 I believe you need to add a "view" for metrics to be processed. Take a look at the stable metrics sample on how to add a view.

Archish27 commented 8 months ago

Hey @bryce-b I added registerView the following is the code snippet

OpenTelemetry.registerStableMeterProvider(meterProvider: StableMeterProviderBuilder()
            .registerView(selector: InstrumentSelector.builder().setInstrument(name: ".*").build(), view: StableView.builder().build())
            .registerMetricReader(reader: StablePeriodicMetricReaderBuilder(exporter: StableOtlpHTTPMetricExporter(
                endpoint: URL(string: "http://example.com/v1/metrics")!,
                config: OtlpConfiguration())) as! StableMetricReader)
                .build()
        )

Getting exception Could not cast value of type 'OpenTelemetrySdk.StablePeriodicMetricReaderBuilder' (0x10147f378) to 'OpenTelemetrySdk.StableMetricReader' (0x1f1d08310). Can you please help am I missing something here?

bryce-b commented 8 months ago

you need to call build() on the StablePeriodicMetricReaderBuilder to receive a StablePeriodicMetricReader

nachoBonafonte commented 7 months ago

any updates here, is it working after the build() call?