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

88 lines
1.9 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-29 12:31:50 +03:00
"context"
2021-12-27 21:15:02 +03:00
"flag"
"fmt"
"log"
"net/http"
2021-12-28 23:06:33 +03:00
"os"
2021-12-27 21:15:02 +03:00
2021-12-29 12:31:50 +03:00
pusher "github.com/Chipazawra/v8-1c-cluster-pde/internal/Pusher"
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
2021-12-27 21:15:02 +03:00
)
func init() {
if err := env.Parse(&conf); err != nil {
log.Fatalf("app: config...")
}
2021-12-28 23:06:33 +03:00
log.SetOutput(os.Stdout)
2021-12-27 21:15:02 +03:00
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
}
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)
2021-12-28 23:06:33 +03:00
log.Printf("cluster-pde connected to RAS: %v", fmt.Sprintf("%s:%s", conf.Host, conf.Port))
2021-12-28 14:23:42 +03:00
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 23:06:33 +03:00
log.Printf("cluster-pde is running on: %v", fmt.Sprintf("%s:%s", "", conf.Expose))
2021-12-28 14:23:42 +03:00
err := http.ListenAndServe(fmt.Sprintf("%s:%s", "", conf.Expose), nil)
if err != nil {
2021-12-29 10:46:25 +03:00
return fmt.Errorf("app: %v", err)
2021-12-28 14:23:42 +03:00
}
2021-12-27 21:15:02 +03:00
2021-12-28 14:23:42 +03:00
return nil
}
2021-12-29 12:31:50 +03:00
func RunPusher() error {
rcli := rascli.NewClient(fmt.Sprintf("%s:%s", conf.Host, conf.Port))
rcli.AuthenticateAgent(conf.User, conf.Pass)
log.Printf("cluster-pde connected to RAS: %v", fmt.Sprintf("%s:%s", conf.Host, conf.Port))
defer rcli.Close()
return pusher.New(
rpHostsCollector.New(rcli),
"pushgateway:9091",
pusher.WithInterval(500),
).Run(context.Background())
}