mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-21 14:44:00 +00:00
lib/netutil: enable IPv6 UDP listening if -enableTCP6
command-line flag is passed to VictoriaMetrics
This is a follow-up for 18cfc4be7b
See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1131
This commit is contained in:
parent
18cfc4be7b
commit
6378205415
8 changed files with 27 additions and 35 deletions
|
@ -1568,7 +1568,7 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li
|
||||||
-dryRun
|
-dryRun
|
||||||
Whether to check only -promscrape.config and then exit. Unknown config entries are allowed in -promscrape.config by default. This can be changed with -promscrape.config.strictParse
|
Whether to check only -promscrape.config and then exit. Unknown config entries are allowed in -promscrape.config by default. This can be changed with -promscrape.config.strictParse
|
||||||
-enableTCP6
|
-enableTCP6
|
||||||
Whether to enable IPv6 for listening and dialing. By default only IPv4 TCP is used
|
Whether to enable IPv6 for listening and dialing. By default only IPv4 TCP and UDP is used
|
||||||
-envflag.enable
|
-envflag.enable
|
||||||
Whether to enable reading flags from environment variables additionally to command line. Command line flag values have priority over values from environment vars. Flags are read only from command line if this flag isn't set
|
Whether to enable reading flags from environment variables additionally to command line. Command line flag values have priority over values from environment vars. Flags are read only from command line if this flag isn't set
|
||||||
-envflag.prefix string
|
-envflag.prefix string
|
||||||
|
@ -1624,6 +1624,8 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li
|
||||||
Trim timestamps for Influx line protocol data to this duration. Minimum practical duration is 1ms. Higher duration (i.e. 1s) may be used for reducing disk space usage for timestamp data (default 1ms)
|
Trim timestamps for Influx line protocol data to this duration. Minimum practical duration is 1ms. Higher duration (i.e. 1s) may be used for reducing disk space usage for timestamp data (default 1ms)
|
||||||
-insert.maxQueueDuration duration
|
-insert.maxQueueDuration duration
|
||||||
The maximum duration for waiting in the queue for insert requests due to -maxConcurrentInserts (default 1m0s)
|
The maximum duration for waiting in the queue for insert requests due to -maxConcurrentInserts (default 1m0s)
|
||||||
|
-logNewSeries
|
||||||
|
Whether to log new series. This option is for debug purposes only. It can lead to performance issues when big number of new series are ingested into VictoriaMetrics
|
||||||
-loggerDisableTimestamps
|
-loggerDisableTimestamps
|
||||||
Whether to disable writing timestamps in logs
|
Whether to disable writing timestamps in logs
|
||||||
-loggerErrorsPerSecondLimit int
|
-loggerErrorsPerSecondLimit int
|
||||||
|
@ -1710,7 +1712,7 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li
|
||||||
-promscrape.kubernetesSDCheckInterval duration
|
-promscrape.kubernetesSDCheckInterval duration
|
||||||
Interval for checking for changes in Kubernetes API server. This works only if kubernetes_sd_configs is configured in '-promscrape.config' file. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config for details (default 30s)
|
Interval for checking for changes in Kubernetes API server. This works only if kubernetes_sd_configs is configured in '-promscrape.config' file. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config for details (default 30s)
|
||||||
-promscrape.maxDroppedTargets int
|
-promscrape.maxDroppedTargets int
|
||||||
The maximum number of droppedTargets shown at /api/v1/targets page. Increase this value if your setup drops more scrape targets during relabeling and you need investigating labels for all the dropped targets. Note that the increased number of tracked dropped targets may result in increased memory usage (default 1000)
|
The maximum number of droppedTargets to show at /api/v1/targets page. Increase this value if your setup drops more scrape targets during relabeling and you need investigating labels for all the dropped targets. Note that the increased number of tracked dropped targets may result in increased memory usage (default 1000)
|
||||||
-promscrape.maxScrapeSize size
|
-promscrape.maxScrapeSize size
|
||||||
The maximum size of scrape response in bytes to process from Prometheus targets. Bigger responses are rejected
|
The maximum size of scrape response in bytes to process from Prometheus targets. Bigger responses are rejected
|
||||||
Supports the following optional suffixes for size values: KB, MB, GB, KiB, MiB, GiB (default 16777216)
|
Supports the following optional suffixes for size values: KB, MB, GB, KiB, MiB, GiB (default 16777216)
|
||||||
|
@ -1766,7 +1768,7 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li
|
||||||
The minimum interval for staleness calculations. This flag could be useful for removing gaps on graphs generated from time series with irregular intervals between samples. See also '-search.maxStalenessInterval'
|
The minimum interval for staleness calculations. This flag could be useful for removing gaps on graphs generated from time series with irregular intervals between samples. See also '-search.maxStalenessInterval'
|
||||||
-search.queryStats.lastQueriesCount int
|
-search.queryStats.lastQueriesCount int
|
||||||
Query stats for /api/v1/status/top_queries is tracked on this number of last queries. Zero value disables query stats tracking (default 20000)
|
Query stats for /api/v1/status/top_queries is tracked on this number of last queries. Zero value disables query stats tracking (default 20000)
|
||||||
-search.queryStats.minQueryDuration int
|
-search.queryStats.minQueryDuration duration
|
||||||
The minimum duration for queries to track in query stats at /api/v1/status/top_queries. Queries with lower duration are ignored in query stats
|
The minimum duration for queries to track in query stats at /api/v1/status/top_queries. Queries with lower duration are ignored in query stats
|
||||||
-search.resetCacheAuthKey string
|
-search.resetCacheAuthKey string
|
||||||
Optional authKey for resetting rollup cache via /internal/resetRollupResultCache call
|
Optional authKey for resetting rollup cache via /internal/resetRollupResultCache call
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
package remotewrite
|
package remotewrite
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"net"
|
"net"
|
||||||
"strings"
|
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
@ -12,12 +10,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func statDial(network, addr string) (conn net.Conn, err error) {
|
func statDial(network, addr string) (conn net.Conn, err error) {
|
||||||
if !strings.HasPrefix(network, "tcp") {
|
network = netutil.GetTCPNetwork()
|
||||||
return nil, fmt.Errorf("unexpected network passed to statDial: %q; it must start from `tcp`", network)
|
|
||||||
}
|
|
||||||
if !netutil.TCP6Enabled() {
|
|
||||||
network = "tcp4"
|
|
||||||
}
|
|
||||||
conn, err = net.DialTimeout(network, addr, 5*time.Second)
|
conn, err = net.DialTimeout(network, addr, 5*time.Second)
|
||||||
dialsTotal.Inc()
|
dialsTotal.Inc()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
* FEATURE: add `-influx.databaseNames` command-line flag, which can be used for accepting data from some Telegraf plugins such as [fluentd plugin](https://github.com/fangli/fluent-plugin-influxdb). See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1124).
|
* FEATURE: add `-influx.databaseNames` command-line flag, which can be used for accepting data from some Telegraf plugins such as [fluentd plugin](https://github.com/fangli/fluent-plugin-influxdb). See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1124).
|
||||||
* FEATURE: add `-logNewSeries` command-line flag, which can be used for debugging the source of time series churn rate.
|
* FEATURE: add `-logNewSeries` command-line flag, which can be used for debugging the source of time series churn rate.
|
||||||
* FEATURE: publish Windows builds for [vmagent](https://victoriametrics.github.io/vmagent.html), [vmalert](https://victoriametrics.github.io/vmalert.html), [vmauth](https://victoriametrics.github.io/vmauth.html) and [vmctl](https://victoriametrics.github.io/vmctl.html) at `vmutils-windows-*.zip` archives at [releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases).
|
* FEATURE: publish Windows builds for [vmagent](https://victoriametrics.github.io/vmagent.html), [vmalert](https://victoriametrics.github.io/vmalert.html), [vmauth](https://victoriametrics.github.io/vmauth.html) and [vmctl](https://victoriametrics.github.io/vmctl.html) at `vmutils-windows-*.zip` archives at [releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases).
|
||||||
|
* FEATURE: listen for IPv6 UDP if `-enableTCP6` command-line flag is passed to VictoriaMetrics. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1131).
|
||||||
|
|
||||||
* BUGFIX: vmagent: prevent from high CPU usage bug during failing scrapes with small `scrape_timeout` (less than a few seconds).
|
* BUGFIX: vmagent: prevent from high CPU usage bug during failing scrapes with small `scrape_timeout` (less than a few seconds).
|
||||||
* BUGFIX: vmagent: reduce memory usage when Kubernetes service discovery is used in big number of distinct scrape config jobs by sharing Kubernetes object cache. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1113
|
* BUGFIX: vmagent: reduce memory usage when Kubernetes service discovery is used in big number of distinct scrape config jobs by sharing Kubernetes object cache. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1113
|
||||||
|
|
|
@ -1568,7 +1568,7 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li
|
||||||
-dryRun
|
-dryRun
|
||||||
Whether to check only -promscrape.config and then exit. Unknown config entries are allowed in -promscrape.config by default. This can be changed with -promscrape.config.strictParse
|
Whether to check only -promscrape.config and then exit. Unknown config entries are allowed in -promscrape.config by default. This can be changed with -promscrape.config.strictParse
|
||||||
-enableTCP6
|
-enableTCP6
|
||||||
Whether to enable IPv6 for listening and dialing. By default only IPv4 TCP is used
|
Whether to enable IPv6 for listening and dialing. By default only IPv4 TCP and UDP is used
|
||||||
-envflag.enable
|
-envflag.enable
|
||||||
Whether to enable reading flags from environment variables additionally to command line. Command line flag values have priority over values from environment vars. Flags are read only from command line if this flag isn't set
|
Whether to enable reading flags from environment variables additionally to command line. Command line flag values have priority over values from environment vars. Flags are read only from command line if this flag isn't set
|
||||||
-envflag.prefix string
|
-envflag.prefix string
|
||||||
|
@ -1624,6 +1624,8 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li
|
||||||
Trim timestamps for Influx line protocol data to this duration. Minimum practical duration is 1ms. Higher duration (i.e. 1s) may be used for reducing disk space usage for timestamp data (default 1ms)
|
Trim timestamps for Influx line protocol data to this duration. Minimum practical duration is 1ms. Higher duration (i.e. 1s) may be used for reducing disk space usage for timestamp data (default 1ms)
|
||||||
-insert.maxQueueDuration duration
|
-insert.maxQueueDuration duration
|
||||||
The maximum duration for waiting in the queue for insert requests due to -maxConcurrentInserts (default 1m0s)
|
The maximum duration for waiting in the queue for insert requests due to -maxConcurrentInserts (default 1m0s)
|
||||||
|
-logNewSeries
|
||||||
|
Whether to log new series. This option is for debug purposes only. It can lead to performance issues when big number of new series are ingested into VictoriaMetrics
|
||||||
-loggerDisableTimestamps
|
-loggerDisableTimestamps
|
||||||
Whether to disable writing timestamps in logs
|
Whether to disable writing timestamps in logs
|
||||||
-loggerErrorsPerSecondLimit int
|
-loggerErrorsPerSecondLimit int
|
||||||
|
@ -1710,7 +1712,7 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li
|
||||||
-promscrape.kubernetesSDCheckInterval duration
|
-promscrape.kubernetesSDCheckInterval duration
|
||||||
Interval for checking for changes in Kubernetes API server. This works only if kubernetes_sd_configs is configured in '-promscrape.config' file. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config for details (default 30s)
|
Interval for checking for changes in Kubernetes API server. This works only if kubernetes_sd_configs is configured in '-promscrape.config' file. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config for details (default 30s)
|
||||||
-promscrape.maxDroppedTargets int
|
-promscrape.maxDroppedTargets int
|
||||||
The maximum number of droppedTargets shown at /api/v1/targets page. Increase this value if your setup drops more scrape targets during relabeling and you need investigating labels for all the dropped targets. Note that the increased number of tracked dropped targets may result in increased memory usage (default 1000)
|
The maximum number of droppedTargets to show at /api/v1/targets page. Increase this value if your setup drops more scrape targets during relabeling and you need investigating labels for all the dropped targets. Note that the increased number of tracked dropped targets may result in increased memory usage (default 1000)
|
||||||
-promscrape.maxScrapeSize size
|
-promscrape.maxScrapeSize size
|
||||||
The maximum size of scrape response in bytes to process from Prometheus targets. Bigger responses are rejected
|
The maximum size of scrape response in bytes to process from Prometheus targets. Bigger responses are rejected
|
||||||
Supports the following optional suffixes for size values: KB, MB, GB, KiB, MiB, GiB (default 16777216)
|
Supports the following optional suffixes for size values: KB, MB, GB, KiB, MiB, GiB (default 16777216)
|
||||||
|
@ -1766,7 +1768,7 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li
|
||||||
The minimum interval for staleness calculations. This flag could be useful for removing gaps on graphs generated from time series with irregular intervals between samples. See also '-search.maxStalenessInterval'
|
The minimum interval for staleness calculations. This flag could be useful for removing gaps on graphs generated from time series with irregular intervals between samples. See also '-search.maxStalenessInterval'
|
||||||
-search.queryStats.lastQueriesCount int
|
-search.queryStats.lastQueriesCount int
|
||||||
Query stats for /api/v1/status/top_queries is tracked on this number of last queries. Zero value disables query stats tracking (default 20000)
|
Query stats for /api/v1/status/top_queries is tracked on this number of last queries. Zero value disables query stats tracking (default 20000)
|
||||||
-search.queryStats.minQueryDuration int
|
-search.queryStats.minQueryDuration duration
|
||||||
The minimum duration for queries to track in query stats at /api/v1/status/top_queries. Queries with lower duration are ignored in query stats
|
The minimum duration for queries to track in query stats at /api/v1/status/top_queries. Queries with lower duration are ignored in query stats
|
||||||
-search.resetCacheAuthKey string
|
-search.resetCacheAuthKey string
|
||||||
Optional authKey for resetting rollup cache via /internal/resetRollupResultCache call
|
Optional authKey for resetting rollup cache via /internal/resetRollupResultCache call
|
||||||
|
|
|
@ -11,14 +11,14 @@ import (
|
||||||
"github.com/VictoriaMetrics/metrics"
|
"github.com/VictoriaMetrics/metrics"
|
||||||
)
|
)
|
||||||
|
|
||||||
var enableTCP6 = flag.Bool("enableTCP6", false, "Whether to enable IPv6 for listening and dialing. By default only IPv4 TCP is used")
|
var enableTCP6 = flag.Bool("enableTCP6", false, "Whether to enable IPv6 for listening and dialing. By default only IPv4 TCP and UDP is used")
|
||||||
|
|
||||||
// NewTCPListener returns new TCP listener for the given addr.
|
// NewTCPListener returns new TCP listener for the given addr.
|
||||||
//
|
//
|
||||||
// name is used for exported metrics. Each listener in the program must have
|
// name is used for exported metrics. Each listener in the program must have
|
||||||
// distinct name.
|
// distinct name.
|
||||||
func NewTCPListener(name, addr string) (*TCPListener, error) {
|
func NewTCPListener(name, addr string) (*TCPListener, error) {
|
||||||
network := getNetwork()
|
network := GetTCPNetwork()
|
||||||
ln, err := net.Listen(network, addr)
|
ln, err := net.Listen(network, addr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -38,7 +38,17 @@ func TCP6Enabled() bool {
|
||||||
return *enableTCP6
|
return *enableTCP6
|
||||||
}
|
}
|
||||||
|
|
||||||
func getNetwork() string {
|
// GetUDPNetwork returns current udp network.
|
||||||
|
func GetUDPNetwork() string {
|
||||||
|
if *enableTCP6 {
|
||||||
|
// Enable both udp4 and udp6
|
||||||
|
return "udp"
|
||||||
|
}
|
||||||
|
return "udp4"
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTCPNetwork returns current tcp network.
|
||||||
|
func GetTCPNetwork() string {
|
||||||
if *enableTCP6 {
|
if *enableTCP6 {
|
||||||
// Enable both tcp4 and tcp6
|
// Enable both tcp4 and tcp6
|
||||||
return "tcp"
|
return "tcp"
|
||||||
|
|
|
@ -1,14 +0,0 @@
|
||||||
package netutil
|
|
||||||
|
|
||||||
import "flag"
|
|
||||||
|
|
||||||
var enableUDP6 = flag.Bool("enableUDP6", false, "Whether to enable IPv6 for listening. By default only IPv4 UDP is used")
|
|
||||||
|
|
||||||
// GetUDPNetwork returns current udp network.
|
|
||||||
func GetUDPNetwork() string {
|
|
||||||
if *enableUDP6 {
|
|
||||||
// Enable both udp4 and udp6
|
|
||||||
return "udp"
|
|
||||||
}
|
|
||||||
return "udp4"
|
|
||||||
}
|
|
|
@ -17,6 +17,7 @@ import (
|
||||||
|
|
||||||
func statStdDial(ctx context.Context, network, addr string) (net.Conn, error) {
|
func statStdDial(ctx context.Context, network, addr string) (net.Conn, error) {
|
||||||
d := getStdDialer()
|
d := getStdDialer()
|
||||||
|
network = netutil.GetTCPNetwork()
|
||||||
conn, err := d.DialContext(ctx, network, addr)
|
conn, err := d.DialContext(ctx, network, addr)
|
||||||
dialsTotal.Inc()
|
dialsTotal.Inc()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -138,10 +138,7 @@ func tlsServerName(addr string) string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func defaultDialFunc(addr string) (net.Conn, error) {
|
func defaultDialFunc(addr string) (net.Conn, error) {
|
||||||
network := "tcp4"
|
network := netutil.GetTCPNetwork()
|
||||||
if netutil.TCP6Enabled() {
|
|
||||||
network = "tcp"
|
|
||||||
}
|
|
||||||
// Do not use fasthttp.Dial because of https://github.com/VictoriaMetrics/VictoriaMetrics/issues/987
|
// Do not use fasthttp.Dial because of https://github.com/VictoriaMetrics/VictoriaMetrics/issues/987
|
||||||
return net.DialTimeout(network, addr, 5*time.Second)
|
return net.DialTimeout(network, addr, 5*time.Second)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue