Skip to content

Commit 01ef3f4

Browse files
committed
Merge remote-tracking branch 'origin' into switch_batch_log_to_background_thread
2 parents 25579f0 + 167baf8 commit 01ef3f4

Some content is hidden

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

51 files changed

+4715
-1689
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ jobs:
104104
strategy:
105105
matrix:
106106
os: [windows-latest, ubuntu-latest]
107-
rust: [1.65.0, 1.70.0]
107+
rust: [1.65.0, 1.71.1]
108108
runs-on: ${{ matrix.os }}
109109
steps:
110110
- uses: actions/checkout@v4

examples/metrics-basic/src/main.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use opentelemetry::KeyValue;
33
use opentelemetry_sdk::metrics::{PeriodicReader, SdkMeterProvider};
44
use opentelemetry_sdk::{runtime, Resource};
55
use std::error::Error;
6+
use std::vec;
67

78
fn init_meter_provider() -> opentelemetry_sdk::metrics::SdkMeterProvider {
89
let exporter = opentelemetry_stdout::MetricsExporterBuilder::default()
@@ -90,6 +91,9 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
9091
let histogram = meter
9192
.f64_histogram("my_histogram")
9293
.with_description("My histogram example description")
94+
// Setting boundaries is optional. By default, the boundaries are set to
95+
// [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 10000.0]
96+
.with_boundaries(vec![0.0, 5.0, 10.0, 15.0, 20.0, 25.0])
9397
.init();
9498

9599
// Record measurements using the histogram instrument.

examples/self-diagnostics/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ publish = false
77

88
[dependencies]
99
opentelemetry = { path = "../../opentelemetry" }
10-
opentelemetry_sdk = { path = "../../opentelemetry-sdk", features = ["rt-tokio"]}
10+
opentelemetry_sdk = { path = "../../opentelemetry-sdk", features = ["rt-tokio", "experimental-internal-logs"]}
1111
opentelemetry-stdout = { path = "../../opentelemetry-stdout"}
1212
opentelemetry-appender-tracing = { path = "../../opentelemetry-appender-tracing"}
1313
tokio = { workspace = true, features = ["full"] }
1414
tracing = { workspace = true, features = ["std"]}
1515
tracing-core = { workspace = true }
1616
tracing-subscriber = { version = "0.3.18", features = ["env-filter","registry", "std"]}
17-
opentelemetry-otlp = { path = "../../opentelemetry-otlp", features = ["http-proto", "reqwest-client", "logs"] }
17+
opentelemetry-otlp = { path = "../../opentelemetry-otlp", features = ["http-proto", "reqwest-client", "logs", "experimental-internal-logs"] }
1818
once_cell ={ version = "1.19.0"}
1919
ctrlc = "3.4"

examples/self-diagnostics/src/main.rs

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@ use opentelemetry::global::{self, set_error_handler, Error as OtelError};
22
use opentelemetry::KeyValue;
33
use opentelemetry_appender_tracing::layer;
44
use opentelemetry_otlp::WithExportConfig;
5+
use tracing_subscriber::filter::{EnvFilter, LevelFilter};
6+
use tracing_subscriber::fmt;
57
use tracing_subscriber::prelude::*;
6-
use tracing_subscriber::EnvFilter;
78

89
use std::error::Error;
910
use tracing::error;
@@ -59,6 +60,7 @@ fn init_logger_provider() -> opentelemetry_sdk::logs::LoggerProvider {
5960
)
6061
.install_batch()
6162
.unwrap();
63+
let cloned_provider = provider.clone();
6264

6365
// Add a tracing filter to filter events from crates used by opentelemetry-otlp.
6466
// The filter levels are set as follows:
@@ -72,11 +74,34 @@ fn init_logger_provider() -> opentelemetry_sdk::logs::LoggerProvider {
7274
.add_directive("hyper=error".parse().unwrap())
7375
.add_directive("tonic=error".parse().unwrap())
7476
.add_directive("reqwest=error".parse().unwrap());
75-
let cloned_provider = provider.clone();
76-
let layer = layer::OpenTelemetryTracingBridge::new(&cloned_provider);
77+
78+
// Configuring the formatting layer specifically for OpenTelemetry internal logs.
79+
// These logs starts with "opentelemetry" prefix in target. This allows specific logs
80+
// from the OpenTelemetry-related components to be filtered and handled separately
81+
// from the application logs
82+
83+
let opentelemetry_filter = tracing_subscriber::filter::filter_fn(|metadata| {
84+
metadata.target().starts_with("opentelemetry")
85+
});
86+
87+
let fmt_opentelemetry_layer = fmt::layer()
88+
.with_filter(LevelFilter::DEBUG)
89+
.with_filter(opentelemetry_filter);
90+
91+
// Configures the appender tracing layer, filtering out OpenTelemetry internal logs
92+
// to prevent infinite logging loops.
93+
94+
let non_opentelemetry_filter = tracing_subscriber::filter::filter_fn(|metadata| {
95+
!metadata.target().starts_with("opentelemetry")
96+
});
97+
98+
let otel_layer = layer::OpenTelemetryTracingBridge::new(&cloned_provider)
99+
.with_filter(non_opentelemetry_filter.clone());
100+
77101
tracing_subscriber::registry()
78-
.with(filter)
79-
.with(layer)
102+
.with(fmt_opentelemetry_layer)
103+
.with(fmt::layer().with_filter(filter))
104+
.with(otel_layer)
80105
.init();
81106
provider
82107
}

opentelemetry-otlp/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Changelog
22

33
## vNext
4+
- Bump MSRV to 1.71.1 [2140](https://github.com/open-telemetry/opentelemetry-rust/pull/2140)
45

56
## v0.25.0
67

opentelemetry-otlp/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ categories = [
1313
keywords = ["opentelemetry", "otlp", "logging", "tracing", "metrics"]
1414
license = "Apache-2.0"
1515
edition = "2021"
16-
rust-version = "1.70"
16+
rust-version = "1.71.1"
1717
autotests = false
1818

1919
[[test]]
@@ -32,6 +32,7 @@ opentelemetry = { version = "0.25", default-features = false, path = "../opentel
3232
opentelemetry_sdk = { version = "0.25", default-features = false, path = "../opentelemetry-sdk" }
3333
opentelemetry-http = { version = "0.25", path = "../opentelemetry-http", optional = true }
3434
opentelemetry-proto = { version = "0.25", path = "../opentelemetry-proto", default-features = false }
35+
tracing = {workspace = true, optional = true}
3536

3637
prost = { workspace = true, optional = true }
3738
tonic = { workspace = true, optional = true }
@@ -57,6 +58,7 @@ trace = ["opentelemetry/trace", "opentelemetry_sdk/trace", "opentelemetry-proto/
5758
metrics = ["opentelemetry/metrics", "opentelemetry_sdk/metrics", "opentelemetry-proto/metrics"]
5859
logs = ["opentelemetry/logs", "opentelemetry_sdk/logs", "opentelemetry-proto/logs"]
5960
populate-logs-event-name = ["opentelemetry-proto/populate-logs-event-name"]
61+
experimental-internal-logs = ["tracing"]
6062

6163
# add ons
6264
serialize = ["serde", "serde_json"]

opentelemetry-otlp/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ can easily instrument your applications or systems, no matter their language,
3030
infrastructure, or runtime environment. Crucially, the storage and visualization
3131
of telemetry is intentionally left to other tools.
3232

33-
*Compiler support: [requires `rustc` 1.70+][msrv]*
33+
*Compiler support: [requires `rustc` 1.71.1+][msrv]*
3434

3535
[Prometheus]: https://prometheus.io
3636
[Jaeger]: https://www.jaegertracing.io
@@ -43,7 +43,7 @@ See [docs](https://docs.rs/opentelemetry-otlp).
4343
## Supported Rust Versions
4444

4545
OpenTelemetry is built against the latest stable release. The minimum supported
46-
version is 1.70. The current OpenTelemetry version is not guaranteed to build
46+
version is 1.71.1. The current OpenTelemetry version is not guaranteed to build
4747
on Rust versions earlier than the minimum supported version.
4848

4949
The current stable Rust compiler and the three most recent minor versions

opentelemetry-otlp/src/metric.rs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,29 @@ impl TemporalitySelector for MetricsExporter {
294294
#[async_trait]
295295
impl PushMetricsExporter for MetricsExporter {
296296
async fn export(&self, metrics: &mut ResourceMetrics) -> Result<()> {
297-
self.client.export(metrics).await
297+
#[cfg(feature = "experimental-internal-logs")]
298+
tracing::debug!(
299+
name = "export_metrics",
300+
target = "opentelemetry-otlp",
301+
metrics_count = metrics
302+
.scope_metrics
303+
.iter()
304+
.map(|scope| scope.metrics.len())
305+
.sum::<usize>(),
306+
status = "started"
307+
);
308+
let result = self.client.export(metrics).await;
309+
#[cfg(feature = "experimental-internal-logs")]
310+
tracing::debug!(
311+
name = "export_metrics",
312+
target = "opentelemetry-otlp",
313+
status = if result.is_ok() {
314+
"completed"
315+
} else {
316+
"failed"
317+
}
318+
);
319+
result
298320
}
299321

300322
async fn force_flush(&self) -> Result<()> {

opentelemetry-proto/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
## vNext
44

55
- Fix JSON serialization of `metrics::Exemplar` and `trace::span::Link` [#2069](https://github.com/open-telemetry/opentelemetry-rust/pull/2069)
6+
- Bump MSRV to 1.71.1 [2140](https://github.com/open-telemetry/opentelemetry-rust/pull/2140)
67

78
## v0.25.0
89
- Update `opentelemetry` dependency version to 0.25

opentelemetry-proto/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ categories = [
1313
keywords = ["opentelemetry", "otlp", "logging", "tracing", "metrics"]
1414
license = "Apache-2.0"
1515
edition = "2021"
16-
rust-version = "1.70"
16+
rust-version = "1.71.1"
1717
autotests = false
1818

1919
[lib]

0 commit comments

Comments
 (0)