From: Dominik Csapak <d.csapak@proxmox.com>
To: pbs-devel@lists.proxmox.com
Subject: [pbs-devel] [PATCH proxmox-backup 3/6] api2/node/status: extend node status
Date: Mon, 19 Apr 2021 13:02:03 +0200 [thread overview]
Message-ID: <20210419110206.28498-4-d.csapak@proxmox.com> (raw)
In-Reply-To: <20210419110206.28498-1-d.csapak@proxmox.com>
to be more on par with pve
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
src/api2/node/status.rs | 37 +++++++++++++++++++++++++++++++
src/api2/types/mod.rs | 49 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 86 insertions(+)
diff --git a/src/api2/node/status.rs b/src/api2/node/status.rs
index d5df05ff..a82c0c8a 100644
--- a/src/api2/node/status.rs
+++ b/src/api2/node/status.rs
@@ -12,6 +12,16 @@ use crate::api2::types::*;
use crate::config::acl::{PRIV_SYS_AUDIT, PRIV_SYS_POWER_MANAGEMENT};
use crate::tools::cert::CertInfo;
+impl std::convert::From<procfs::ProcFsCPUInfo> for NodeCpuInformation {
+ fn from(info: procfs::ProcFsCPUInfo) -> Self {
+ Self {
+ model: info.model,
+ sockets: info.sockets,
+ cpus: info.cpus,
+ }
+ }
+}
+
#[api(
input: {
properties: {
@@ -40,13 +50,40 @@ fn get_status(
free: meminfo.memfree,
};
+ let swap = NodeSwapCounters {
+ total: meminfo.swaptotal,
+ used: meminfo.swapused,
+ free: meminfo.swapfree,
+ };
+
let kstat: procfs::ProcFsStat = procfs::read_proc_stat()?;
let cpu = kstat.cpu;
+ let wait = kstat.iowait_percent;
+
+ let loadavg = procfs::Loadavg::read()?;
+ let loadavg = [loadavg.one(), loadavg.five(), loadavg.fifteen()];
+
+ let cpuinfo = procfs::read_cpuinfo()?;
+ let cpuinfo = cpuinfo.into();
+
+ let uname = nix::sys::utsname::uname();
+ let kversion = format!(
+ "{} {} {}",
+ uname.sysname(),
+ uname.release(),
+ uname.version()
+ );
Ok(NodeStatus {
memory,
+ swap,
root: crate::tools::disks::disk_usage(Path::new("/"))?,
+ uptime: procfs::read_proc_uptime()?.0 as u64,
+ loadavg,
+ kversion,
+ cpuinfo,
cpu,
+ wait,
info: NodeInformation {
fingerprint: CertInfo::new()?.fingerprint()?,
},
diff --git a/src/api2/types/mod.rs b/src/api2/types/mod.rs
index ac4957ac..aa161fee 100644
--- a/src/api2/types/mod.rs
+++ b/src/api2/types/mod.rs
@@ -1517,6 +1517,19 @@ pub struct NodeMemoryCounters {
pub free: u64,
}
+#[api]
+#[derive(Serialize, Deserialize, Default)]
+#[serde(rename_all = "kebab-case")]
+/// Node swap usage counters
+pub struct NodeSwapCounters {
+ /// Total swap
+ pub total: u64,
+ /// Used swap
+ pub used: u64,
+ /// Free swap
+ pub free: u64,
+}
+
#[api]
#[derive(Serialize,Deserialize,Default)]
#[serde(rename_all = "kebab-case")]
@@ -1526,6 +1539,19 @@ pub struct NodeInformation {
pub fingerprint: String,
}
+#[api]
+#[derive(Serialize, Deserialize, Default)]
+#[serde(rename_all = "kebab-case")]
+/// Information about the CPU
+pub struct NodeCpuInformation {
+ /// The CPU model
+ pub model: String,
+ /// The number of CPU sockets
+ pub sockets: usize,
+ /// The number of CPU cores (incl. threads)
+ pub cpus: usize,
+}
+
#[api(
properties: {
memory: {
@@ -1534,6 +1560,19 @@ pub struct NodeInformation {
root: {
type: StorageStatus,
},
+ swap: {
+ type: NodeSwapCounters,
+ },
+ loadavg: {
+ type: Array,
+ items: {
+ type: Number,
+ description: "the load",
+ }
+ },
+ cpuinfo: {
+ type: NodeCpuInformation,
+ },
info: {
type: NodeInformation,
}
@@ -1545,7 +1584,17 @@ pub struct NodeInformation {
pub struct NodeStatus {
pub memory: NodeMemoryCounters,
pub root: StorageStatus,
+ pub swap: NodeSwapCounters,
+ /// The current uptime of the server.
+ pub uptime: u64,
+ /// Load for 1, 5 and 15 minutes.
+ pub loadavg: [f64; 3],
+ /// The current kernel version.
+ pub kversion: String,
/// Total CPU usage since last query.
pub cpu: f64,
+ /// Total IO wait since last query.
+ pub wait: f64,
+ pub cpuinfo: NodeCpuInformation,
pub info: NodeInformation,
}
--
2.20.1
next prev parent reply other threads:[~2021-04-19 11:02 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-19 11:02 [pbs-devel] [PATCH proxmox-backup 0/6] make node info panel similar to pve Dominik Csapak
2021-04-19 11:02 ` [pbs-devel] [PATCH proxmox-backup 1/6] api2/types: add necessary types for node status Dominik Csapak
2021-04-23 9:36 ` [pbs-devel] applied: " Thomas Lamprecht
2021-04-19 11:02 ` [pbs-devel] [PATCH proxmox-backup 2/6] api2/nodes/status: use NodeStatus struct Dominik Csapak
2021-04-23 9:36 ` [pbs-devel] applied: " Thomas Lamprecht
2021-04-19 11:02 ` Dominik Csapak [this message]
2021-04-23 9:36 ` [pbs-devel] applied: [PATCH proxmox-backup 3/6] api2/node/status: extend node status Thomas Lamprecht
2021-04-19 11:02 ` [pbs-devel] [PATCH proxmox-backup 4/6] ui: factor out NodeInfoPanel Dominik Csapak
2021-04-19 11:02 ` [pbs-devel] [PATCH proxmox-backup 5/6] ui: panel/NodeInfo: make it like in pve Dominik Csapak
2021-04-19 11:02 ` [pbs-devel] [PATCH proxmox-backup 6/6] ui: window/Settings: add summarycolumns settings Dominik Csapak
2021-04-23 9:39 ` [pbs-devel] [PATCH proxmox-backup 0/6] make node info panel similar to pve Thomas Lamprecht
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210419110206.28498-4-d.csapak@proxmox.com \
--to=d.csapak@proxmox.com \
--cc=pbs-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal