Merge branch 'feat/add-new-dry-run-mode' into 'main'

feat: add new dry run mode

See merge request hectorjsmith/fail2ban-prometheus-exporter!98
This commit is contained in:
Hector 2023-06-22 16:09:36 +00:00
commit 8d457da2b9
3 changed files with 16 additions and 8 deletions

View file

@ -11,6 +11,7 @@ import (
var cliStruct struct { var cliStruct struct {
VersionMode bool `name:"version" short:"v" help:"Show version info and exit"` VersionMode bool `name:"version" short:"v" help:"Show version info and exit"`
DryRunMode bool `name:"dry-run" help:"Attempt to connect to the fail2ban socket then exit before starting the server"`
ServerAddress string `name:"web.listen-address" env:"F2B_WEB_LISTEN_ADDRESS" help:"Address to use for the metrics server" default:"${default_address}"` ServerAddress string `name:"web.listen-address" env:"F2B_WEB_LISTEN_ADDRESS" help:"Address to use for the metrics server" default:"${default_address}"`
F2bSocketPath string `name:"collector.f2b.socket" env:"F2B_COLLECTOR_SOCKET" help:"Path to the fail2ban server socket" default:"${default_socket}"` F2bSocketPath string `name:"collector.f2b.socket" env:"F2B_COLLECTOR_SOCKET" help:"Path to the fail2ban server socket" default:"${default_socket}"`
ExitOnSocketError bool `name:"collector.f2b.exit-on-socket-connection-error" env:"F2B_EXIT_ON_SOCKET_CONN_ERROR" help:"When set to true the exporter will immediately exit on a fail2ban socket connection error"` ExitOnSocketError bool `name:"collector.f2b.exit-on-socket-connection-error" env:"F2B_EXIT_ON_SOCKET_CONN_ERROR" help:"When set to true the exporter will immediately exit on a fail2ban socket connection error"`
@ -34,6 +35,7 @@ func Parse() *AppSettings {
validateFlags(ctx) validateFlags(ctx)
settings := &AppSettings{ settings := &AppSettings{
VersionMode: cliStruct.VersionMode, VersionMode: cliStruct.VersionMode,
DryRunMode: cliStruct.DryRunMode,
MetricsAddress: cliStruct.ServerAddress, MetricsAddress: cliStruct.ServerAddress,
Fail2BanSocketPath: cliStruct.F2bSocketPath, Fail2BanSocketPath: cliStruct.F2bSocketPath,
FileCollectorPath: cliStruct.TextFileExporterPath, FileCollectorPath: cliStruct.TextFileExporterPath,

View file

@ -4,6 +4,7 @@ import "gitlab.com/hectorjsmith/fail2ban-prometheus-exporter/auth"
type AppSettings struct { type AppSettings struct {
VersionMode bool VersionMode bool
DryRunMode bool
MetricsAddress string MetricsAddress string
Fail2BanSocketPath string Fail2BanSocketPath string
FileCollectorPath string FileCollectorPath string

View file

@ -30,20 +30,25 @@ func main() {
appSettings := cfg.Parse() appSettings := cfg.Parse()
if appSettings.VersionMode { if appSettings.VersionMode {
printAppVersion() printAppVersion()
} else { return
handleGracefulShutdown() }
log.Printf("fail2ban exporter version %s", version)
log.Printf("starting server at %s", appSettings.MetricsAddress)
f2bCollector := f2b.NewExporter(appSettings, version) handleGracefulShutdown()
prometheus.MustRegister(f2bCollector) log.Printf("fail2ban exporter version %s", version)
log.Printf("starting server at %s", appSettings.MetricsAddress)
textFileCollector := textfile.NewCollector(appSettings) f2bCollector := f2b.NewExporter(appSettings, version)
prometheus.MustRegister(textFileCollector) prometheus.MustRegister(f2bCollector)
textFileCollector := textfile.NewCollector(appSettings)
prometheus.MustRegister(textFileCollector)
if !appSettings.DryRunMode {
svrErr := server.StartServer(appSettings, textFileCollector) svrErr := server.StartServer(appSettings, textFileCollector)
err := <-svrErr err := <-svrErr
log.Fatal(err) log.Fatal(err)
} else {
log.Print("running in dry-run mode - exiting")
} }
} }