mirror of
https://codeberg.org/icewind/palantir.git
synced 2026-06-03 10:14:09 +02:00
minor cleanup
This commit is contained in:
parent
3539d447d3
commit
b607a3d8fb
2 changed files with 23 additions and 27 deletions
32
src/lib.rs
32
src/lib.rs
|
|
@ -5,7 +5,6 @@ use crate::sensors::temperatures;
|
||||||
use crate::sensors::*;
|
use crate::sensors::*;
|
||||||
use crate::zfs::pools;
|
use crate::zfs::pools;
|
||||||
use color_eyre::Result;
|
use color_eyre::Result;
|
||||||
use std::collections::HashSet;
|
|
||||||
use std::fmt::Write;
|
use std::fmt::Write;
|
||||||
|
|
||||||
pub async fn get_metrics() -> Result<String> {
|
pub async fn get_metrics() -> Result<String> {
|
||||||
|
|
@ -52,7 +51,7 @@ pub async fn get_metrics() -> Result<String> {
|
||||||
.ok();
|
.ok();
|
||||||
}
|
}
|
||||||
for network in networks {
|
for network in networks {
|
||||||
let network: IOStats = network;
|
let network: IoStats = network;
|
||||||
if network.bytes_received > 0 || network.bytes_sent > 0 {
|
if network.bytes_received > 0 || network.bytes_sent > 0 {
|
||||||
writeln!(
|
writeln!(
|
||||||
&mut result,
|
&mut result,
|
||||||
|
|
@ -69,7 +68,7 @@ pub async fn get_metrics() -> Result<String> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for disk in disks {
|
for disk in disks {
|
||||||
let disk: IOStats = disk;
|
let disk: IoStats = disk;
|
||||||
if disk.bytes_received > 0 && disk.bytes_sent > 0 {
|
if disk.bytes_received > 0 && disk.bytes_sent > 0 {
|
||||||
writeln!(
|
writeln!(
|
||||||
&mut result,
|
&mut result,
|
||||||
|
|
@ -86,24 +85,21 @@ pub async fn get_metrics() -> Result<String> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut found_sizes = HashSet::new();
|
|
||||||
for disk in disk_usage {
|
for disk in disk_usage {
|
||||||
let disk: DiskUsage = disk;
|
let disk: DiskUsage = disk;
|
||||||
if disk.size > 0 {
|
if disk.size > 0 {
|
||||||
if found_sizes.insert((disk.size, disk.free)) {
|
writeln!(
|
||||||
writeln!(
|
&mut result,
|
||||||
&mut result,
|
"disk_size{{host=\"{}\", disk=\"{}\"}} {}",
|
||||||
"disk_size{{host=\"{}\", disk=\"{}\"}} {}",
|
hostname, disk.name, disk.size
|
||||||
hostname, disk.name, disk.size
|
)
|
||||||
)
|
.ok();
|
||||||
.ok();
|
writeln!(
|
||||||
writeln!(
|
&mut result,
|
||||||
&mut result,
|
"disk_free{{host=\"{}\", disk=\"{}\"}} {}",
|
||||||
"disk_free{{host=\"{}\", disk=\"{}\"}} {}",
|
hostname, disk.name, disk.free
|
||||||
hostname, disk.name, disk.free
|
)
|
||||||
)
|
.ok();
|
||||||
.ok();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (label, temp) in temperatures {
|
for (label, temp) in temperatures {
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ use std::os::unix::ffi::OsStrExt;
|
||||||
#[derive(Debug, Clone, Hash, Eq, PartialEq, Display)]
|
#[derive(Debug, Clone, Hash, Eq, PartialEq, Display)]
|
||||||
#[display(style = "lowercase")]
|
#[display(style = "lowercase")]
|
||||||
pub enum TemperatureLabel {
|
pub enum TemperatureLabel {
|
||||||
CPU,
|
Cpu,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Default)]
|
#[derive(Debug, Clone, Default)]
|
||||||
|
|
@ -23,7 +23,7 @@ pub struct Memory {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Default)]
|
#[derive(Debug, Clone, Default)]
|
||||||
pub struct IOStats {
|
pub struct IoStats {
|
||||||
pub interface: String,
|
pub interface: String,
|
||||||
pub bytes_sent: u64,
|
pub bytes_sent: u64,
|
||||||
pub bytes_received: u64,
|
pub bytes_received: u64,
|
||||||
|
|
@ -49,7 +49,7 @@ pub fn temperatures() -> Result<HashMap<TemperatureLabel, f32>> {
|
||||||
.flat_map(|(name, dir)| {
|
.flat_map(|(name, dir)| {
|
||||||
read_dir(dir.path())
|
read_dir(dir.path())
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.flat_map(|dir| dir)
|
.flatten()
|
||||||
.filter_map(Result::ok)
|
.filter_map(Result::ok)
|
||||||
.filter_map(move |item: DirEntry| {
|
.filter_map(move |item: DirEntry| {
|
||||||
let file_name = item.file_name();
|
let file_name = item.file_name();
|
||||||
|
|
@ -64,7 +64,7 @@ pub fn temperatures() -> Result<HashMap<TemperatureLabel, f32>> {
|
||||||
})
|
})
|
||||||
.filter_map(
|
.filter_map(
|
||||||
|(name, label, item)| match (name.as_slice(), label.as_slice()) {
|
|(name, label, item)| match (name.as_slice(), label.as_slice()) {
|
||||||
(b"k10temp\n", b"Tdie\n") => Some((TemperatureLabel::CPU, item)),
|
(b"k10temp\n", b"Tdie\n") => Some((TemperatureLabel::Cpu, item)),
|
||||||
_ => None,
|
_ => None,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
@ -112,7 +112,7 @@ pub fn cpu_time() -> Result<u64> {
|
||||||
let line = stat
|
let line = stat
|
||||||
.lines()
|
.lines()
|
||||||
.next()
|
.next()
|
||||||
.ok_or(Report::msg("Invalid /proc/stat"))??;
|
.ok_or_else(|| Report::msg("Invalid /proc/stat"))??;
|
||||||
let mut parts = line.split_ascii_whitespace();
|
let mut parts = line.split_ascii_whitespace();
|
||||||
if let (_cpu, Some(user), _nice, Some(system)) =
|
if let (_cpu, Some(user), _nice, Some(system)) =
|
||||||
(parts.next(), parts.next(), parts.next(), parts.next())
|
(parts.next(), parts.next(), parts.next(), parts.next())
|
||||||
|
|
@ -125,7 +125,7 @@ pub fn cpu_time() -> Result<u64> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn network_stats() -> Result<impl Iterator<Item = IOStats>> {
|
pub fn network_stats() -> Result<impl Iterator<Item = IoStats>> {
|
||||||
let stat = BufReader::new(File::open("/proc/net/dev")?);
|
let stat = BufReader::new(File::open("/proc/net/dev")?);
|
||||||
Ok(stat
|
Ok(stat
|
||||||
.lines()
|
.lines()
|
||||||
|
|
@ -154,7 +154,7 @@ pub fn network_stats() -> Result<impl Iterator<Item = IOStats>> {
|
||||||
parts.next(),
|
parts.next(),
|
||||||
parts.next(),
|
parts.next(),
|
||||||
) {
|
) {
|
||||||
Some(IOStats {
|
Some(IoStats {
|
||||||
interface: interface.trim_end_matches(':').into(),
|
interface: interface.trim_end_matches(':').into(),
|
||||||
bytes_sent: bytes_sent.parse().ok()?,
|
bytes_sent: bytes_sent.parse().ok()?,
|
||||||
bytes_received: bytes_received.parse().ok()?,
|
bytes_received: bytes_received.parse().ok()?,
|
||||||
|
|
@ -171,7 +171,7 @@ pub fn hostname() -> Result<String> {
|
||||||
.map_err(|_| Report::msg("non utf8 hostname"))
|
.map_err(|_| Report::msg("non utf8 hostname"))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn disk_stats() -> Result<impl Iterator<Item = IOStats>> {
|
pub fn disk_stats() -> Result<impl Iterator<Item = IoStats>> {
|
||||||
static DISK_REGEX: Lazy<Regex> =
|
static DISK_REGEX: Lazy<Regex> =
|
||||||
Lazy::new(|| Regex::new(r" ([sv]d[a-z]+|nvme\dn\d) ").unwrap());
|
Lazy::new(|| Regex::new(r" ([sv]d[a-z]+|nvme\dn\d) ").unwrap());
|
||||||
|
|
||||||
|
|
@ -190,7 +190,7 @@ pub fn disk_stats() -> Result<impl Iterator<Item = IOStats>> {
|
||||||
let _write_count = parts.next();
|
let _write_count = parts.next();
|
||||||
let _write_merged_count = parts.next();
|
let _write_merged_count = parts.next();
|
||||||
let write_bytes = parts.next()?.parse().ok()?;
|
let write_bytes = parts.next()?.parse().ok()?;
|
||||||
Some(IOStats {
|
Some(IoStats {
|
||||||
interface: name,
|
interface: name,
|
||||||
bytes_sent: write_bytes,
|
bytes_sent: write_bytes,
|
||||||
bytes_received: read_bytes,
|
bytes_received: read_bytes,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue