-
-
Notifications
You must be signed in to change notification settings - Fork 322
/
payload.rs
116 lines (99 loc) · 2.88 KB
/
payload.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#![deny(warnings)]
use serde::{Deserialize, Serialize};
use stat_common::server_status::{DiskInfo, IpInfo, SysInfo};
use std::time::{SystemTime, UNIX_EPOCH};
fn default_as_true() -> bool {
true
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct HostStat {
pub name: String,
#[serde(default = "Default::default")]
pub alias: String,
#[serde(rename = "type", default = "Default::default")]
pub host_type: String,
#[serde(default = "Default::default")]
pub location: String,
#[serde(default = "default_as_true")]
pub notify: bool,
#[serde(default = "bool::default")]
pub vnstat: bool,
#[serde(default = "default_as_true")]
pub online4: bool,
#[serde(default = "default_as_true")]
pub online6: bool,
#[serde(rename(deserialize = "uptime"), skip_serializing)]
pub uptime: u64,
#[serde(rename(serialize = "uptime"), skip_deserializing)]
pub uptime_str: String,
pub load_1: f64,
pub load_5: f64,
pub load_15: f64,
pub ping_10010: f64,
pub ping_189: f64,
pub ping_10086: f64,
pub time_10010: f64,
pub time_189: f64,
pub time_10086: f64,
#[serde(rename(deserialize = "tcp"))]
pub tcp_count: u32,
#[serde(rename(deserialize = "udp"))]
pub udp_count: u32,
#[serde(rename(deserialize = "process"))]
pub process_count: u32,
#[serde(rename(deserialize = "thread"))]
pub thread_count: u32,
pub network_rx: u64,
pub network_tx: u64,
pub network_in: u64,
pub network_out: u64,
#[serde(default)]
pub last_network_in: u64,
#[serde(default)]
pub last_network_out: u64,
pub cpu: f64,
pub memory_total: u64,
pub memory_used: u64,
pub swap_total: u64,
pub swap_used: u64,
pub hdd_total: u64,
pub hdd_used: u64,
#[serde(skip_deserializing)]
pub labels: String,
#[serde(skip_deserializing)]
pub custom: String,
#[serde(skip_serializing)]
pub ip_info: Option<IpInfo>,
#[serde(skip_serializing)]
pub sys_info: Option<SysInfo>,
// group
#[serde(default = "Default::default")]
pub gid: String,
#[serde(default = "Default::default")]
pub weight: u64,
// user data
#[serde(skip_deserializing)]
pub latest_ts: u64,
#[serde(skip_serializing, skip_deserializing)]
pub pos: usize,
#[serde(skip_serializing, skip_deserializing)]
pub disabled: bool,
// false: KiB (1024), true: KB (1000)
#[serde(default = "Default::default")]
pub si: bool,
#[serde(default = "Default::default", skip_serializing)]
pub disks: Vec<DiskInfo>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct StatsResp {
pub updated: u64,
pub servers: Vec<HostStat>,
}
impl StatsResp {
pub fn new() -> Self {
Self {
updated: SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_secs(),
servers: Vec::new(),
}
}
}