diff --git a/plugins/system/net.go b/plugins/system/net.go index 7b4df524710e4..937eca814f230 100644 --- a/plugins/system/net.go +++ b/plugins/system/net.go @@ -79,6 +79,15 @@ func (s *NetIOStats) Gather(acc plugins.Accumulator) error { acc.Add("drop_out", io.Dropout, tags) } + // Get system wide stats for different network protocols + netprotos, err := s.ps.NetProto() + for _, proto := range netprotos { + for stat, value := range proto.Stats { + name := fmt.Sprintf("%s_%s", proto.Protocol, stat) + acc.Add(name, value, nil) + } + } + return nil } diff --git a/plugins/system/ps.go b/plugins/system/ps.go index 367bb7aca8485..d0c35c62cb833 100644 --- a/plugins/system/ps.go +++ b/plugins/system/ps.go @@ -29,6 +29,7 @@ type PS interface { CPUTimes(perCPU, totalCPU bool) ([]cpu.CPUTimesStat, error) DiskUsage() ([]*disk.DiskUsageStat, error) NetIO() ([]net.NetIOCountersStat, error) + NetProto() ([]net.NetProtoCountersStat, error) DiskIO() (map[string]disk.DiskIOCountersStat, error) VMStat() (*mem.VirtualMemoryStat, error) SwapStat() (*mem.SwapMemoryStat, error) @@ -88,6 +89,10 @@ func (s *systemPS) DiskUsage() ([]*disk.DiskUsageStat, error) { return usage, nil } +func (s *systemPS) NetProto() ([]net.NetProtoCountersStat, error) { + return net.NetProtoCounters(nil) +} + func (s *systemPS) NetIO() ([]net.NetIOCountersStat, error) { return net.NetIOCounters(true) }