diff --git a/config/config.md b/config/config.md index ad8d42f024..010afb3e62 100644 --- a/config/config.md +++ b/config/config.md @@ -127,6 +127,8 @@ | `export_metrics.remote_write` | -- | -- | -- | | `export_metrics.remote_write.url` | String | `""` | The url the metrics send to. The url example can be: `http://127.0.0.1:4000/v1/prometheus/write?db=information_schema`. | | `export_metrics.remote_write.headers` | InlineTable | -- | HTTP headers of Prometheus remote-write carry. | +| `tracing` | -- | -- | The tracing options. Only effect when compiled with `tokio-console` feature. | +| `tracing.tokio_console_addr` | String | `None` | The tokio console address. | ## Cluster Mode @@ -203,6 +205,8 @@ | `export_metrics.remote_write` | -- | -- | -- | | `export_metrics.remote_write.url` | String | `""` | The url the metrics send to. The url example can be: `http://127.0.0.1:4000/v1/prometheus/write?db=information_schema`. | | `export_metrics.remote_write.headers` | InlineTable | -- | HTTP headers of Prometheus remote-write carry. | +| `tracing` | -- | -- | The tracing options. Only effect when compiled with `tokio-console` feature. | +| `tracing.tokio_console_addr` | String | `None` | The tokio console address. | ### Metasrv @@ -259,6 +263,8 @@ | `export_metrics.remote_write` | -- | -- | -- | | `export_metrics.remote_write.url` | String | `""` | The url the metrics send to. The url example can be: `http://127.0.0.1:4000/v1/prometheus/write?db=information_schema`. | | `export_metrics.remote_write.headers` | InlineTable | -- | HTTP headers of Prometheus remote-write carry. | +| `tracing` | -- | -- | The tracing options. Only effect when compiled with `tokio-console` feature. | +| `tracing.tokio_console_addr` | String | `None` | The tokio console address. | ### Datanode @@ -370,3 +376,5 @@ | `export_metrics.remote_write` | -- | -- | -- | | `export_metrics.remote_write.url` | String | `""` | The url the metrics send to. The url example can be: `http://127.0.0.1:4000/v1/prometheus/write?db=information_schema`. | | `export_metrics.remote_write.headers` | InlineTable | -- | HTTP headers of Prometheus remote-write carry. | +| `tracing` | -- | -- | The tracing options. Only effect when compiled with `tokio-console` feature. | +| `tracing.tokio_console_addr` | String | `None` | The tokio console address. | diff --git a/config/datanode.example.toml b/config/datanode.example.toml index 58a2d8d231..55e0c36383 100644 --- a/config/datanode.example.toml +++ b/config/datanode.example.toml @@ -428,3 +428,9 @@ url = "" ## HTTP headers of Prometheus remote-write carry. headers = { } + +## The tracing options. Only effect when compiled with `tokio-console` feature. +[tracing] +## The tokio console address. +## +toml2docs:none-default +tokio_console_addr = "127.0.0.1" diff --git a/config/frontend.example.toml b/config/frontend.example.toml index 9724ea3525..5eeb7bc5c7 100644 --- a/config/frontend.example.toml +++ b/config/frontend.example.toml @@ -186,3 +186,9 @@ url = "" ## HTTP headers of Prometheus remote-write carry. headers = { } + +## The tracing options. Only effect when compiled with `tokio-console` feature. +[tracing] +## The tokio console address. +## +toml2docs:none-default +tokio_console_addr = "127.0.0.1" diff --git a/config/metasrv.example.toml b/config/metasrv.example.toml index 1b0bca2e26..bc6a5d1193 100644 --- a/config/metasrv.example.toml +++ b/config/metasrv.example.toml @@ -141,3 +141,9 @@ url = "" ## HTTP headers of Prometheus remote-write carry. headers = { } + +## The tracing options. Only effect when compiled with `tokio-console` feature. +[tracing] +## The tokio console address. +## +toml2docs:none-default +tokio_console_addr = "127.0.0.1" diff --git a/config/standalone.example.toml b/config/standalone.example.toml index 30b8fbe655..2ed47506b6 100644 --- a/config/standalone.example.toml +++ b/config/standalone.example.toml @@ -471,3 +471,9 @@ url = "" ## HTTP headers of Prometheus remote-write carry. headers = { } + +## The tracing options. Only effect when compiled with `tokio-console` feature. +[tracing] +## The tokio console address. +## +toml2docs:none-default +tokio_console_addr = "127.0.0.1" diff --git a/src/cmd/src/bin/greptime.rs b/src/cmd/src/bin/greptime.rs index 77f43bfdb0..3bb99b4772 100644 --- a/src/cmd/src/bin/greptime.rs +++ b/src/cmd/src/bin/greptime.rs @@ -128,7 +128,7 @@ async fn start(cli: Command) -> Result<()> { let _guard = common_telemetry::init_global_logging( &app_name, opts.logging_options(), - cli.global_options.tracing_options(), + &cli.global_options.tracing_options(), opts.node_id(), ); diff --git a/src/cmd/src/datanode.rs b/src/cmd/src/datanode.rs index a0278b62d2..62400fd6a9 100644 --- a/src/cmd/src/datanode.rs +++ b/src/cmd/src/datanode.rs @@ -19,6 +19,7 @@ use async_trait::async_trait; use catalog::kvbackend::MetaKvBackend; use clap::Parser; use common_telemetry::info; +use common_telemetry::logging::TracingOptions; use common_wal::config::DatanodeWalConfig; use datanode::config::DatanodeOptions; use datanode::datanode::{Datanode, DatanodeBuilder}; @@ -146,6 +147,11 @@ impl StartCommand { opts.logging.level.clone_from(&global_options.log_level); } + opts.tracing = TracingOptions { + #[cfg(feature = "tokio-console")] + tokio_console_addr: global_options.tokio_console_addr.clone(), + }; + if let Some(addr) = &self.rpc_addr { opts.rpc_addr.clone_from(addr); } diff --git a/src/cmd/src/frontend.rs b/src/cmd/src/frontend.rs index 0fbe71dac3..b507e030b2 100644 --- a/src/cmd/src/frontend.rs +++ b/src/cmd/src/frontend.rs @@ -23,6 +23,7 @@ use client::client_manager::DatanodeClients; use common_meta::heartbeat::handler::parse_mailbox_message::ParseMailboxMessageHandler; use common_meta::heartbeat::handler::HandlerGroupExecutor; use common_telemetry::info; +use common_telemetry::logging::TracingOptions; use common_time::timezone::set_default_timezone; use frontend::frontend::FrontendOptions; use frontend::heartbeat::handler::invalidate_table_cache::InvalidateTableCacheHandler; @@ -162,6 +163,11 @@ impl StartCommand { opts.logging.level.clone_from(&global_options.log_level); } + opts.tracing = TracingOptions { + #[cfg(feature = "tokio-console")] + tokio_console_addr: global_options.tokio_console_addr.clone(), + }; + let tls_opts = TlsOption::new( self.tls_mode.clone(), self.tls_cert_path.clone(), diff --git a/src/cmd/src/metasrv.rs b/src/cmd/src/metasrv.rs index 482a5c1e03..5832e61d2c 100644 --- a/src/cmd/src/metasrv.rs +++ b/src/cmd/src/metasrv.rs @@ -17,6 +17,7 @@ use std::time::Duration; use async_trait::async_trait; use clap::Parser; use common_telemetry::info; +use common_telemetry::logging::TracingOptions; use meta_srv::bootstrap::MetasrvInstance; use meta_srv::metasrv::MetasrvOptions; use snafu::ResultExt; @@ -141,6 +142,11 @@ impl StartCommand { opts.logging.level.clone_from(&global_options.log_level); } + opts.tracing = TracingOptions { + #[cfg(feature = "tokio-console")] + tokio_console_addr: global_options.tokio_console_addr.clone(), + }; + if let Some(addr) = &self.bind_addr { opts.bind_addr.clone_from(addr); } diff --git a/src/cmd/src/standalone.rs b/src/cmd/src/standalone.rs index a2679efceb..cdfa1b17bd 100644 --- a/src/cmd/src/standalone.rs +++ b/src/cmd/src/standalone.rs @@ -35,7 +35,7 @@ use common_meta::sequence::SequenceBuilder; use common_meta::wal_options_allocator::{WalOptionsAllocator, WalOptionsAllocatorRef}; use common_procedure::ProcedureManagerRef; use common_telemetry::info; -use common_telemetry::logging::LoggingOptions; +use common_telemetry::logging::{LoggingOptions, TracingOptions}; use common_time::timezone::set_default_timezone; use common_wal::config::StandaloneWalConfig; use datanode::config::{DatanodeOptions, ProcedureConfig, RegionEngineConfig, StorageConfig}; @@ -124,6 +124,7 @@ pub struct StandaloneOptions { /// Options for different store engines. pub region_engine: Vec, pub export_metrics: ExportMetricsOption, + pub tracing: TracingOptions, } impl StandaloneOptions { @@ -156,6 +157,7 @@ impl Default for StandaloneOptions { RegionEngineConfig::Mito(MitoConfig::default()), RegionEngineConfig::File(FileEngineConfig::default()), ], + tracing: TracingOptions::default(), } } } @@ -302,6 +304,11 @@ impl StartCommand { opts.logging.level.clone_from(&global_options.log_level); } + opts.tracing = TracingOptions { + #[cfg(feature = "tokio-console")] + tokio_console_addr: global_options.tokio_console_addr.clone(), + }; + let tls_opts = TlsOption::new( self.tls_mode.clone(), self.tls_cert_path.clone(), diff --git a/src/common/telemetry/src/logging.rs b/src/common/telemetry/src/logging.rs index d281d81d61..f155b15e29 100644 --- a/src/common/telemetry/src/logging.rs +++ b/src/common/telemetry/src/logging.rs @@ -72,7 +72,7 @@ impl Default for LoggingOptions { } } -#[derive(Default)] +#[derive(Default, Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct TracingOptions { #[cfg(feature = "tokio-console")] pub tokio_console_addr: Option, @@ -104,7 +104,7 @@ pub fn init_default_ut_logging() { *g = Some(init_global_logging( "unittest", &opts, - TracingOptions::default(), + &TracingOptions::default(), None )); @@ -121,7 +121,7 @@ const DEFAULT_LOG_TARGETS: &str = "info"; pub fn init_global_logging( app_name: &str, opts: &LoggingOptions, - tracing_opts: TracingOptions, + tracing_opts: &TracingOptions, node_id: Option, ) -> Vec { let mut guards = vec![]; diff --git a/src/datanode/src/config.rs b/src/datanode/src/config.rs index 0d0f59b469..8ced4825bd 100644 --- a/src/datanode/src/config.rs +++ b/src/datanode/src/config.rs @@ -20,7 +20,7 @@ use common_grpc::channel_manager::{ DEFAULT_MAX_GRPC_RECV_MESSAGE_SIZE, DEFAULT_MAX_GRPC_SEND_MESSAGE_SIZE, }; pub use common_procedure::options::ProcedureConfig; -use common_telemetry::logging::LoggingOptions; +use common_telemetry::logging::{LoggingOptions, TracingOptions}; use common_wal::config::DatanodeWalConfig; use file_engine::config::EngineConfig as FileEngineConfig; use meta_client::MetaClientOptions; @@ -234,6 +234,7 @@ pub struct DatanodeOptions { pub logging: LoggingOptions, pub enable_telemetry: bool, pub export_metrics: ExportMetricsOption, + pub tracing: TracingOptions, } impl Default for DatanodeOptions { @@ -260,6 +261,7 @@ impl Default for DatanodeOptions { heartbeat: HeartbeatOptions::datanode_default(), enable_telemetry: true, export_metrics: ExportMetricsOption::default(), + tracing: TracingOptions::default(), } } } diff --git a/src/frontend/src/frontend.rs b/src/frontend/src/frontend.rs index 18140e6566..95d1acdc98 100644 --- a/src/frontend/src/frontend.rs +++ b/src/frontend/src/frontend.rs @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use common_telemetry::logging::LoggingOptions; +use common_telemetry::logging::{LoggingOptions, TracingOptions}; use meta_client::MetaClientOptions; use serde::{Deserialize, Serialize}; use servers::export_metrics::ExportMetricsOption; @@ -47,6 +47,7 @@ pub struct FrontendOptions { pub datanode: DatanodeOptions, pub user_provider: Option, pub export_metrics: ExportMetricsOption, + pub tracing: TracingOptions, } impl Default for FrontendOptions { @@ -69,6 +70,7 @@ impl Default for FrontendOptions { datanode: DatanodeOptions::default(), user_provider: None, export_metrics: ExportMetricsOption::default(), + tracing: TracingOptions::default(), } } } diff --git a/src/meta-srv/src/metasrv.rs b/src/meta-srv/src/metasrv.rs index c34187832e..323428adca 100644 --- a/src/meta-srv/src/metasrv.rs +++ b/src/meta-srv/src/metasrv.rs @@ -31,7 +31,7 @@ use common_meta::wal_options_allocator::WalOptionsAllocatorRef; use common_meta::{distributed_time_constants, ClusterId}; use common_procedure::options::ProcedureConfig; use common_procedure::ProcedureManagerRef; -use common_telemetry::logging::LoggingOptions; +use common_telemetry::logging::{LoggingOptions, TracingOptions}; use common_telemetry::{error, info, warn}; use common_wal::config::MetasrvWalConfig; use serde::{Deserialize, Serialize}; @@ -109,6 +109,8 @@ pub struct MetasrvOptions { /// limit the number of operations in a txn because an infinitely large txn could /// potentially block other operations. pub max_txn_ops: usize, + /// The tracing options. + pub tracing: TracingOptions, } impl MetasrvOptions { @@ -146,6 +148,7 @@ impl Default for MetasrvOptions { export_metrics: ExportMetricsOption::default(), store_key_prefix: String::new(), max_txn_ops: 128, + tracing: TracingOptions::default(), } } } diff --git a/tests-integration/tests/http.rs b/tests-integration/tests/http.rs index 2471e0a920..74ce4f6add 100644 --- a/tests-integration/tests/http.rs +++ b/tests-integration/tests/http.rs @@ -835,7 +835,9 @@ type = "time_series" [export_metrics] enable = false -write_interval = "30s""#, +write_interval = "30s" + +[tracing]"#, store_type ) .trim()