Implement metrics and cli
This commit is contained in:
44
cmd/pod-cleaner/main.go
Normal file
44
cmd/pod-cleaner/main.go
Normal file
@ -0,0 +1,44 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"github.com/cyrilix/pod-cleaner/pkg/cleaner"
|
||||
"go.uber.org/zap"
|
||||
|
||||
"github.com/prometheus/client_golang/prometheus/promhttp"
|
||||
"log"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var metricPath string
|
||||
var metricPort string
|
||||
var logfile string
|
||||
|
||||
flag.StringVar(&metricPath, "metric-path", "/metrics", "Url path for metrics")
|
||||
flag.StringVar(&metricPort, "metric-port", ":9098", "Http port to expose metrics")
|
||||
flag.StringVar(&logfile, "log-file", "/var/syslog", "Log file to watch for orphan messages")
|
||||
|
||||
logLevel := zap.LevelFlag("log", zap.InfoLevel, "log level")
|
||||
flag.Parse()
|
||||
|
||||
config := zap.NewDevelopmentConfig()
|
||||
config.Level = zap.NewAtomicLevelAt(*logLevel)
|
||||
lgr, err := config.Build()
|
||||
if err != nil {
|
||||
log.Fatalf("unable to init logger: %v", err)
|
||||
}
|
||||
defer lgr.Sync()
|
||||
|
||||
zap.ReplaceGlobals(lgr)
|
||||
|
||||
c := cleaner.NewPodWatcher("log-file")
|
||||
defer c.Close()
|
||||
go c.Watch()
|
||||
|
||||
http.Handle(metricPath, promhttp.Handler())
|
||||
err = http.ListenAndServe(metricPort, nil)
|
||||
if err != nil {
|
||||
log.Panicf("unable to start prometheus listener: %v", err)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user