feat: improve logging on startup

Update the exporter logging on startup to include the exporter version,
the path to the fail2ban socket, and whether basic-auth is enabled or not.
Fix code printing error messages on invalid CLI parameters to correct line
breaks and correctly print the "usage" information.
This commit is contained in:
Hector 2022-02-19 11:21:58 +00:00
parent ec10999814
commit e2902b8cc2
4 changed files with 12 additions and 9 deletions

View File

@ -1,7 +1,6 @@
package cfg
import (
"flag"
"fmt"
"gopkg.in/alecthomas/kingpin.v2"
"os"
@ -100,25 +99,25 @@ func (settings *AppSettings) validateFlags() {
var flagsValid = true
if !settings.VersionMode {
if settings.Fail2BanSocketPath == "" {
fmt.Println("fail2ban socket path must not be blank")
fmt.Println("error: fail2ban socket path must not be blank")
flagsValid = false
}
if settings.MetricsPort < minServerPort || settings.MetricsPort > maxServerPort {
fmt.Printf("invalid server port, must be within %d and %d (found %d)\n",
fmt.Printf("error: invalid server port, must be within %d and %d (found %d)\n",
minServerPort, maxServerPort, settings.MetricsPort)
flagsValid = false
}
if settings.FileCollectorEnabled && settings.FileCollectorPath == "" {
fmt.Printf("file collector directory path must not be empty if collector enabled\n")
fmt.Println("error: file collector directory path must not be empty if collector enabled")
flagsValid = false
}
if (len(settings.BasicAuthProvider.username) > 0) != (len(settings.BasicAuthProvider.password) > 0) {
fmt.Printf("to enable basic auth both the username and the password must be provided")
fmt.Println("error: to enable basic auth both the username and the password must be provided")
flagsValid = false
}
}
if !flagsValid {
flag.Usage()
kingpin.Usage()
os.Exit(1)
}
}

View File

@ -16,6 +16,7 @@ type Collector struct {
}
func NewExporter(appSettings *cfg.AppSettings, exporterVersion string) *Collector {
log.Printf("reading metrics from fail2ban socket: %s", appSettings.Fail2BanSocketPath)
return &Collector{
socketPath: appSettings.Fail2BanSocketPath,
exporterVersion: exporterVersion,

View File

@ -25,7 +25,7 @@ func NewCollector(appSettings *cfg.AppSettings) *Collector {
fileMap: make(map[string]*fileData),
}
if collector.enabled {
log.Printf("collector.textfile directory: %s", collector.folderPath)
log.Printf("reading textfile metrics from: %s", collector.folderPath)
}
return collector
}

View File

@ -55,8 +55,8 @@ func main() {
printAppVersion()
} else {
addr := fmt.Sprintf("%s:%d", appSettings.MetricsAddress, appSettings.MetricsPort)
log.Printf("starting fail2ban exporter at %s", addr)
log.Printf("fail2ban exporter version %s", version)
log.Printf("starting server at %s", addr)
f2bCollector := f2b.NewExporter(appSettings, version)
prometheus.MustRegister(f2bCollector)
@ -72,6 +72,9 @@ func main() {
appSettings.BasicAuthProvider,
))
log.Printf("metrics available at '%s'", metricsPath)
if appSettings.BasicAuthProvider.Enabled() {
log.Printf("basic auth enabled")
}
svrErr := make(chan error)
go func() {