Skip to content

Commit

Permalink
Merge branch 'log-processor-optimize' of github.com:lalitb/openteleme…
Browse files Browse the repository at this point in the history
…try-rust into log-processor-optimize
  • Loading branch information
lalitb committed May 23, 2024
2 parents 8249652 + 57cbf2e commit c50db2e
Show file tree
Hide file tree
Showing 26 changed files with 411 additions and 143 deletions.
12 changes: 5 additions & 7 deletions examples/logs-basic/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use log::{error, Level};
use opentelemetry::KeyValue;
use opentelemetry_appender_log::OpenTelemetryLogBridge;
use opentelemetry_sdk::logs::{Config, LoggerProvider};
use opentelemetry_sdk::logs::LoggerProvider;
use opentelemetry_sdk::Resource;
use opentelemetry_semantic_conventions::resource::SERVICE_NAME;

Expand All @@ -13,12 +13,10 @@ fn main() {
// Ok(serde_json::to_writer_pretty(writer, &data).unwrap()))
.build();
let logger_provider = LoggerProvider::builder()
.with_config(
Config::default().with_resource(Resource::new(vec![KeyValue::new(
SERVICE_NAME,
"logs-basic-example",
)])),
)
.with_resource(Resource::new(vec![KeyValue::new(
SERVICE_NAME,
"logs-basic-example",
)]))
.with_simple_exporter(exporter)
.build();

Expand Down
12 changes: 5 additions & 7 deletions opentelemetry-appender-tracing/benches/logs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ use opentelemetry::logs::LogResult;
use opentelemetry::KeyValue;
use opentelemetry_appender_tracing::layer as tracing_layer;
use opentelemetry_sdk::export::logs::{LogData, LogExporter};
use opentelemetry_sdk::logs::{Config, LogProcessor, LoggerProvider};
use opentelemetry_sdk::logs::{LogProcessor, LoggerProvider};
use opentelemetry_sdk::Resource;
use tracing::error;
use tracing_subscriber::prelude::*;
Expand Down Expand Up @@ -125,12 +125,10 @@ fn benchmark_with_ot_layer(c: &mut Criterion, enabled: bool, bench_name: &str) {
let exporter = NoopExporter { enabled };
let processor = NoopProcessor::new(Box::new(exporter));
let provider = LoggerProvider::builder()
.with_config(
Config::default().with_resource(Resource::new(vec![KeyValue::new(
"service.name",
"benchmark",
)])),
)
.with_resource(Resource::new(vec![KeyValue::new(
"service.name",
"benchmark",
)]))
.with_log_processor(processor)
.build();
let ot_layer = tracing_layer::OpenTelemetryTracingBridge::new(&provider);
Expand Down
15 changes: 5 additions & 10 deletions opentelemetry-appender-tracing/examples/basic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,17 @@
use opentelemetry::KeyValue;
use opentelemetry_appender_tracing::layer;
use opentelemetry_sdk::{
logs::{Config, LoggerProvider},
Resource,
};
use opentelemetry_sdk::{logs::LoggerProvider, Resource};
use tracing::error;
use tracing_subscriber::prelude::*;

fn main() {
let exporter = opentelemetry_stdout::LogExporter::default();
let provider: LoggerProvider = LoggerProvider::builder()
.with_config(
Config::default().with_resource(Resource::new(vec![KeyValue::new(
"service.name",
"log-appender-tracing-example",
)])),
)
.with_resource(Resource::new(vec![KeyValue::new(
"service.name",
"log-appender-tracing-example",
)]))
.with_simple_exporter(exporter)
.build();
let layer = layer::OpenTelemetryTracingBridge::new(&provider);
Expand Down
5 changes: 5 additions & 0 deletions opentelemetry-otlp/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@
- `OtlpMetricPipeline.build()` no longer invoke the
`global::set_meter_provider`. User who setup the pipeline must do it
themselves using `global::set_meter_provider(meter_provider.clone());`.
- Add `with_resource` on `OtlpLogPipeline`, replacing the `with_config` method.
Instead of using
`.with_config(Config::default().with_resource(RESOURCE::default()))` users must
now use `.with_resource(RESOURCE::default())` to configure Resource when using
`OtlpLogPipeline`.

## v0.16.0

Expand Down
4 changes: 2 additions & 2 deletions opentelemetry-otlp/examples/basic-otlp-http/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ use opentelemetry_appender_tracing::layer::OpenTelemetryTracingBridge;
use opentelemetry_otlp::WithExportConfig;
use opentelemetry_sdk::trace as sdktrace;
use opentelemetry_sdk::{
logs::{self as sdklogs, Config},
logs::{self as sdklogs},
Resource,
};
use tracing::info;
Expand All @@ -28,7 +28,7 @@ static RESOURCE: Lazy<Resource> = Lazy::new(|| {
fn init_logs() -> Result<sdklogs::LoggerProvider, opentelemetry::logs::LogError> {
opentelemetry_otlp::new_pipeline()
.logging()
.with_log_config(Config::default().with_resource(RESOURCE.clone()))
.with_resource(RESOURCE.clone())
.with_exporter(
opentelemetry_otlp::new_exporter()
.http()
Expand Down
3 changes: 1 addition & 2 deletions opentelemetry-otlp/examples/basic-otlp/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ use opentelemetry::{
};
use opentelemetry_appender_tracing::layer::OpenTelemetryTracingBridge;
use opentelemetry_otlp::{ExportConfig, WithExportConfig};
use opentelemetry_sdk::logs::Config;
use opentelemetry_sdk::{runtime, trace as sdktrace, Resource};
use std::error::Error;
use tracing::info;
Expand Down Expand Up @@ -58,7 +57,7 @@ fn init_metrics() -> Result<opentelemetry_sdk::metrics::SdkMeterProvider, Metric
fn init_logs() -> Result<opentelemetry_sdk::logs::LoggerProvider, LogError> {
opentelemetry_otlp::new_pipeline()
.logging()
.with_log_config(Config::default().with_resource(RESOURCE.clone()))
.with_resource(RESOURCE.clone())
.with_exporter(
opentelemetry_otlp::new_exporter()
.tonic()
Expand Down
37 changes: 20 additions & 17 deletions opentelemetry-otlp/src/logs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ use std::fmt::Debug;

use opentelemetry::logs::LogError;

use opentelemetry_sdk::{export::logs::LogData, runtime::RuntimeChannel};
use opentelemetry_sdk::{export::logs::LogData, runtime::RuntimeChannel, Resource};

/// Compression algorithm to use, defaults to none.
pub const OTEL_EXPORTER_OTLP_LOGS_COMPRESSION: &str = "OTEL_EXPORTER_OTLP_LOGS_COMPRESSION";
Expand All @@ -35,7 +35,7 @@ impl OtlpPipeline {
/// Create a OTLP logging pipeline.
pub fn logging(self) -> OtlpLogPipeline<NoExporterConfig> {
OtlpLogPipeline {
log_config: None,
resource: None,
exporter_builder: NoExporterConfig(()),
batch_config: None,
}
Expand Down Expand Up @@ -114,15 +114,17 @@ impl opentelemetry_sdk::export::logs::LogExporter for LogExporter {
#[derive(Debug)]
pub struct OtlpLogPipeline<EB> {
exporter_builder: EB,
log_config: Option<opentelemetry_sdk::logs::Config>,
resource: Option<Resource>,
batch_config: Option<opentelemetry_sdk::logs::BatchConfig>,
}

impl<EB> OtlpLogPipeline<EB> {
/// Set the log provider configuration.
pub fn with_log_config(mut self, log_config: opentelemetry_sdk::logs::Config) -> Self {
self.log_config = Some(log_config);
self
/// Set the Resource associated with log provider.
pub fn with_resource(self, resource: Resource) -> Self {
OtlpLogPipeline {
resource: Some(resource),
..self
}
}

/// Set the batch log processor configuration, and it will override the env vars.
Expand All @@ -140,7 +142,7 @@ impl OtlpLogPipeline<NoExporterConfig> {
) -> OtlpLogPipeline<LogExporterBuilder> {
OtlpLogPipeline {
exporter_builder: pipeline.into(),
log_config: self.log_config,
resource: self.resource,
batch_config: self.batch_config,
}
}
Expand All @@ -155,7 +157,7 @@ impl OtlpLogPipeline<LogExporterBuilder> {
pub fn install_simple(self) -> Result<opentelemetry_sdk::logs::LoggerProvider, LogError> {
Ok(build_simple_with_exporter(
self.exporter_builder.build_log_exporter()?,
self.log_config,
self.resource,
))
}

Expand All @@ -171,7 +173,7 @@ impl OtlpLogPipeline<LogExporterBuilder> {
) -> Result<opentelemetry_sdk::logs::LoggerProvider, LogError> {
Ok(build_batch_with_exporter(
self.exporter_builder.build_log_exporter()?,
self.log_config,
self.resource,
runtime,
self.batch_config,
))
Expand All @@ -180,20 +182,21 @@ impl OtlpLogPipeline<LogExporterBuilder> {

fn build_simple_with_exporter(
exporter: LogExporter,
log_config: Option<opentelemetry_sdk::logs::Config>,
resource: Option<Resource>,
) -> opentelemetry_sdk::logs::LoggerProvider {
let mut provider_builder =
opentelemetry_sdk::logs::LoggerProvider::builder().with_simple_exporter(exporter);
if let Some(config) = log_config {
provider_builder = provider_builder.with_config(config);
if let Some(resource) = resource {
provider_builder = provider_builder.with_resource(resource);
}
// logger would be created in the tracing appender
// logger would be created in the appenders like
// opentelemetry-appender-tracing, opentelemetry-appender-log etc.
provider_builder.build()
}

fn build_batch_with_exporter<R: RuntimeChannel>(
exporter: LogExporter,
log_config: Option<opentelemetry_sdk::logs::Config>,
resource: Option<Resource>,
runtime: R,
batch_config: Option<opentelemetry_sdk::logs::BatchConfig>,
) -> opentelemetry_sdk::logs::LoggerProvider {
Expand All @@ -203,8 +206,8 @@ fn build_batch_with_exporter<R: RuntimeChannel>(
.build();
provider_builder = provider_builder.with_log_processor(batch_processor);

if let Some(config) = log_config {
provider_builder = provider_builder.with_config(config);
if let Some(resource) = resource {
provider_builder = provider_builder.with_resource(resource);
}
// logger would be created in the tracing appender
provider_builder.build()
Expand Down
3 changes: 2 additions & 1 deletion opentelemetry-otlp/tests/integration_test/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ opentelemetry_sdk = { path = "../../../opentelemetry-sdk", features = ["rt-tokio
opentelemetry-otlp = { path = "../../../opentelemetry-otlp", features = ["tonic", "metrics", "logs"] }
opentelemetry-semantic-conventions = { path = "../../../opentelemetry-semantic-conventions" }
opentelemetry-proto = { path = "../../../opentelemetry-proto", features = ["gen-tonic-messages", "trace", "with-serde"] }
opentelemetry-appender-log = { path = "../../../opentelemetry-appender-log", default-features = false}
log = { workspace = true }
tokio = { version = "1.0", features = ["full"] }
serde_json = "1"
testcontainers = "0.15.0"
# env_logger = "0.11.3" // uncomment if needed for local debugging.
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"resourceLogs": [
{
"resource": {
"attributes": [
{
"key": "service.name",
"value": {
"stringValue": "logs-integration-test"
}
}
]
},
"scopeLogs": [
{
"scope": {
"name": "opentelemetry-log-appender",
"version": "0.3.0"
},
"logRecords": [
{
"observedTimeUnixNano": "1715753202587469939",
"severityNumber": 9,
"severityText": "INFO",
"body": {
"stringValue": "hello from apple. My price is 2.99."
},
"traceId": "",
"spanId": ""
}
]
}
]
}
]
}
36 changes: 36 additions & 0 deletions opentelemetry-otlp/tests/integration_test/expected/logs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"resourceLogs": [
{
"resource": {
"attributes": [
{
"key": "service.name",
"value": {
"stringValue": "logs-integration-test"
}
}
]
},
"scopeLogs": [
{
"scope": {
"name": "opentelemetry-log-appender",
"version": "0.3.0"
},
"logRecords": [
{
"observedTimeUnixNano": "1715753202587469939",
"severityNumber": 9,
"severityText": "INFO",
"body": {
"stringValue": "hello from banana. My price is 2.99."
},
"traceId": "",
"spanId": ""
}
]
}
]
}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,13 @@ exporters:
logging:
loglevel: debug
file:
path: /testresults/traces.json
path: /testresults/result.json

service:
pipelines:
traces:
receivers: [otlp]
exporters: [file]
logs:
receivers: [otlp]
exporters: [file]
3 changes: 2 additions & 1 deletion opentelemetry-otlp/tests/integration_test/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
pub mod asserter;
pub mod images;
pub mod logs_asserter;
pub mod trace_asserter;
Loading

0 comments on commit c50db2e

Please sign in to comment.