add metrics http exporter

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
2024-11-16 20:17:37 +03:00
parent 31528740dc
commit 26ddc88547
4 changed files with 1609 additions and 20 deletions

View File

@@ -8,12 +8,18 @@ import (
"time"
grpccli "go.unistack.org/micro-client-grpc/v3"
jsoncodec "go.unistack.org/micro-codec-json/v3"
jsonpbcodec "go.unistack.org/micro-codec-jsonpb/v3"
protocodec "go.unistack.org/micro-codec-proto/v3"
victoriametrics "go.unistack.org/micro-meter-victoriametrics/v3"
httpsrv "go.unistack.org/micro-server-http/v3"
healthhandler "go.unistack.org/micro-server-http/v3/handler/health"
meterhandler "go.unistack.org/micro-server-http/v3/handler/meter"
"go.unistack.org/micro/v3/client"
"go.unistack.org/micro/v3/logger/slog"
"go.unistack.org/micro/v3/meter"
"go.unistack.org/micro/v3/semconv"
"go.unistack.org/micro/v3/server"
"go.unistack.org/servicechecker/pkg/config"
"go.unistack.org/servicechecker/pkg/grpcconn"
"go.unistack.org/servicechecker/pkg/scheduler"
@@ -29,7 +35,11 @@ func main() {
l := slog.NewLogger()
l.Init()
m := victoriametrics.NewMeter()
m := victoriametrics.NewMeter(
victoriametrics.PrometheusCompat(true),
meter.WriteFDMetrics(true),
meter.WriteProcessMetrics(true),
)
f, err := os.Open("config.yaml")
if err != nil {
l.Fatal(ctx, "failed to open config", err)
@@ -58,6 +68,26 @@ func main() {
}
}()
s := httpsrv.NewServer(
server.Codec("application/json", jsoncodec.NewCodec()),
server.Address(cfg.Meter.Addr),
)
if err = s.Init(); err != nil {
l.Fatal(ctx, "http server init error", err)
}
if err := healthhandler.RegisterHealthServiceServer(s, healthhandler.NewHandler()); err != nil {
l.Fatal(ctx, "failed to set http handler", err)
}
if err := meterhandler.RegisterMeterServiceServer(s, meterhandler.NewHandler(meterhandler.Meter(m))); err != nil {
l.Fatal(ctx, "failed to set http handler", err)
}
if err = s.Start(); err != nil {
l.Fatal(ctx, "failed to start http server", err)
}
clients := make(map[string]client.Client)
gcli := grpccli.NewClient(
client.Codec("application/json", jsonpbcodec.NewCodec()),