yanic/data/statistics.go

121 lines
3.3 KiB
Go

package data
/*
Nodes Lua based respondd do not have a integer type.
They always return float.
*/
//Statistics struct
type Statistics struct {
NodeID string `json:"node_id"`
Clients Clients `json:"clients"`
DHCP *DHCP `json:"dhcp"`
RootFsUsage float64 `json:"rootfs_usage,omitempty"`
LoadAverage float64 `json:"loadavg,omitempty"`
Memory Memory `json:"memory,omitempty"`
Uptime float64 `json:"uptime,omitempty"`
Idletime float64 `json:"idletime,omitempty"`
GatewayIPv4 string `json:"gateway,omitempty"`
GatewayIPv6 string `json:"gateway6,omitempty"`
GatewayNexthop string `json:"gateway_nexthop,omitempty"`
Processes struct {
Total uint32 `json:"total"`
Running uint32 `json:"running"`
} `json:"processes,omitempty"`
MeshVPN *MeshVPN `json:"mesh_vpn,omitempty"`
Traffic struct {
Tx *Traffic `json:"tx"`
Rx *Traffic `json:"rx"`
Forward *Traffic `json:"forward"`
MgmtTx *Traffic `json:"mgmt_tx"`
MgmtRx *Traffic `json:"mgmt_rx"`
} `json:"traffic,omitempty"`
Switch map[string]*SwitchPort `json:"switch,omitempty"`
Wireless WirelessStatistics `json:"wireless,omitempty"`
ProcStats *ProcStats `json:"stat,omitempty"`
}
// MeshVPNPeerLink struct
type MeshVPNPeerLink struct {
Established float64 `json:"established"`
}
// MeshVPNPeerGroup struct
type MeshVPNPeerGroup struct {
Peers map[string]*MeshVPNPeerLink `json:"peers"`
Groups map[string]*MeshVPNPeerGroup `json:"groups"`
}
// MeshVPN struct
type MeshVPN struct {
Groups map[string]*MeshVPNPeerGroup `json:"groups,omitempty"`
}
// Traffic struct
type Traffic struct {
Bytes float64 `json:"bytes,omitempty"`
Packets float64 `json:"packets,omitempty"`
Dropped float64 `json:"dropped,omitempty"`
}
// Clients struct
type Clients struct {
Wifi uint32 `json:"wifi"`
Wifi24 uint32 `json:"wifi24"`
Wifi5 uint32 `json:"wifi5"`
Owe uint32 `json:"owe"`
Owe24 uint32 `json:"owe24"`
Owe5 uint32 `json:"owe5"`
Total uint32 `json:"total"`
}
// DHCP struct
type DHCP struct {
// Packet counters
Decline uint32 `json:"dhcp_decline"`
Offer uint32 `json:"dhcp_offer"`
Ack uint32 `json:"dhcp_ack"`
Nak uint32 `json:"dhcp_nak"`
Request uint32 `json:"dhcp_request"`
Discover uint32 `json:"dhcp_discover"`
Inform uint32 `json:"dhcp_inform"`
Release uint32 `json:"dhcp_release"`
LeasesAllocated uint32 `json:"leases_allocated_4"`
LeasesPruned uint32 `json:"leases_pruned_4"`
}
// Memory struct
type Memory struct {
Cached int64 `json:"cached"`
Total int64 `json:"total"`
Buffers int64 `json:"buffers"`
Free int64 `json:"free,omitempty"`
Available int64 `json:"available,omitempty"`
}
// SwitchPort struct
type SwitchPort struct {
Speed uint32 `json:"speed"`
}
// ProcStats struct
type ProcStats struct {
CPU ProcStatsCPU `json:"cpu"`
Intr int64 `json:"intr"`
ContextSwitches int64 `json:"ctxt"`
SoftIRQ int64 `json:"softirq"`
Processes int64 `json:"processes"`
}
// ProcStatsCPU struct
type ProcStatsCPU struct {
User int64 `json:"user"`
Nice int64 `json:"nice"`
System int64 `json:"system"`
Idle int64 `json:"idle"`
IOWait int64 `json:"iowait"`
IRQ int64 `json:"irq"`
SoftIRQ int64 `json:"softirq"`
}