8c67b44052
* Add new `/health` endpoint to check if exporter is running correctly * Update docker healthcheck to use the new endpoint https://gitlab.com/hectorjsmith/fail2ban-prometheus-exporter/-/merge_requests/110
66 lines
1.5 KiB
Go
66 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
|
|
"github.com/prometheus/client_golang/prometheus"
|
|
"gitlab.com/hectorjsmith/fail2ban-prometheus-exporter/cfg"
|
|
"gitlab.com/hectorjsmith/fail2ban-prometheus-exporter/collector/f2b"
|
|
"gitlab.com/hectorjsmith/fail2ban-prometheus-exporter/collector/textfile"
|
|
"gitlab.com/hectorjsmith/fail2ban-prometheus-exporter/server"
|
|
)
|
|
|
|
var (
|
|
version = "dev"
|
|
commit = "none"
|
|
date = "unknown"
|
|
builtBy = "unknown"
|
|
)
|
|
|
|
func printAppVersion() {
|
|
fmt.Println(version)
|
|
fmt.Printf(" build date: %s\r\n commit hash: %s\r\n built by: %s\r\n", date, commit, builtBy)
|
|
}
|
|
|
|
func main() {
|
|
appSettings := cfg.Parse()
|
|
if appSettings.VersionMode {
|
|
printAppVersion()
|
|
return
|
|
}
|
|
|
|
handleGracefulShutdown()
|
|
log.Printf("fail2ban exporter version %s", version)
|
|
log.Printf("starting server at %s", appSettings.MetricsAddress)
|
|
|
|
f2bCollector := f2b.NewExporter(appSettings, version)
|
|
prometheus.MustRegister(f2bCollector)
|
|
|
|
textFileCollector := textfile.NewCollector(appSettings)
|
|
prometheus.MustRegister(textFileCollector)
|
|
|
|
if !appSettings.DryRunMode {
|
|
svrErr := server.StartServer(appSettings, f2bCollector, textFileCollector)
|
|
err := <-svrErr
|
|
log.Fatal(err)
|
|
} else {
|
|
log.Print("running in dry-run mode - exiting")
|
|
}
|
|
}
|
|
|
|
func handleGracefulShutdown() {
|
|
var signals = make(chan os.Signal, 1)
|
|
|
|
signal.Notify(signals, syscall.SIGTERM)
|
|
signal.Notify(signals, syscall.SIGINT)
|
|
|
|
go func() {
|
|
sig := <-signals
|
|
log.Printf("caught signal: %+v", sig)
|
|
os.Exit(0)
|
|
}()
|
|
}
|