summaryrefslogtreecommitdiff
path: root/exes/all/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'exes/all/src/lib.rs')
-rw-r--r--exes/all/src/lib.rs41
1 files changed, 37 insertions, 4 deletions
diff --git a/exes/all/src/lib.rs b/exes/all/src/lib.rs
index de83243..1c99109 100644
--- a/exes/all/src/lib.rs
+++ b/exes/all/src/lib.rs
@@ -5,14 +5,21 @@ use anyhow::Result;
use config::{Config, Environment, File};
use gateway::GatewayServer;
use leash::Component;
+use opentelemetry::{
+ global,
+ sdk::{propagation::TraceContextPropagator, trace, Resource},
+ KeyValue,
+};
+use opentelemetry_otlp::WithExportConfig;
use ratelimit::RatelimiterServerComponent;
use rest::ReverseProxyServer;
use serde::de::DeserializeOwned;
use serde_json::Value;
-use shared::{config::Settings, log::info};
+use shared::config::Settings;
use std::{
env,
ffi::{CStr, CString},
+ str::FromStr,
time::Duration,
};
use tokio::{
@@ -20,6 +27,11 @@ use tokio::{
sync::oneshot::{self, Sender},
task::JoinHandle,
};
+use tracing::info;
+use tracing_subscriber::{
+ filter::Directive, fmt, prelude::__tracing_subscriber_SubscriberExt, util::SubscriberInitExt,
+ EnvFilter,
+};
use webhook::WebhookServer;
pub struct AllInOneInstance {
@@ -83,9 +95,7 @@ pub extern "C" fn load_config() -> *const libc::c_char {
#[no_mangle]
/// Initialise les logs des composants de nova
/// Utilise la crate `pretty_log_env`
-pub extern "C" fn init_logs() {
- pretty_env_logger::init();
-}
+pub extern "C" fn init_logs() {}
#[no_mangle]
/// Stops a nova instance
@@ -108,6 +118,29 @@ pub unsafe extern "C" fn start_instance(config: *const libc::c_char) -> *mut All
// Initialize a tokio runtime
let rt = Runtime::new().unwrap();
rt.block_on(async move {
+ global::set_text_map_propagator(TraceContextPropagator::new());
+ let tracer =
+ opentelemetry_otlp::new_pipeline()
+ .tracing()
+ .with_trace_config(trace::config().with_resource(Resource::new(vec![
+ KeyValue::new("service.name", "all-in-one"),
+ ])))
+ .with_exporter(opentelemetry_otlp::new_exporter().tonic().with_env())
+ .install_batch(opentelemetry::runtime::Tokio)
+ .unwrap();
+
+ let telemetry = tracing_opentelemetry::layer().with_tracer(tracer);
+
+ tracing_subscriber::registry()
+ .with(fmt::layer())
+ .with(telemetry)
+ .with(
+ EnvFilter::builder()
+ .with_default_directive(Directive::from_str("info").unwrap())
+ .from_env()
+ .unwrap(),
+ )
+ .init();
// Start the gateway server
let mut aio = vec![];