add metrics http exporter
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
parent
31528740dc
commit
26ddc88547
@ -8,12 +8,18 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
grpccli "go.unistack.org/micro-client-grpc/v3"
|
grpccli "go.unistack.org/micro-client-grpc/v3"
|
||||||
|
jsoncodec "go.unistack.org/micro-codec-json/v3"
|
||||||
jsonpbcodec "go.unistack.org/micro-codec-jsonpb/v3"
|
jsonpbcodec "go.unistack.org/micro-codec-jsonpb/v3"
|
||||||
protocodec "go.unistack.org/micro-codec-proto/v3"
|
protocodec "go.unistack.org/micro-codec-proto/v3"
|
||||||
victoriametrics "go.unistack.org/micro-meter-victoriametrics/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/client"
|
||||||
"go.unistack.org/micro/v3/logger/slog"
|
"go.unistack.org/micro/v3/logger/slog"
|
||||||
|
"go.unistack.org/micro/v3/meter"
|
||||||
"go.unistack.org/micro/v3/semconv"
|
"go.unistack.org/micro/v3/semconv"
|
||||||
|
"go.unistack.org/micro/v3/server"
|
||||||
"go.unistack.org/servicechecker/pkg/config"
|
"go.unistack.org/servicechecker/pkg/config"
|
||||||
"go.unistack.org/servicechecker/pkg/grpcconn"
|
"go.unistack.org/servicechecker/pkg/grpcconn"
|
||||||
"go.unistack.org/servicechecker/pkg/scheduler"
|
"go.unistack.org/servicechecker/pkg/scheduler"
|
||||||
@ -29,7 +35,11 @@ func main() {
|
|||||||
|
|
||||||
l := slog.NewLogger()
|
l := slog.NewLogger()
|
||||||
l.Init()
|
l.Init()
|
||||||
m := victoriametrics.NewMeter()
|
m := victoriametrics.NewMeter(
|
||||||
|
victoriametrics.PrometheusCompat(true),
|
||||||
|
meter.WriteFDMetrics(true),
|
||||||
|
meter.WriteProcessMetrics(true),
|
||||||
|
)
|
||||||
f, err := os.Open("config.yaml")
|
f, err := os.Open("config.yaml")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
l.Fatal(ctx, "failed to open config", err)
|
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)
|
clients := make(map[string]client.Client)
|
||||||
gcli := grpccli.NewClient(
|
gcli := grpccli.NewClient(
|
||||||
client.Codec("application/json", jsonpbcodec.NewCodec()),
|
client.Codec("application/json", jsonpbcodec.NewCodec()),
|
||||||
|
18
go.mod
18
go.mod
@ -6,27 +6,29 @@ require (
|
|||||||
github.com/go-co-op/gocron/v2 v2.12.3
|
github.com/go-co-op/gocron/v2 v2.12.3
|
||||||
github.com/google/uuid v1.6.0
|
github.com/google/uuid v1.6.0
|
||||||
go.unistack.org/micro-client-grpc/v3 v3.11.10
|
go.unistack.org/micro-client-grpc/v3 v3.11.10
|
||||||
|
go.unistack.org/micro-codec-json/v3 v3.10.1
|
||||||
go.unistack.org/micro-codec-jsonpb/v3 v3.10.3
|
go.unistack.org/micro-codec-jsonpb/v3 v3.10.3
|
||||||
go.unistack.org/micro-codec-proto/v3 v3.10.2
|
go.unistack.org/micro-codec-proto/v3 v3.10.2
|
||||||
|
go.unistack.org/micro-codec-yaml/v3 v3.10.2
|
||||||
go.unistack.org/micro-meter-victoriametrics/v3 v3.8.9
|
go.unistack.org/micro-meter-victoriametrics/v3 v3.8.9
|
||||||
|
go.unistack.org/micro-server-http/v3 v3.11.33
|
||||||
go.unistack.org/micro/v3 v3.10.100
|
go.unistack.org/micro/v3 v3.10.100
|
||||||
google.golang.org/protobuf v1.34.2
|
google.golang.org/protobuf v1.35.2
|
||||||
gopkg.in/yaml.v3 v3.0.1
|
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/jonboulle/clockwork v0.4.0 // indirect
|
github.com/jonboulle/clockwork v0.4.0 // indirect
|
||||||
github.com/kr/pretty v0.3.0 // indirect
|
|
||||||
github.com/robfig/cron/v3 v3.0.1 // indirect
|
github.com/robfig/cron/v3 v3.0.1 // indirect
|
||||||
github.com/rogpeppe/go-internal v1.9.0 // indirect
|
|
||||||
github.com/valyala/fastrand v1.1.0 // indirect
|
github.com/valyala/fastrand v1.1.0 // indirect
|
||||||
github.com/valyala/histogram v1.2.0 // indirect
|
github.com/valyala/histogram v1.2.0 // indirect
|
||||||
go.unistack.org/metrics v0.0.1 // indirect
|
go.unistack.org/metrics v0.0.1 // indirect
|
||||||
|
go.unistack.org/micro-client-http/v3 v3.9.14 // indirect
|
||||||
go.unistack.org/micro-proto/v3 v3.4.1 // indirect
|
go.unistack.org/micro-proto/v3 v3.4.1 // indirect
|
||||||
golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect
|
golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect
|
||||||
golang.org/x/net v0.29.0 // indirect
|
golang.org/x/net v0.30.0 // indirect
|
||||||
golang.org/x/sys v0.27.0 // indirect
|
golang.org/x/sys v0.27.0 // indirect
|
||||||
golang.org/x/text v0.18.0 // indirect
|
golang.org/x/text v0.19.0 // indirect
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f // indirect
|
||||||
google.golang.org/grpc v1.67.0 // indirect
|
google.golang.org/grpc v1.68.0 // indirect
|
||||||
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
)
|
)
|
||||||
|
@ -3,11 +3,17 @@ package config
|
|||||||
import (
|
import (
|
||||||
"io"
|
"io"
|
||||||
|
|
||||||
|
yamlcodec "go.unistack.org/micro-codec-yaml/v3"
|
||||||
mtime "go.unistack.org/micro/v3/util/time"
|
mtime "go.unistack.org/micro/v3/util/time"
|
||||||
yaml "gopkg.in/yaml.v3"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type Meter struct {
|
||||||
|
Addr string `json:"addr,omitempty" yaml:"addr,omitempty"`
|
||||||
|
Path string `json:"path,omitempty" yaml:"path,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
|
Meter *Meter `json:"meter,omitempty" yaml:"meter,omitempty"`
|
||||||
Checks []*Check `json:"checks,omitempty" yaml:"checks,omitempty"`
|
Checks []*Check `json:"checks,omitempty" yaml:"checks,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -35,5 +41,5 @@ func (cfg *Config) Parse(r io.Reader) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return yaml.Unmarshal(buf, cfg)
|
return yamlcodec.NewCodec().Unmarshal(buf, cfg)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user