Skip to content

Commit 45aa3a2

Browse files
authored
Expose http option for OTLP (#741)
Fixes #647
1 parent 4892714 commit 45aa3a2

File tree

3 files changed

+16
-6
lines changed

3 files changed

+16
-6
lines changed

temporalio/bridge/runtime.py

+1
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ class OpenTelemetryConfig:
6969
metric_periodicity_millis: Optional[int]
7070
metric_temporality_delta: bool
7171
durations_as_seconds: bool
72+
http: bool
7273

7374

7475
@dataclass(frozen=True)

temporalio/bridge/src/runtime.rs

+5-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use temporal_sdk_core::{CoreRuntime, TokioRuntimeBuilder};
1717
use temporal_sdk_core_api::telemetry::metrics::{CoreMeter, MetricCallBufferer};
1818
use temporal_sdk_core_api::telemetry::{
1919
CoreLog, Logger, MetricTemporality, OtelCollectorOptionsBuilder,
20-
PrometheusExporterOptionsBuilder, TelemetryOptionsBuilder,
20+
PrometheusExporterOptionsBuilder, TelemetryOptionsBuilder, OtlpProtocol
2121
};
2222
use tokio::task::JoinHandle;
2323
use tokio_stream::StreamExt;
@@ -74,6 +74,7 @@ pub struct OpenTelemetryConfig {
7474
metric_periodicity_millis: Option<u64>,
7575
metric_temporality_delta: bool,
7676
durations_as_seconds: bool,
77+
http: bool,
7778
}
7879

7980
#[derive(FromPyObject)]
@@ -322,6 +323,9 @@ impl TryFrom<MetricsConfig> for Arc<dyn CoreMeter> {
322323
if let Some(global_tags) = conf.global_tags {
323324
build.global_tags(global_tags);
324325
}
326+
if otel_conf.http {
327+
build.protocol(OtlpProtocol::Http);
328+
}
325329
let otel_options = build
326330
.build()
327331
.map_err(|err| PyValueError::new_err(format!("Invalid OTel config: {}", err)))?;

temporalio/runtime.py

+10-5
Original file line numberDiff line numberDiff line change
@@ -259,17 +259,22 @@ class OpenTelemetryConfig:
259259
OpenTelemetryMetricTemporality.CUMULATIVE
260260
)
261261
durations_as_seconds: bool = False
262+
http: bool = False
262263

263264
def _to_bridge_config(self) -> temporalio.bridge.runtime.OpenTelemetryConfig:
264265
return temporalio.bridge.runtime.OpenTelemetryConfig(
265266
url=self.url,
266267
headers=self.headers or {},
267-
metric_periodicity_millis=None
268-
if not self.metric_periodicity
269-
else round(self.metric_periodicity.total_seconds() * 1000),
270-
metric_temporality_delta=self.metric_temporality
271-
== OpenTelemetryMetricTemporality.DELTA,
268+
metric_periodicity_millis=(
269+
None
270+
if not self.metric_periodicity
271+
else round(self.metric_periodicity.total_seconds() * 1000)
272+
),
273+
metric_temporality_delta=(
274+
self.metric_temporality == OpenTelemetryMetricTemporality.DELTA
275+
),
272276
durations_as_seconds=self.durations_as_seconds,
277+
http=self.http,
273278
)
274279

275280

0 commit comments

Comments
 (0)