Configure console logs, OTLP logs, and traces independently
This commit is contained in:
10 files changed
+263
-18
No files matched your search
@@ -113,6 +113,15 @@ pub fn write_init_config(args: &InitConfigArgs) -> Result<Option<PathBuf>> {
|
||||
ui_dist_dir,
|
||||
bootstrap_enroll_tokens,
|
||||
telemetry: WritableTelemetry {
|
||||
console_filter: base_telemetry
|
||||
.console_filter
|
||||
.or_else(|| defaults.telemetry.console_filter.clone()),
|
||||
otlp_log_filter: base_telemetry
|
||||
.otlp_log_filter
|
||||
.or_else(|| defaults.telemetry.otlp_log_filter.clone()),
|
||||
trace_filter: base_telemetry
|
||||
.trace_filter
|
||||
.or_else(|| defaults.telemetry.trace_filter.clone()),
|
||||
authorization_env: base_telemetry
|
||||
.authorization_env
|
||||
.or_else(|| defaults.telemetry.authorization_env.clone()),
|
||||
@@ -227,6 +236,9 @@ bootstrap_enroll_tokens = ["old-token"]
|
||||
[telemetry]
|
||||
otlp_endpoint = "http://otel.example"
|
||||
authorization_env = "WAKEY_OTLP_AUTHORIZATION"
|
||||
console_filter = "info"
|
||||
otlp_log_filter = "debug"
|
||||
trace_filter = "info"
|
||||
service_name = "old-service"
|
||||
json_logs = true
|
||||
"#,
|
||||
@@ -265,6 +277,12 @@ json_logs = true
|
||||
Some("/tmp/wakey-base/old.sqlite3")
|
||||
);
|
||||
assert_eq!(parsed["telemetry"]["json_logs"].as_bool(), Some(true));
|
||||
assert_eq!(parsed["telemetry"]["console_filter"].as_str(), Some("info"));
|
||||
assert_eq!(
|
||||
parsed["telemetry"]["otlp_log_filter"].as_str(),
|
||||
Some("debug")
|
||||
);
|
||||
assert_eq!(parsed["telemetry"]["trace_filter"].as_str(), Some("info"));
|
||||
assert_eq!(
|
||||
parsed["telemetry"]["authorization_env"].as_str(),
|
||||
Some("WAKEY_OTLP_AUTHORIZATION")
|
||||
|
||||
@@ -232,6 +232,9 @@ fn resolve_telemetry(file: Option<FileTelemetryConfig>) -> TelemetryConfig {
|
||||
let mut out = TelemetryConfig::default();
|
||||
if let Some(file) = file {
|
||||
out.authorization_env = file.authorization_env;
|
||||
out.console_filter = file.console_filter;
|
||||
out.otlp_log_filter = file.otlp_log_filter;
|
||||
out.trace_filter = file.trace_filter;
|
||||
if let Some(endpoint) = file.otlp_endpoint {
|
||||
let trimmed = endpoint.trim().to_string();
|
||||
if !trimmed.is_empty() {
|
||||
|
||||
@@ -22,6 +22,9 @@ pub struct DaemonConfig {
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct TelemetryConfig {
|
||||
pub console_filter: Option<String>,
|
||||
pub otlp_log_filter: Option<String>,
|
||||
pub trace_filter: Option<String>,
|
||||
pub otlp_endpoint: Option<String>,
|
||||
pub authorization_env: Option<String>,
|
||||
pub service_name: String,
|
||||
@@ -32,6 +35,9 @@ impl Default for TelemetryConfig {
|
||||
fn default() -> Self {
|
||||
let defaults = &DEFAULT_CONFIG.telemetry;
|
||||
Self {
|
||||
console_filter: defaults.console_filter.clone(),
|
||||
otlp_log_filter: defaults.otlp_log_filter.clone(),
|
||||
trace_filter: defaults.trace_filter.clone(),
|
||||
otlp_endpoint: defaults.otlp_endpoint.clone(),
|
||||
authorization_env: defaults.authorization_env.clone(),
|
||||
service_name: defaults.service_name.clone(),
|
||||
@@ -58,6 +64,9 @@ pub(crate) struct FileConfig {
|
||||
|
||||
#[derive(Debug, Deserialize, Default)]
|
||||
pub(crate) struct FileTelemetryConfig {
|
||||
pub(crate) console_filter: Option<String>,
|
||||
pub(crate) otlp_log_filter: Option<String>,
|
||||
pub(crate) trace_filter: Option<String>,
|
||||
pub(crate) otlp_endpoint: Option<String>,
|
||||
pub(crate) authorization_env: Option<String>,
|
||||
pub(crate) service_name: Option<String>,
|
||||
@@ -82,6 +91,12 @@ pub(crate) struct WritableConfig {
|
||||
|
||||
#[derive(Debug, Clone, Serialize)]
|
||||
pub(crate) struct WritableTelemetry {
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub(crate) console_filter: Option<String>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub(crate) otlp_log_filter: Option<String>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub(crate) trace_filter: Option<String>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub(crate) otlp_endpoint: Option<String>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
@@ -102,6 +117,9 @@ pub(crate) static DEFAULT_CONFIG: LazyLock<WritableConfig> = LazyLock::new(|| Wr
|
||||
ui_dist_dir: "ui/dist".into(),
|
||||
bootstrap_enroll_tokens: Vec::new(),
|
||||
telemetry: WritableTelemetry {
|
||||
console_filter: None,
|
||||
otlp_log_filter: None,
|
||||
trace_filter: None,
|
||||
otlp_endpoint: None,
|
||||
authorization_env: None,
|
||||
service_name: "wakey-control-plane".to_string(),
|
||||
|
||||
@@ -8,6 +8,9 @@ pub fn init(verbose: u8, telemetry: &TelemetryConfig) -> Result<TelemetryGuard>
|
||||
authorization_env: telemetry.authorization_env.clone(),
|
||||
service_name: telemetry.service_name.clone(),
|
||||
json_logs: telemetry.json_logs,
|
||||
console_filter: telemetry.console_filter.clone(),
|
||||
otlp_log_filter: telemetry.otlp_log_filter.clone(),
|
||||
trace_filter: telemetry.trace_filter.clone(),
|
||||
};
|
||||
wakey_core::telemetry::init(
|
||||
&config,
|
||||
|
||||
Reference in new issue
Block a user