Add keep alive support to the TCP mode of statsd (#3781)
This commit is contained in:
parent
6406abbc89
commit
cd620ac144
|
@ -3045,6 +3045,13 @@
|
||||||
#
|
#
|
||||||
# ## MaxTCPConnection - applicable when protocol is set to tcp (default=250)
|
# ## MaxTCPConnection - applicable when protocol is set to tcp (default=250)
|
||||||
# max_tcp_connections = 250
|
# max_tcp_connections = 250
|
||||||
|
# ## Enable TCP keep alive probes (default=false)
|
||||||
|
# tcp_keep_alive = false
|
||||||
|
#
|
||||||
|
# ## Specifies the keep-alive period for an active network connection.
|
||||||
|
# ## Only applies to TCP sockets and will be ignored if tcp_keep_alive is false.
|
||||||
|
# ## Defaults to the OS configuration.
|
||||||
|
# # tcp_keep_alive_period = "2h"
|
||||||
#
|
#
|
||||||
# ## Address and port to host UDP listener on
|
# ## Address and port to host UDP listener on
|
||||||
# service_address = ":8125"
|
# service_address = ":8125"
|
||||||
|
|
|
@ -10,6 +10,14 @@
|
||||||
|
|
||||||
## MaxTCPConnection - applicable when protocol is set to tcp (default=250)
|
## MaxTCPConnection - applicable when protocol is set to tcp (default=250)
|
||||||
max_tcp_connections = 250
|
max_tcp_connections = 250
|
||||||
|
|
||||||
|
## Enable TCP keep alive probes (default=false)
|
||||||
|
tcp_keep_alive = false
|
||||||
|
|
||||||
|
## Specifies the keep-alive period for an active network connection.
|
||||||
|
## Only applies to TCP sockets and will be ignored if tcp_keep_alive is false.
|
||||||
|
## Defaults to the OS configuration.
|
||||||
|
# tcp_keep_alive_period = "2h"
|
||||||
|
|
||||||
## Address and port to host UDP listener on
|
## Address and port to host UDP listener on
|
||||||
service_address = ":8125"
|
service_address = ":8125"
|
||||||
|
@ -157,6 +165,8 @@ metric type:
|
||||||
- **protocol** string: Protocol used in listener - tcp or udp options
|
- **protocol** string: Protocol used in listener - tcp or udp options
|
||||||
- **max_tcp_connections** []int: Maximum number of concurrent TCP connections
|
- **max_tcp_connections** []int: Maximum number of concurrent TCP connections
|
||||||
to allow. Used when protocol is set to tcp.
|
to allow. Used when protocol is set to tcp.
|
||||||
|
- **tcp_keep_alive** boolean: Enable TCP keep alive probes
|
||||||
|
- **tcp_keep_alive_period** internal.Duration: Specifies the keep-alive period for an active network connection
|
||||||
- **service_address** string: Address to listen for statsd UDP packets on
|
- **service_address** string: Address to listen for statsd UDP packets on
|
||||||
- **delete_gauges** boolean: Delete gauges on every collection interval
|
- **delete_gauges** boolean: Delete gauges on every collection interval
|
||||||
- **delete_counters** boolean: Delete counters on every collection interval
|
- **delete_counters** boolean: Delete counters on every collection interval
|
||||||
|
|
|
@ -113,6 +113,9 @@ type Statsd struct {
|
||||||
|
|
||||||
MaxTCPConnections int `toml:"max_tcp_connections"`
|
MaxTCPConnections int `toml:"max_tcp_connections"`
|
||||||
|
|
||||||
|
TCPKeepAlive bool `toml:"tcp_keep_alive"`
|
||||||
|
TCPKeepAlivePeriod *internal.Duration `toml:"tcp_keep_alive_period"`
|
||||||
|
|
||||||
graphiteParser *graphite.GraphiteParser
|
graphiteParser *graphite.GraphiteParser
|
||||||
|
|
||||||
acc telegraf.Accumulator
|
acc telegraf.Accumulator
|
||||||
|
@ -177,6 +180,14 @@ const sampleConfig = `
|
||||||
## MaxTCPConnection - applicable when protocol is set to tcp (default=250)
|
## MaxTCPConnection - applicable when protocol is set to tcp (default=250)
|
||||||
max_tcp_connections = 250
|
max_tcp_connections = 250
|
||||||
|
|
||||||
|
## Enable TCP keep alive probes (default=false)
|
||||||
|
tcp_keep_alive = false
|
||||||
|
|
||||||
|
## Specifies the keep-alive period for an active network connection.
|
||||||
|
## Only applies to TCP sockets and will be ignored if tcp_keep_alive is false.
|
||||||
|
## Defaults to the OS configuration.
|
||||||
|
# tcp_keep_alive_period = "2h"
|
||||||
|
|
||||||
## Address and port to host UDP listener on
|
## Address and port to host UDP listener on
|
||||||
service_address = ":8125"
|
service_address = ":8125"
|
||||||
|
|
||||||
|
@ -361,6 +372,18 @@ func (s *Statsd) tcpListen() error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if s.TCPKeepAlive {
|
||||||
|
if err = conn.SetKeepAlive(true); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if s.TCPKeepAlivePeriod != nil {
|
||||||
|
if err = conn.SetKeepAlivePeriod(s.TCPKeepAlivePeriod.Duration); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
select {
|
select {
|
||||||
case <-s.accept:
|
case <-s.accept:
|
||||||
// not over connection limit, handle the connection properly.
|
// not over connection limit, handle the connection properly.
|
||||||
|
@ -863,6 +886,7 @@ func init() {
|
||||||
Protocol: defaultProtocol,
|
Protocol: defaultProtocol,
|
||||||
ServiceAddress: ":8125",
|
ServiceAddress: ":8125",
|
||||||
MaxTCPConnections: 250,
|
MaxTCPConnections: 250,
|
||||||
|
TCPKeepAlive: false,
|
||||||
MetricSeparator: "_",
|
MetricSeparator: "_",
|
||||||
AllowedPendingMessages: defaultAllowPendingMessage,
|
AllowedPendingMessages: defaultAllowPendingMessage,
|
||||||
DeleteCounters: true,
|
DeleteCounters: true,
|
||||||
|
|
Loading…
Reference in New Issue