diff options
author | Ondrej Fabry <ofabry@cisco.com> | 2019-02-19 13:57:12 +0100 |
---|---|---|
committer | Ondrej Fabry <ofabry@cisco.com> | 2019-02-19 14:02:45 +0100 |
commit | 45e38494c1d65ad9178ad15f4048c0ab16f98b77 (patch) | |
tree | dfbc70131af8faff5fde24fc1bbca8a72a91c102 /api | |
parent | df05a70f90a1486a86a4156b1b0d68c94f2098b4 (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.go | 79 |
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) +} |