summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormmynk <mohit.ritanil@gmail.com>2023-11-03 13:39:17 -0700
committerFacebook GitHub Bot <facebook-github-bot@users.noreply.github.com>2023-11-03 13:39:17 -0700
commit22d9b418c9d6e1cdb10749c57e97578241b055f1 (patch)
tree81b4f6636246287a9d357279b8c2d68507173d95
parent7fc6f7f7e1bdee0716a49bf2ab4a44e1d3623dc7 (diff)
Make `ethtool` optional in sample (#8211)
Summary: This makes sure newer versions of below play nicely with older. Currently, on using newer version of below to parse snapshots recorded by earlier versions, it fails with error: ``` Nov 03 03:29:23.169 WARN Failed to deserialize data frame: missing field `ethtool` Nov 03 03:29:23.170 WARN Failed to deserialize data frame: missing field `ethtool` ... ``` This change makes sure, error isn't thrown and `ethtool` is set as `None` in the sample. Pull Request resolved: https://github.com/facebookincubator/below/pull/8211 Reviewed By: lnyng Differential Revision: D50986370 Pulled By: brianc118 fbshipit-source-id: b5c14903b9cec5259d4a36e1180a6ffd42c822db
-rw-r--r--Cargo.lock244
-rw-r--r--below/model/src/collector.rs2
-rw-r--r--below/model/src/lib.rs2
-rw-r--r--below/model/src/network.rs16
-rw-r--r--below/model/src/sample.rs2
5 files changed, 79 insertions, 187 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 14f9c39e..d01b333a 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -89,9 +89,9 @@ dependencies = [
[[package]]
name = "anyhow"
-version = "1.0.71"
+version = "1.0.72"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8"
+checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854"
[[package]]
name = "async-trait"
@@ -152,7 +152,7 @@ dependencies = [
"slog",
"slog-term",
"tar",
- "tempdir",
+ "tempfile",
"users",
]
@@ -164,7 +164,7 @@ dependencies = [
"libc",
"nix 0.25.0",
"openat",
- "rand 0.8.5",
+ "rand",
"rand_distr",
"serde",
"slog",
@@ -183,7 +183,7 @@ dependencies = [
"regex",
"slog",
"slog-term",
- "tempdir",
+ "tempfile",
"walkdir",
]
@@ -195,8 +195,8 @@ dependencies = [
"below-btrfs",
"cgroupfs",
"serde",
- "tempdir",
- "toml 0.7.6",
+ "tempfile",
+ "toml 0.8.6",
]
[[package]]
@@ -216,8 +216,17 @@ dependencies = [
"serde_json",
"slog",
"tar",
- "tempdir",
- "toml 0.7.6",
+ "tempfile",
+ "toml 0.8.6",
+]
+
+[[package]]
+name = "below-ethtool"
+version = "0.7.1"
+dependencies = [
+ "nix 0.25.0",
+ "serde",
+ "thiserror",
]
[[package]]
@@ -236,6 +245,7 @@ dependencies = [
"async-trait",
"below-btrfs",
"below-common",
+ "below-ethtool",
"below-gpu-stats",
"below_derive",
"cgroupfs",
@@ -279,7 +289,7 @@ dependencies = [
"slog",
"slog-term",
"static_assertions",
- "tempdir",
+ "tempfile",
"zstd",
"zstd-safe",
]
@@ -304,8 +314,8 @@ dependencies = [
"once_cell",
"serde",
"slog",
- "tempdir",
- "toml 0.7.6",
+ "tempfile",
+ "toml 0.8.6",
]
[[package]]
@@ -413,7 +423,7 @@ dependencies = [
"iana-time-zone",
"num-traits",
"serde",
- "windows-targets 0.48.0",
+ "windows-targets",
]
[[package]]
@@ -864,12 +874,9 @@ dependencies = [
[[package]]
name = "fastrand"
-version = "1.8.0"
+version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499"
-dependencies = [
- "instant",
-]
+checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
[[package]]
name = "fb_procfs"
@@ -904,12 +911,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
[[package]]
-name = "fuchsia-cprng"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
-
-[[package]]
name = "futures"
version = "0.1.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1138,32 +1139,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6e481ccbe3dea62107216d0d1138bb8ad8e5e5c43009a098bd1990272c497b0"
[[package]]
-name = "io-lifetimes"
-version = "1.0.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220"
-dependencies = [
- "hermit-abi 0.3.1",
- "libc",
- "windows-sys 0.48.0",
-]
-
-[[package]]
name = "is-terminal"
version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
dependencies = [
"hermit-abi 0.3.1",
- "rustix 0.38.11",
+ "rustix 0.38.21",
"windows-sys 0.48.0",
]
[[package]]
name = "itertools"
-version = "0.10.5"
+version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
+checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
dependencies = [
"either",
]
@@ -1250,9 +1240,9 @@ dependencies = [
[[package]]
name = "libc"
-version = "0.2.147"
+version = "0.2.149"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
+checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b"
[[package]]
name = "libm"
@@ -1277,15 +1267,9 @@ checksum = "d4d2456c373231a208ad294c33dc5bff30051eafd954cd4caae83a712b12854d"
[[package]]
name = "linux-raw-sys"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d59d8c75012853d2e872fb56bc8a2e53718e2cafe1a4c823143141c6d90c322f"
-
-[[package]]
-name = "linux-raw-sys"
-version = "0.4.5"
+version = "0.4.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503"
+checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f"
[[package]]
name = "lock_api"
@@ -1560,9 +1544,9 @@ dependencies = [
[[package]]
name = "paste"
-version = "1.0.13"
+version = "1.0.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4b27ab7be369122c218afc2079489cdcb4b517c0a3fc386ff11e1fedfcc2b35"
+checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
[[package]]
name = "pin-project-lite"
@@ -1600,7 +1584,7 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be97d76faf1bfab666e1375477b23fde79eccf0276e9b63b92a39d676a889ba9"
dependencies = [
- "rand 0.8.5",
+ "rand",
]
[[package]]
@@ -1640,26 +1624,13 @@ dependencies = [
[[package]]
name = "rand"
-version = "0.4.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293"
-dependencies = [
- "fuchsia-cprng",
- "libc",
- "rand_core 0.3.1",
- "rdrand",
- "winapi",
-]
-
-[[package]]
-name = "rand"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
dependencies = [
"libc",
"rand_chacha",
- "rand_core 0.6.4",
+ "rand_core",
]
[[package]]
@@ -1669,26 +1640,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
dependencies = [
"ppv-lite86",
- "rand_core 0.6.4",
-]
-
-[[package]]
-name = "rand_core"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
-dependencies = [
- "rand_core 0.4.2",
+ "rand_core",
]
[[package]]
name = "rand_core"
-version = "0.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc"
-
-[[package]]
-name = "rand_core"
version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
@@ -1703,7 +1659,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31"
dependencies = [
"num-traits",
- "rand 0.8.5",
+ "rand",
]
[[package]]
@@ -1731,15 +1687,6 @@ dependencies = [
]
[[package]]
-name = "rdrand"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
-dependencies = [
- "rand_core 0.3.1",
-]
-
-[[package]]
name = "redox_syscall"
version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1750,9 +1697,9 @@ dependencies = [
[[package]]
name = "redox_syscall"
-version = "0.3.5"
+version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
+checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
dependencies = [
"bitflags 1.3.2",
]
@@ -1798,15 +1745,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
[[package]]
-name = "remove_dir_all"
-version = "0.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
-dependencies = [
- "winapi",
-]
-
-[[package]]
name = "rustix"
version = "0.35.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1814,7 +1752,7 @@ checksum = "985947f9b6423159c4726323f373be0a21bdb514c5af06a849cb3d2dce2d01e8"
dependencies = [
"bitflags 1.3.2",
"errno 0.2.8",
- "io-lifetimes 0.7.4",
+ "io-lifetimes",
"libc",
"linux-raw-sys 0.0.46",
"windows-sys 0.36.1",
@@ -1822,28 +1760,14 @@ dependencies = [
[[package]]
name = "rustix"
-version = "0.37.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85597d61f83914ddeba6a47b3b8ffe7365107221c2e557ed94426489fefb5f77"
-dependencies = [
- "bitflags 1.3.2",
- "errno 0.3.1",
- "io-lifetimes 1.0.10",
- "libc",
- "linux-raw-sys 0.3.1",
- "windows-sys 0.48.0",
-]
-
-[[package]]
-name = "rustix"
-version = "0.38.11"
+version = "0.38.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0c3dde1fc030af041adc40e79c0e7fbcf431dd24870053d187d7c66e4b87453"
+checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3"
dependencies = [
"bitflags 2.4.0",
"errno 0.3.1",
"libc",
- "linux-raw-sys 0.4.5",
+ "linux-raw-sys 0.4.10",
"windows-sys 0.48.0",
]
@@ -1949,9 +1873,9 @@ dependencies = [
[[package]]
name = "serde_spanned"
-version = "0.6.3"
+version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186"
+checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80"
dependencies = [
"serde",
]
@@ -2088,26 +2012,16 @@ dependencies = [
]
[[package]]
-name = "tempdir"
-version = "0.3.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8"
-dependencies = [
- "rand 0.4.6",
- "remove_dir_all",
-]
-
-[[package]]
name = "tempfile"
-version = "3.5.0"
+version = "3.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998"
+checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5"
dependencies = [
"cfg-if",
"fastrand",
- "redox_syscall 0.3.5",
- "rustix 0.37.11",
- "windows-sys 0.45.0",
+ "redox_syscall 0.4.1",
+ "rustix 0.38.21",
+ "windows-sys 0.48.0",
]
[[package]]
@@ -2240,9 +2154,9 @@ dependencies = [
[[package]]
name = "toml"
-version = "0.7.6"
+version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542"
+checksum = "8ff9e3abce27ee2c9a37f9ad37238c1bdd4e789c84ba37df76aa4d528f5072cc"
dependencies = [
"serde",
"serde_spanned",
@@ -2252,18 +2166,18 @@ dependencies = [
[[package]]
name = "toml_datetime"
-version = "0.6.3"
+version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"
+checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
dependencies = [
"serde",
]
[[package]]
name = "toml_edit"
-version = "0.19.12"
+version = "0.20.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c500344a19072298cd05a7224b3c0c629348b78692bf48466c5238656e315a78"
+checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81"
dependencies = [
"indexmap",
"serde",
@@ -2463,35 +2377,11 @@ dependencies = [
[[package]]
name = "windows-sys"
-version = "0.45.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
-dependencies = [
- "windows-targets 0.42.2",
-]
-
-[[package]]
-name = "windows-sys"
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
dependencies = [
- "windows-targets 0.48.0",
-]
-
-[[package]]
-name = "windows-targets"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
-dependencies = [
- "windows_aarch64_gnullvm 0.42.2",
- "windows_aarch64_msvc 0.42.2",
- "windows_i686_gnu 0.42.2",
- "windows_i686_msvc 0.42.2",
- "windows_x86_64_gnu 0.42.2",
- "windows_x86_64_gnullvm 0.42.2",
- "windows_x86_64_msvc 0.42.2",
+ "windows-targets",
]
[[package]]
@@ -2625,9 +2515,9 @@ checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
[[package]]
name = "winnow"
-version = "0.4.9"
+version = "0.5.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81a2094c43cc94775293eaa0e499fbc30048a6d824ac82c0351a8c0bf9112529"
+checksum = "176b6138793677221d420fd2f0aeeced263f197688b36484660da767bca2fa32"
dependencies = [
"memchr",
]
@@ -2649,30 +2539,28 @@ checksum = "a67300977d3dc3f8034dae89778f502b6ba20b269527b3223ba59c0cf393bb8a"
[[package]]
name = "zstd"
-version = "0.11.2+zstd.1.5.2"
+version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4"
+checksum = "bffb3309596d527cfcba7dfc6ed6052f1d39dfbd7c867aa2e865e4a449c10110"
dependencies = [
"zstd-safe",
]
[[package]]
name = "zstd-safe"
-version = "5.0.2+zstd.1.5.2"
+version = "7.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db"
+checksum = "43747c7422e2924c11144d5229878b98180ef8b06cca4ab5af37afc8a8d8ea3e"
dependencies = [
- "libc",
"zstd-sys",
]
[[package]]
name = "zstd-sys"
-version = "2.0.1+zstd.1.5.2"
+version = "2.0.9+zstd.1.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9fd07cbbc53846d9145dbffdf6dd09a7a0aa52be46741825f5c97bdd4f73f12b"
+checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656"
dependencies = [
"cc",
- "libc",
"pkg-config",
]
diff --git a/below/model/src/collector.rs b/below/model/src/collector.rs
index 7755a81e..419bfa8b 100644
--- a/below/model/src/collector.rs
+++ b/below/model/src/collector.rs
@@ -280,7 +280,7 @@ fn collect_sample(logger: &slog::Logger, options: &CollectorOptions) -> Result<S
Default::default()
} else {
match ethtool_reader.read_stats::<ethtool::Ethtool>() {
- Ok(ethtool_stats) => ethtool_stats,
+ Ok(ethtool_stats) => Some(ethtool_stats),
Err(e) => {
error!(logger, "{:#}", e);
Default::default()
diff --git a/below/model/src/lib.rs b/below/model/src/lib.rs
index 57c0cfd4..80cce294 100644
--- a/below/model/src/lib.rs
+++ b/below/model/src/lib.rs
@@ -496,7 +496,7 @@ impl<K: Ord, Q: Queriable> Queriable for BTreeMap<K, Q> {
pub struct NetworkStats<'a> {
net: &'a procfs::NetStat,
- ethtool: &'a ethtool::EthtoolStats,
+ ethtool: &'a Option<ethtool::EthtoolStats>,
}
#[derive(Serialize, Deserialize, below_derive::Queriable)]
diff --git a/below/model/src/network.rs b/below/model/src/network.rs
index 53d2ad32..782bcb00 100644
--- a/below/model/src/network.rs
+++ b/below/model/src/network.rs
@@ -47,8 +47,10 @@ impl NetworkModel {
iface_names.insert(interface.to_string());
}
}
- for key in ethtool_stats.nic.keys() {
- iface_names.insert(key.to_string());
+ if let Some(ethtool_stats) = ethtool_stats {
+ for key in ethtool_stats.nic.keys() {
+ iface_names.insert(key.to_string());
+ }
}
for interface in iface_names {
@@ -56,7 +58,9 @@ impl NetworkModel {
.interfaces
.as_ref()
.and_then(|ifaces| ifaces.get(&interface));
- let ethtool_stat = ethtool_stats.nic.get(&interface);
+ let ethtool_stat = ethtool_stats
+ .as_ref()
+ .and_then(|stat| stat.nic.get(&interface));
let s_iface = SingleNetworkStat {
iface: iface_stat,
@@ -73,7 +77,7 @@ impl NetworkModel {
.interfaces
.as_ref()
.and_then(|ifaces| ifaces.get(&interface));
- let l_ethtool_stat = l.ethtool.nic.get(&interface);
+ let l_ethtool_stat = l.ethtool.as_ref().and_then(|stat| stat.nic.get(&interface));
l_network_stat = SingleNetworkStat {
iface: l_iface_stat,
nic: l_ethtool_stat,
@@ -774,11 +778,11 @@ mod test {
let prev_sample = NetworkStats {
net: &l_net_stats,
- ethtool: &l_ethtool_stats,
+ ethtool: &Some(l_ethtool_stats),
};
let sample = NetworkStats {
net: &s_net_stats,
- ethtool: &s_ethtool_stats,
+ ethtool: &Some(s_ethtool_stats),
};
let last = Some((&prev_sample, Duration::from_secs(1)));
diff --git a/below/model/src/sample.rs b/below/model/src/sample.rs
index afc5877b..2a59b659 100644
--- a/below/model/src/sample.rs
+++ b/below/model/src/sample.rs
@@ -21,7 +21,7 @@ pub struct Sample {
pub system: SystemSample,
pub netstats: procfs::NetStat,
pub gpus: Option<gpu_stats::GpuSample>,
- pub ethtool: ethtool::EthtoolStats,
+ pub ethtool: Option<ethtool::EthtoolStats>,
}
#[derive(Default, Clone, PartialEq, Debug, Serialize, Deserialize)]