renaming plugins -> inputs
This commit is contained in:
70
plugins/inputs/system/netstat.go
Normal file
70
plugins/inputs/system/netstat.go
Normal file
@@ -0,0 +1,70 @@
|
||||
package system
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"syscall"
|
||||
|
||||
"github.com/influxdb/telegraf/plugins/inputs"
|
||||
)
|
||||
|
||||
type NetStats struct {
|
||||
ps PS
|
||||
}
|
||||
|
||||
func (_ *NetStats) Description() string {
|
||||
return "Read metrics about TCP status such as established, time wait etc and UDP sockets counts."
|
||||
}
|
||||
|
||||
var tcpstatSampleConfig = ""
|
||||
|
||||
func (_ *NetStats) SampleConfig() string {
|
||||
return tcpstatSampleConfig
|
||||
}
|
||||
|
||||
func (s *NetStats) Gather(acc inputs.Accumulator) error {
|
||||
netconns, err := s.ps.NetConnections()
|
||||
if err != nil {
|
||||
return fmt.Errorf("error getting net connections info: %s", err)
|
||||
}
|
||||
counts := make(map[string]int)
|
||||
counts["UDP"] = 0
|
||||
|
||||
// TODO: add family to tags or else
|
||||
tags := map[string]string{}
|
||||
for _, netcon := range netconns {
|
||||
if netcon.Type == syscall.SOCK_DGRAM {
|
||||
counts["UDP"] += 1
|
||||
continue // UDP has no status
|
||||
}
|
||||
c, ok := counts[netcon.Status]
|
||||
if !ok {
|
||||
counts[netcon.Status] = 0
|
||||
}
|
||||
counts[netcon.Status] = c + 1
|
||||
}
|
||||
|
||||
fields := map[string]interface{}{
|
||||
"tcp_established": counts["ESTABLISHED"],
|
||||
"tcp_syn_sent": counts["SYN_SENT"],
|
||||
"tcp_syn_recv": counts["SYN_RECV"],
|
||||
"tcp_fin_wait1": counts["FIN_WAIT1"],
|
||||
"tcp_fin_wait2": counts["FIN_WAIT2"],
|
||||
"tcp_time_wait": counts["TIME_WAIT"],
|
||||
"tcp_close": counts["CLOSE"],
|
||||
"tcp_close_wait": counts["CLOSE_WAIT"],
|
||||
"tcp_last_ack": counts["LAST_ACK"],
|
||||
"tcp_listen": counts["LISTEN"],
|
||||
"tcp_closing": counts["CLOSING"],
|
||||
"tcp_none": counts["NONE"],
|
||||
"udp_socket": counts["UDP"],
|
||||
}
|
||||
acc.AddFields("netstat", fields, tags)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func init() {
|
||||
inputs.Add("netstat", func() inputs.Input {
|
||||
return &NetStats{ps: &systemPS{}}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user