aboutsummaryrefslogtreecommitdiffstats
path: root/api
diff options
context:
space:
mode:
authorOndrej Fabry <ofabry@cisco.com>2019-02-19 13:57:12 +0100
committerOndrej Fabry <ofabry@cisco.com>2019-02-19 14:02:45 +0100
commit45e38494c1d65ad9178ad15f4048c0ab16f98b77 (patch)
treedfbc70131af8faff5fde24fc1bbca8a72a91c102 /api
parentdf05a70f90a1486a86a4156b1b0d68c94f2098b4 (diff)
Introduce higer-level API for retrieving statistics
- see stats-api example Change-Id: I11d29d32b60d25238e75cb6b86ee34842348ab38 Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
Diffstat (limited to 'api')
-rw-r--r--api/binapi.go (renamed from api/api.go)0
-rw-r--r--api/stats.go79
2 files changed, 79 insertions, 0 deletions
diff --git a/api/api.go b/api/binapi.go
index ac9f8a4..ac9f8a4 100644
--- a/api/api.go
+++ b/api/binapi.go
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)
+}