45 lines
1.6 KiB
Rust
45 lines
1.6 KiB
Rust
use opentelemetry::KeyValue;
|
|
use opentelemetry::global;
|
|
use opentelemetry_otlp::{WithExportConfig, WithTonicConfig};
|
|
use opentelemetry_sdk::{Resource, logs, runtime};
|
|
use tonic::transport::{Channel, ClientTlsConfig};
|
|
|
|
pub fn init_telemetry() -> (
|
|
opentelemetry_sdk::trace::TracerProvider,
|
|
opentelemetry_sdk::logs::LoggerProvider,
|
|
) {
|
|
let endpoint = "https://signoz.racooncity.org".to_string();
|
|
let channel = Channel::from_shared(endpoint.clone())
|
|
.unwrap()
|
|
.tls_config(ClientTlsConfig::new().with_native_roots())
|
|
.unwrap()
|
|
.connect_lazy();
|
|
let exporter = opentelemetry_otlp::SpanExporter::builder()
|
|
.with_tonic()
|
|
.with_endpoint(endpoint.clone())
|
|
.with_channel(channel.clone())
|
|
.build()
|
|
.expect("Failed to Build Exporter");
|
|
let log_exporter = opentelemetry_otlp::LogExporter::builder()
|
|
.with_tonic()
|
|
.with_endpoint(endpoint.clone())
|
|
.with_channel(channel.clone())
|
|
.build()
|
|
.expect("Failed to build log exporter");
|
|
let logger_provider = logs::LoggerProvider::builder()
|
|
.with_resource(Resource::new(vec![KeyValue::new(
|
|
"service.name",
|
|
"RhythmWorks",
|
|
)]))
|
|
.with_batch_exporter(log_exporter, runtime::Tokio)
|
|
.build();
|
|
let tracer_provider = opentelemetry_sdk::trace::TracerProvider::builder()
|
|
.with_batch_exporter(exporter, runtime::Tokio)
|
|
.with_resource(Resource::new(vec![KeyValue::new(
|
|
"service.name",
|
|
"RhythmWorks",
|
|
)]))
|
|
.build();
|
|
(tracer_provider, logger_provider)
|
|
}
|