1
0
mirror of https://github.com/Chipazawra/v8-1c-cluster-pde.git synced 2025-03-21 21:17:03 +02:00

75 lines
1.4 KiB
Go
Raw Normal View History

2021-12-27 15:02:41 +03:00
package app
2021-12-27 15:11:48 +03:00
2021-12-27 21:15:02 +03:00
import (
2021-12-28 14:23:42 +03:00
"context"
2021-12-27 21:15:02 +03:00
"flag"
"fmt"
"log"
"net/http"
2021-12-28 14:23:42 +03:00
"github.com/Chipazawra/v8-1c-cluster-pde/internal/rpHostsCollector"
2021-12-27 21:15:02 +03:00
"github.com/caarlos0/env"
2021-12-28 14:23:42 +03:00
rascli "github.com/khorevaa/ras-client"
2021-12-27 21:15:02 +03:00
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promhttp"
)
var (
2021-12-28 14:23:42 +03:00
conf Config
hostFlag string
portFlag string
exposeFlag string
ctx context.Context
2021-12-27 21:15:02 +03:00
)
func init() {
if err := env.Parse(&conf); err != nil {
log.Fatalf("app: config...")
}
flag.StringVar(&hostFlag, "host", "", "cluster host.")
flag.StringVar(&portFlag, "port", "", "cluster port.")
2021-12-28 14:23:42 +03:00
flag.StringVar(&exposeFlag, "expose", "", "metrics port.")
2021-12-27 21:15:02 +03:00
flag.Parse()
if hostFlag != "" {
conf.Host = hostFlag
}
if portFlag != "" {
conf.Port = portFlag
}
2021-12-28 14:23:42 +03:00
if exposeFlag != "" {
conf.Expose = exposeFlag
}
ctx = context.Background()
2021-12-27 21:15:02 +03:00
}
2021-12-27 15:11:48 +03:00
func Run() error {
2021-12-27 21:15:02 +03:00
2021-12-28 14:23:42 +03:00
rcli := rascli.NewClient(fmt.Sprintf("%s:%s", conf.Host, conf.Port))
rcli.AuthenticateAgent(conf.User, conf.Pass)
defer rcli.Close()
2021-12-27 21:15:02 +03:00
promRegistry := prometheus.NewRegistry()
2021-12-28 14:23:42 +03:00
promRegistry.MustRegister(rpHostsCollector.New(rcli))
http.Handle("/metrics",
promhttp.HandlerFor(promRegistry, promhttp.HandlerOpts{}),
2021-12-27 22:48:08 +03:00
)
2021-12-28 14:23:42 +03:00
err := http.ListenAndServe(fmt.Sprintf("%s:%s", "", conf.Expose), nil)
if err != nil {
return Errorf(err)
}
2021-12-27 21:15:02 +03:00
2021-12-28 14:23:42 +03:00
return nil
}
2021-12-27 21:15:02 +03:00
2021-12-28 14:23:42 +03:00
func Errorf(err error) error {
return fmt.Errorf("app: %v", err)
2021-12-27 15:11:48 +03:00
}