aboutsummaryrefslogtreecommitdiffstats
path: root/api/stats.go
diff options
context:
space:
mode:
Diffstat (limited to 'api/stats.go')
-rw-r--r--api/stats.go79
1 files changed, 79 insertions, 0 deletions
diff --git a/api/stats.go b/api/stats.go
new file mode 100644
index 0000000..ec623c7
--- /dev/null
+++ b/api/stats.go
@@ -0,0 +1,79 @@
+package api
+
+// SystemStats represents global system statistics.
+type SystemStats struct {
+ VectorRate float64
+ InputRate float64
+ LastUpdate float64
+ LastStatsClear float64
+ Heartbeat float64
+}
+
+// NodeStats represents per node statistics.
+type NodeStats struct {
+ Nodes []NodeCounters
+}
+
+// NodeCounters represents node counters.
+type NodeCounters struct {
+ NodeIndex uint32
+ // TODO: node name is not currently retrievable via stats API (will be most likely added in 19.04)
+ //NodeName string
+
+ Clocks uint64
+ Vectors uint64
+ Calls uint64
+ Suspends uint64
+}
+
+// InterfaceStats represents per interface statistics.
+type InterfaceStats struct {
+ Interfaces []InterfaceCounters
+}
+
+// InterfaceCounters represents interface counters.
+type InterfaceCounters struct {
+ InterfaceIndex uint32
+ // TODO: interface name is not currently retrievable via stats API (will be most likely added in 19.04)
+ //InterfaceName string
+
+ RxPackets uint64
+ RxBytes uint64
+ RxErrors uint64
+ TxPackets uint64
+ TxBytes uint64
+ TxErrors uint64
+
+ RxUnicast [2]uint64 // packets[0], bytes[1]
+ RxMulticast [2]uint64 // packets[0], bytes[1]
+ RxBroadcast [2]uint64 // packets[0], bytes[1]
+ TxUnicastMiss [2]uint64 // packets[0], bytes[1]
+ TxMulticast [2]uint64 // packets[0], bytes[1]
+ TxBroadcast [2]uint64 // packets[0], bytes[1]
+
+ Drops uint64
+ Punts uint64
+ IP4 uint64
+ IP6 uint64
+ RxNoBuf uint64
+ RxMiss uint64
+}
+
+// ErrorStats represents statistics per error counter.
+type ErrorStats struct {
+ Errors []ErrorCounter
+}
+
+// ErrorCounter represents error counter.
+type ErrorCounter struct {
+ CounterName string
+ Value uint64
+}
+
+// StatsProvider provides the methods for getting statistics.
+type StatsProvider interface {
+ GetSystemStats() (*SystemStats, error)
+ GetNodeStats() (*NodeStats, error)
+ GetInterfaceStats() (*InterfaceStats, error)
+ GetErrorStats(names ...string) (*ErrorStats, error)
+}