Skip to content

Commit c007971

Browse files
committed
feat(ddtelemetry): filled kernel information
1 parent cbbd077 commit c007971

File tree

4 files changed

+35
-5
lines changed

4 files changed

+35
-5
lines changed

Cargo.lock

Lines changed: 3 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ddtelemetry/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ hashbrown = "0.15"
3333

3434
ddcommon = { path = "../ddcommon", default-features = false }
3535
datadog-ddsketch = { path = "../ddsketch" }
36+
libc = "0.2.176"
3637

3738
[dev-dependencies]
3839
tracing-subscriber = "0.3.18"

ddtelemetry/src/info.rs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
// SPDX-License-Identifier: Apache-2.0
33

44
pub mod os {
5+
use std::ffi::CStr;
6+
57
// TODO: this function will call API's (fargate, k8s, etc) in the future to get to real host API
68
pub fn real_hostname() -> anyhow::Result<String> {
79
Ok(sys_info::hostname()?)
@@ -14,4 +16,30 @@ pub mod os {
1416
pub fn os_version() -> anyhow::Result<String> {
1517
sys_info::os_release().map_err(|e| e.into())
1618
}
19+
20+
pub fn os_type() -> Option<String> {
21+
match sys_info::os_type() {
22+
Ok(os_type) => Some(os_type),
23+
Err(_) => None,
24+
}
25+
}
26+
27+
pub fn os_release() -> Option<String> {
28+
match sys_info::os_release() {
29+
Ok(os_release) => Some(os_release),
30+
Err(_) => None,
31+
}
32+
}
33+
34+
pub unsafe fn uname() -> Option<String> {
35+
let mut n = std::mem::zeroed();
36+
match libc::uname(&mut n) {
37+
0 => Some(
38+
CStr::from_ptr((&n.version[..]).as_ptr())
39+
.to_string_lossy()
40+
.into_owned(),
41+
),
42+
_ => None,
43+
}
44+
}
1745
}

ddtelemetry/src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ pub fn build_host() -> data::Host {
3737
container_id,
3838
os: Some(String::from(info::os::os_name())),
3939
os_version,
40-
kernel_name: None,
41-
kernel_release: None,
42-
kernel_version: None,
40+
kernel_name: info::os::os_type(),
41+
kernel_release: info::os::os_release(),
42+
kernel_version: unsafe { info::os::uname() },
4343
}
4444
}

0 commit comments

Comments
 (0)