From 5d75ac6701a80a77498f34e50bb7da23c51db95b Mon Sep 17 00:00:00 2001 From: Damien Churchill Date: Tue, 15 Oct 2024 10:50:11 +0100 Subject: [PATCH] support scraping metadata from Kubernetes log files on Windows This implements the changes from #19799, including the suggested fix for the failing test. I've been running the change with the path separator successfully for 5 months now. --- src/sources/kubernetes_logs/path_helpers.rs | 2 +- src/sources/kubernetes_logs/pod_metadata_annotator.rs | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/sources/kubernetes_logs/path_helpers.rs b/src/sources/kubernetes_logs/path_helpers.rs index 704d370b1cbeb..7f4d97295c07f 100644 --- a/src/sources/kubernetes_logs/path_helpers.rs +++ b/src/sources/kubernetes_logs/path_helpers.rs @@ -34,7 +34,7 @@ pub(super) fn build_pod_logs_directory( /// /// Inspired by pub(super) fn parse_log_file_path(path: &str) -> Option> { - let mut components = path.rsplit('/'); + let mut components = path.rsplit(std::path::MAIN_SEPARATOR); let _log_file_name = components.next()?; let container_name = components.next()?; diff --git a/src/sources/kubernetes_logs/pod_metadata_annotator.rs b/src/sources/kubernetes_logs/pod_metadata_annotator.rs index 1cb8ca5728b40..caf59ab30ac70 100644 --- a/src/sources/kubernetes_logs/pod_metadata_annotator.rs +++ b/src/sources/kubernetes_logs/pod_metadata_annotator.rs @@ -752,9 +752,10 @@ mod tests { #[test] fn test_annotate_from_file_info() { + let path = ["var", "log", "pods", "sandbox0-ns_sandbox0-name_sandbox0-uid", "sandbox0-container0-name", "1.log"].iter().collect::(); let cases = vec![( FieldsSpec::default(), - "/var/log/pods/sandbox0-ns_sandbox0-name_sandbox0-uid/sandbox0-container0-name/1.log", + path, { let mut log = LogEvent::default(); log.insert(event_path!("kubernetes", "container_name"), "sandbox0-container0-name"); @@ -766,7 +767,7 @@ mod tests { container_name: OwnedTargetPath::event(owned_value_path!("container_name")).into(), ..Default::default() }, - "/var/log/pods/sandbox0-ns_sandbox0-name_sandbox0-uid/sandbox0-container0-name/1.log", + path, { let mut log = LogEvent::default(); log.insert(event_path!("container_name"), "sandbox0-container0-name");