Skip to content

Commit 319bed7

Browse files
authored
Merge branch 'main' into appender-tracing-fix-trace-context
2 parents 750df51 + acf16ed commit 319bed7

File tree

37 files changed

+909
-340
lines changed

37 files changed

+909
-340
lines changed

.cspell.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,9 @@
4949
"nocapture",
5050
"Ochtman",
5151
"opentelemetry",
52+
"OTELCOL",
5253
"OTLP",
54+
"periodicreader",
5355
"protoc",
5456
"quantile",
5557
"Redelmeier",
@@ -59,6 +61,7 @@
5961
"shoppingcart",
6062
"struct",
6163
"Tescher",
64+
"testresults",
6265
"tracerprovider",
6366
"updown",
6467
"Zhongyang",

.github/workflows/integration_tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,5 @@ jobs:
2424
with:
2525
components: rustfmt
2626
- uses: arduino/setup-protoc@v3
27-
- name: Run integration tests using docker compose
27+
- name: Run integration tests
2828
run: ./scripts/integration_tests.sh

opentelemetry-appender-log/examples/logs-basic.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
use log::{error, info, warn, Level};
88
use opentelemetry_appender_log::OpenTelemetryLogBridge;
99
use opentelemetry_sdk::logs::{BatchLogProcessor, LoggerProvider};
10-
use opentelemetry_sdk::runtime;
1110
use opentelemetry_stdout::LogExporter;
1211

