From 36edba9bfbb6baed4e74078d83851cef2bd2920a Mon Sep 17 00:00:00 2001 From: Alexander Marshalov <_@marshalov.org> Date: Thu, 23 Mar 2023 09:34:12 +0100 Subject: [PATCH] added configCheckInterval flag for vmauth (#3990) (#3991) * added configCheckInterval flag for vmauth (#3990) Signed-off-by: Alexander Marshalov <_@marshalov.org> --- app/vmauth/README.md | 2 ++ app/vmauth/auth_config.go | 13 +++++++++++++ docs/CHANGELOG.md | 1 + docs/vmauth.md | 2 ++ 4 files changed, 18 insertions(+) diff --git a/app/vmauth/README.md b/app/vmauth/README.md index c43a78d9a..64611f0cd 100644 --- a/app/vmauth/README.md +++ b/app/vmauth/README.md @@ -260,6 +260,8 @@ See the docs at https://docs.victoriametrics.com/vmauth.html . -auth.config string Path to auth config. It can point either to local file or to http url. See https://docs.victoriametrics.com/vmauth.html for details on the format of this auth config + -configCheckInterval duration + Interval for config file re-read. Zero value disables config re-reading. By default, refreshing is disabled, send SIGHUP for config refresh. -enableTCP6 Whether to enable IPv6 for listening and dialing. By default only IPv4 TCP and UDP is used -envflag.enable diff --git a/app/vmauth/auth_config.go b/app/vmauth/auth_config.go index 0c02a9d1c..2310d5035 100644 --- a/app/vmauth/auth_config.go +++ b/app/vmauth/auth_config.go @@ -11,6 +11,7 @@ import ( "strings" "sync" "sync/atomic" + "time" "github.com/VictoriaMetrics/VictoriaMetrics/lib/envtemplate" "github.com/VictoriaMetrics/VictoriaMetrics/lib/fasttime" @@ -24,6 +25,8 @@ import ( var ( authConfigPath = flag.String("auth.config", "", "Path to auth config. It can point either to local file or to http url. "+ "See https://docs.victoriametrics.com/vmauth.html for details on the format of this auth config") + configCheckInterval = flag.Duration("configCheckInterval", 0, "interval for config file re-read. "+ + "Zero value disables config re-reading. By default, refreshing is disabled, send SIGHUP for config refresh.") ) // AuthConfig represents auth config. @@ -305,10 +308,20 @@ func stopAuthConfig() { } func authConfigReloader(sighupCh <-chan os.Signal) { + var refreshCh <-chan time.Time + // initialize auth refresh interval + if *configCheckInterval > 0 { + ticker := time.NewTicker(*configCheckInterval) + defer ticker.Stop() + refreshCh = ticker.C + } + for { select { case <-stopCh: return + case <-refreshCh: + procutil.SelfSIGHUP() case <-sighupCh: logger.Infof("SIGHUP received; loading -auth.config=%q", *authConfigPath) m, err := readAuthConfig(*authConfigPath) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 443f4000d..5bbe01b58 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -29,6 +29,7 @@ created by v1.90.0 or newer versions. The solution is to upgrade to v1.90.0 or n * FEATURE: [vmui](https://docs.victoriametrics.com/#vmui): hide messages longer than 3 lines in the trace. You can view the full message by clicking on the `show more` button. See [this pull request](https://github.com/VictoriaMetrics/VictoriaMetrics/pull/3971). * FEATURE: [vmui](https://docs.victoriametrics.com/#vmui): add the ability to manually input date and time when selecting a time range. See [this pull request](https://github.com/VictoriaMetrics/VictoriaMetrics/pull/3968). * FEATURE: [vmctl](https://docs.victoriametrics.com/vmctl.html): automatically disable progress bar when TTY isn't available. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3823). +* FEATURE: [vmauth](https://docs.victoriametrics.com/vmauth.html): new `configCheckInterval` flag. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3990). * BUGFIX: prevent from slow [snapshot creating](https://docs.victoriametrics.com/#how-to-work-with-snapshots) under high data ingestion rate. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3551). * BUGFIX: [vmauth](https://docs.victoriametrics.com/vmauth.html): suppress [proxy protocol](https://www.haproxy.org/download/2.3/doc/proxy-protocol.txt) parsing errors in case of `EOF`. Usually, the error is caused by health checks and is not a sign of an actual error. diff --git a/docs/vmauth.md b/docs/vmauth.md index 5ce320aaf..84daadccb 100644 --- a/docs/vmauth.md +++ b/docs/vmauth.md @@ -264,6 +264,8 @@ See the docs at https://docs.victoriametrics.com/vmauth.html . -auth.config string Path to auth config. It can point either to local file or to http url. See https://docs.victoriametrics.com/vmauth.html for details on the format of this auth config + -configCheckInterval duration + Interval for config file re-read. Zero value disables config re-reading. By default, refreshing is disabled, send SIGHUP for config refresh. -enableTCP6 Whether to enable IPv6 for listening and dialing. By default only IPv4 TCP and UDP is used -envflag.enable