1312
#[tokio::main]
@@ -16,7 +15,7 @@ async fn main() {
1615
let exporter = LogExporter::default();
1716
//Create a LoggerProvider and register the exporter
1817
let logger_provider = LoggerProvider::builder()
19-
.with_log_processor(BatchLogProcessor::builder(exporter, runtime::Tokio).build())
18+
.with_log_processor(BatchLogProcessor::builder(exporter).build())
2019
.build();
2120

2221
// Setup Log Appender for the log crate.

opentelemetry-appender-tracing/src/layer.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ mod tests {
316316
async fn batch_processor_no_deadlock() {
317317
let exporter: ReentrantLogExporter = ReentrantLogExporter;
318318
let logger_provider = LoggerProvider::builder()
319-
.with_batch_exporter(exporter.clone(), opentelemetry_sdk::runtime::Tokio)
319+
.with_batch_exporter(exporter.clone())
320320
.build();
321321

322322
let layer = layer::OpenTelemetryTracingBridge::new(&logger_provider);

opentelemetry-http/CHANGELOG.md

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

55
- Bump msrv to 1.75.0.
6-
6+
- Add "internal-logs" feature flag (enabled by default), and emit internal logs.
77

88
## 0.27.0
99

opentelemetry-http/Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@ edition = "2021"
1010
rust-version = "1.75.0"
1111

1212
[features]
13+
default = ["internal-logs"]
1314
hyper = ["dep:http-body-util", "dep:hyper", "dep:hyper-util", "dep:tokio"]
1415
reqwest-rustls = ["reqwest", "reqwest/rustls-tls-native-roots"]
1516
reqwest-rustls-webpki-roots = ["reqwest", "reqwest/rustls-tls-webpki-roots"]
17+
internal-logs = ["tracing", "opentelemetry/internal-logs"]
1618

1719
[dependencies]
1820
async-trait = { workspace = true }
@@ -24,3 +26,4 @@ hyper-util = { workspace = true, features = ["client-legacy", "http1", "http2"],
2426
opentelemetry = { version = "0.27", path = "../opentelemetry", features = ["trace"] }
2527
reqwest = { workspace = true, features = ["blocking"], optional = true }
2628
tokio = { workspace = true, features = ["time"], optional = true }
29+
tracing = {workspace = true, optional = true}

opentelemetry-http/src/lib.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,14 @@ pub trait HttpClient: Debug + Send + Sync {
6666

6767
#[cfg(feature = "reqwest")]
6868
mod reqwest {
69+
use opentelemetry::otel_debug;
70+
6971
use super::{async_trait, Bytes, HttpClient, HttpError, Request, Response};
7072

7173
#[async_trait]
7274
impl HttpClient for reqwest::Client {
7375
async fn send(&self, request: Request<Vec<u8>>) -> Result<Response<Bytes>, HttpError> {
76+
otel_debug!(name: "ReqwestClient.Send");
7477
let request = request.try_into()?;
7578
let mut response = self.execute(request).await?.error_for_status()?;
7679
let headers = std::mem::take(response.headers_mut());
@@ -87,6 +90,7 @@ mod reqwest {
8790
#[async_trait]
8891
impl HttpClient for reqwest::blocking::Client {
8992
async fn send(&self, request: Request<Vec<u8>>) -> Result<Response<Bytes>, HttpError> {
93+
otel_debug!(name: "ReqwestBlockingClient.Send");
9094
let request = request.try_into()?;
9195
let mut response = self.execute(request)?.error_for_status()?;
9296
let headers = std::mem::take(response.headers_mut());
@@ -102,16 +106,16 @@ mod reqwest {
102106

103107
#[cfg(feature = "hyper")]
104108
pub mod hyper {
105-
use crate::ResponseExt;
106-
107109
use super::{async_trait, Bytes, HttpClient, HttpError, Request, Response};
110+
use crate::ResponseExt;
108111
use http::HeaderValue;
109112
use http_body_util::{BodyExt, Full};
110113
use hyper::body::{Body as HttpBody, Frame};
111114
use hyper_util::client::legacy::{
112115
connect::{Connect, HttpConnector},
113116
Client,
114117
};
118+
use opentelemetry::otel_debug;
115119
use std::fmt::Debug;
116120
use std::pin::Pin;
117121
use std::task::{self, Poll};
@@ -156,6 +160,7 @@ pub mod hyper {
156160
#[async_trait]
157161
impl HttpClient for HyperClient {
158162
async fn send(&self, request: Request<Vec<u8>>) -> Result<Response<Bytes>, HttpError> {
163+
otel_debug!(name: "HyperClient.Send");
159164
let (parts, body) = request.into_parts();
160165
let mut request = Request::from_parts(parts, Body(Full::from(body)));
161166
if let Some(ref authorization) = self.authorization {

opentelemetry-otlp/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ trace = ["opentelemetry/trace", "opentelemetry_sdk/trace", "opentelemetry-proto/
5858
metrics = ["opentelemetry/metrics", "opentelemetry_sdk/metrics", "opentelemetry-proto/metrics"]
5959
logs = ["opentelemetry/logs", "opentelemetry_sdk/logs", "opentelemetry-proto/logs"]
6060
populate-logs-event-name = ["opentelemetry-proto/populate-logs-event-name"]
61-
internal-logs = ["tracing"]
61+
internal-logs = ["tracing", "opentelemetry/internal-logs"]
6262

6363
# add ons
6464
serialize = ["serde", "serde_json"]

opentelemetry-otlp/examples/basic-otlp-http/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ experimental_metrics_periodicreader_with_async_runtime = ["opentelemetry_sdk/exp
1616
once_cell = { workspace = true }
1717
opentelemetry = { path = "../../../opentelemetry" }
1818
opentelemetry_sdk = { path = "../../../opentelemetry-sdk", features = ["rt-tokio", "experimental_metrics_periodicreader_with_async_runtime"]}
19-
opentelemetry-otlp = { path = "../..", features = ["http-proto", "http-json", "logs"] , default-features = false}
19+
opentelemetry-otlp = { path = "../..", features = ["http-proto", "http-json", "logs", "internal-logs"] , default-features = false}
2020
opentelemetry-appender-tracing = { path = "../../../opentelemetry-appender-tracing", default-features = false}
2121

2222
tokio = { workspace = true, features = ["full"] }

opentelemetry-otlp/examples/basic-otlp-http/README.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ recommended approach when using OTLP exporters. While it can be modified to use
1616
a `SimpleExporter`, this requires enabling feature flag `reqwest-blocking-client` and
1717
making the `main()` a normal main and *not* `tokio::main`
1818

19-
// TODO: Metrics does not work with non tokio main when using `reqwest-blocking-client` today, fix that when switching
19+
// TODO: Metrics does not work with non tokio main when using `reqwest-blocking-client` today, fix that when switching
2020
// default to use own thread.
2121
// TODO: Document `hyper` feature flag when using SimpleProcessor.
2222

@@ -66,14 +66,12 @@ Run the app which exports logs, metrics and traces via OTLP to the collector
6666
cargo run
6767
```
6868

69-
7069
By default the app will use a `reqwest` client to send. A hyper 0.14 client can be used with the `hyper` feature enabled
7170

7271
```shell
7372
cargo run --no-default-features --features=hyper
7473
```
7574

76-
7775
## View results
7876

7977
You should be able to see something similar below with different time and ID in the same console that docker runs.
@@ -135,7 +133,7 @@ SpanEvent #0
135133
-> Timestamp: 2024-05-14 02:15:56.824201397 +0000 UTC
136134
-> DroppedAttributesCount: 0
137135
-> Attributes::
138-
-> bogons: Int(100)
136+
-> some.key: Int(100)
139137
{"kind": "exporter", "data_type": "traces", "name": "logging"}
140138
...
141139
```

0 commit comments

Comments
 (0)