mirror of
https://github.com/mainflux/mainflux.git
synced 2025-04-26 13:48:53 +08:00
NOISSUE - Add traces to API Bootstraps and Certs endpoints (#1851)
* add traces to bootstrap endpoints Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing to certs endpoints Signed-off-by: SammyOina <sammyoina@gmail.com> * remove tracing provider Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing provider Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing provider Signed-off-by: SammyOina <sammyoina@gmail.com> * Update cmd/certs/main.go Co-authored-by: b1ackd0t <blackd0t@protonmail.com> Signed-off-by: SammyOina <sammyoina@gmail.com> --------- Signed-off-by: SammyOina <sammyoina@gmail.com> Co-authored-by: b1ackd0t <blackd0t@protonmail.com>
This commit is contained in:
parent
7ffc14b279
commit
5410a14b04
@ -18,6 +18,7 @@ import (
|
|||||||
mflog "github.com/mainflux/mainflux/logger"
|
mflog "github.com/mainflux/mainflux/logger"
|
||||||
"github.com/mainflux/mainflux/pkg/errors"
|
"github.com/mainflux/mainflux/pkg/errors"
|
||||||
"github.com/prometheus/client_golang/prometheus/promhttp"
|
"github.com/prometheus/client_golang/prometheus/promhttp"
|
||||||
|
"go.opentelemetry.io/contrib/instrumentation/github.com/go-kit/kit/otelkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -41,61 +42,61 @@ func MakeHandler(svc bootstrap.Service, reader bootstrap.ConfigReader, logger mf
|
|||||||
r := bone.New()
|
r := bone.New()
|
||||||
|
|
||||||
r.Post("/things/configs", kithttp.NewServer(
|
r.Post("/things/configs", kithttp.NewServer(
|
||||||
addEndpoint(svc),
|
otelkit.EndpointMiddleware(otelkit.WithOperation("add"))(addEndpoint(svc)),
|
||||||
decodeAddRequest,
|
decodeAddRequest,
|
||||||
encodeResponse,
|
encodeResponse,
|
||||||
opts...))
|
opts...))
|
||||||
|
|
||||||
r.Get("/things/configs/:configID", kithttp.NewServer(
|
r.Get("/things/configs/:configID", kithttp.NewServer(
|
||||||
viewEndpoint(svc),
|
otelkit.EndpointMiddleware(otelkit.WithOperation("view"))(viewEndpoint(svc)),
|
||||||
decodeEntityRequest,
|
decodeEntityRequest,
|
||||||
encodeResponse,
|
encodeResponse,
|
||||||
opts...))
|
opts...))
|
||||||
|
|
||||||
r.Put("/things/configs/:configID", kithttp.NewServer(
|
r.Put("/things/configs/:configID", kithttp.NewServer(
|
||||||
updateEndpoint(svc),
|
otelkit.EndpointMiddleware(otelkit.WithOperation("update"))(updateEndpoint(svc)),
|
||||||
decodeUpdateRequest,
|
decodeUpdateRequest,
|
||||||
encodeResponse,
|
encodeResponse,
|
||||||
opts...))
|
opts...))
|
||||||
|
|
||||||
r.Patch("/things/configs/certs/:certID", kithttp.NewServer(
|
r.Patch("/things/configs/certs/:certID", kithttp.NewServer(
|
||||||
updateCertEndpoint(svc),
|
otelkit.EndpointMiddleware(otelkit.WithOperation("update_cert"))(updateCertEndpoint(svc)),
|
||||||
decodeUpdateCertRequest,
|
decodeUpdateCertRequest,
|
||||||
encodeResponse,
|
encodeResponse,
|
||||||
opts...))
|
opts...))
|
||||||
|
|
||||||
r.Put("/things/configs/connections/:connID", kithttp.NewServer(
|
r.Put("/things/configs/connections/:connID", kithttp.NewServer(
|
||||||
updateConnEndpoint(svc),
|
otelkit.EndpointMiddleware(otelkit.WithOperation("update_connections"))(updateConnEndpoint(svc)),
|
||||||
decodeUpdateConnRequest,
|
decodeUpdateConnRequest,
|
||||||
encodeResponse,
|
encodeResponse,
|
||||||
opts...))
|
opts...))
|
||||||
|
|
||||||
r.Get("/things/configs", kithttp.NewServer(
|
r.Get("/things/configs", kithttp.NewServer(
|
||||||
listEndpoint(svc),
|
otelkit.EndpointMiddleware(otelkit.WithOperation("list"))(listEndpoint(svc)),
|
||||||
decodeListRequest,
|
decodeListRequest,
|
||||||
encodeResponse,
|
encodeResponse,
|
||||||
opts...))
|
opts...))
|
||||||
|
|
||||||
r.Get("/things/bootstrap/:externalID", kithttp.NewServer(
|
r.Get("/things/bootstrap/:externalID", kithttp.NewServer(
|
||||||
bootstrapEndpoint(svc, reader, false),
|
otelkit.EndpointMiddleware(otelkit.WithOperation("bootstrap"))(bootstrapEndpoint(svc, reader, false)),
|
||||||
decodeBootstrapRequest,
|
decodeBootstrapRequest,
|
||||||
encodeResponse,
|
encodeResponse,
|
||||||
opts...))
|
opts...))
|
||||||
|
|
||||||
r.Get("/things/bootstrap/secure/:externalID", kithttp.NewServer(
|
r.Get("/things/bootstrap/secure/:externalID", kithttp.NewServer(
|
||||||
bootstrapEndpoint(svc, reader, true),
|
otelkit.EndpointMiddleware(otelkit.WithOperation("bootstrap_secure"))(bootstrapEndpoint(svc, reader, true)),
|
||||||
decodeBootstrapRequest,
|
decodeBootstrapRequest,
|
||||||
encodeSecureRes,
|
encodeSecureRes,
|
||||||
opts...))
|
opts...))
|
||||||
|
|
||||||
r.Put("/things/state/:thingID", kithttp.NewServer(
|
r.Put("/things/state/:thingID", kithttp.NewServer(
|
||||||
stateEndpoint(svc),
|
otelkit.EndpointMiddleware(otelkit.WithOperation("state"))(stateEndpoint(svc)),
|
||||||
decodeStateRequest,
|
decodeStateRequest,
|
||||||
encodeResponse,
|
encodeResponse,
|
||||||
opts...))
|
opts...))
|
||||||
|
|
||||||
r.Delete("/things/configs/:configID", kithttp.NewServer(
|
r.Delete("/things/configs/:configID", kithttp.NewServer(
|
||||||
removeEndpoint(svc),
|
otelkit.EndpointMiddleware(otelkit.WithOperation("remove"))(removeEndpoint(svc)),
|
||||||
decodeEntityRequest,
|
decodeEntityRequest,
|
||||||
encodeResponse,
|
encodeResponse,
|
||||||
opts...))
|
opts...))
|
||||||
|
@ -16,6 +16,7 @@ import (
|
|||||||
"github.com/mainflux/mainflux/logger"
|
"github.com/mainflux/mainflux/logger"
|
||||||
"github.com/mainflux/mainflux/pkg/errors"
|
"github.com/mainflux/mainflux/pkg/errors"
|
||||||
"github.com/prometheus/client_golang/prometheus/promhttp"
|
"github.com/prometheus/client_golang/prometheus/promhttp"
|
||||||
|
"go.opentelemetry.io/contrib/instrumentation/github.com/go-kit/kit/otelkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -35,28 +36,28 @@ func MakeHandler(svc certs.Service, logger logger.Logger, instanceID string) htt
|
|||||||
r := bone.New()
|
r := bone.New()
|
||||||
|
|
||||||
r.Post("/certs", kithttp.NewServer(
|
r.Post("/certs", kithttp.NewServer(
|
||||||
issueCert(svc),
|
otelkit.EndpointMiddleware(otelkit.WithOperation("issue"))(issueCert(svc)),
|
||||||
decodeCerts,
|
decodeCerts,
|
||||||
encodeResponse,
|
encodeResponse,
|
||||||
opts...,
|
opts...,
|
||||||
))
|
))
|
||||||
|
|
||||||
r.Get("/certs/:certID", kithttp.NewServer(
|
r.Get("/certs/:certID", kithttp.NewServer(
|
||||||
viewCert(svc),
|
otelkit.EndpointMiddleware(otelkit.WithOperation("view"))(viewCert(svc)),
|
||||||
decodeViewCert,
|
decodeViewCert,
|
||||||
encodeResponse,
|
encodeResponse,
|
||||||
opts...,
|
opts...,
|
||||||
))
|
))
|
||||||
|
|
||||||
r.Delete("/certs/:certID", kithttp.NewServer(
|
r.Delete("/certs/:certID", kithttp.NewServer(
|
||||||
revokeCert(svc),
|
otelkit.EndpointMiddleware(otelkit.WithOperation("revoke"))(revokeCert(svc)),
|
||||||
decodeRevokeCerts,
|
decodeRevokeCerts,
|
||||||
encodeResponse,
|
encodeResponse,
|
||||||
opts...,
|
opts...,
|
||||||
))
|
))
|
||||||
|
|
||||||
r.Get("/serials/:thingID", kithttp.NewServer(
|
r.Get("/serials/:thingID", kithttp.NewServer(
|
||||||
listSerials(svc),
|
otelkit.EndpointMiddleware(otelkit.WithOperation("list_serials"))(listSerials(svc)),
|
||||||
decodeListCerts,
|
decodeListCerts,
|
||||||
encodeResponse,
|
encodeResponse,
|
||||||
opts...,
|
opts...,
|
||||||
|
@ -123,6 +123,7 @@ func main() {
|
|||||||
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHttp, AltPrefix: envPrefix}); err != nil {
|
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHttp, AltPrefix: envPrefix}); err != nil {
|
||||||
logger.Fatal(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err))
|
logger.Fatal(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err))
|
||||||
}
|
}
|
||||||
|
|
||||||
hs := httpserver.New(ctx, cancel, svcName, httpServerConfig, api.MakeHandler(svc, bootstrap.NewConfigReader([]byte(cfg.EncKey)), logger, instanceID), logger)
|
hs := httpserver.New(ctx, cancel, svcName, httpServerConfig, api.MakeHandler(svc, bootstrap.NewConfigReader([]byte(cfg.EncKey)), logger, instanceID), logger)
|
||||||
|
|
||||||
if cfg.SendTelemetry {
|
if cfg.SendTelemetry {
|
||||||
|
@ -18,6 +18,7 @@ import (
|
|||||||
vault "github.com/mainflux/mainflux/certs/pki"
|
vault "github.com/mainflux/mainflux/certs/pki"
|
||||||
certsPg "github.com/mainflux/mainflux/certs/postgres"
|
certsPg "github.com/mainflux/mainflux/certs/postgres"
|
||||||
"github.com/mainflux/mainflux/internal"
|
"github.com/mainflux/mainflux/internal"
|
||||||
|
jaegerClient "github.com/mainflux/mainflux/internal/clients/jaeger"
|
||||||
"github.com/mainflux/mainflux/internal/env"
|
"github.com/mainflux/mainflux/internal/env"
|
||||||
"github.com/mainflux/mainflux/internal/server"
|
"github.com/mainflux/mainflux/internal/server"
|
||||||
httpserver "github.com/mainflux/mainflux/internal/server/http"
|
httpserver "github.com/mainflux/mainflux/internal/server/http"
|
||||||
@ -46,6 +47,7 @@ type config struct {
|
|||||||
ThingsURL string `env:"MF_THINGS_URL" envDefault:"http://things:9000"`
|
ThingsURL string `env:"MF_THINGS_URL" envDefault:"http://things:9000"`
|
||||||
SendTelemetry bool `env:"MF_SEND_TELEMETRY" envDefault:"true"`
|
SendTelemetry bool `env:"MF_SEND_TELEMETRY" envDefault:"true"`
|
||||||
InstanceID string `env:"MF_CERTS_INSTANCE_ID" envDefault:""`
|
InstanceID string `env:"MF_CERTS_INSTANCE_ID" envDefault:""`
|
||||||
|
JaegerURL string `env:"MF_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||||
|
|
||||||
// Sign and issue certificates without 3rd party PKI
|
// Sign and issue certificates without 3rd party PKI
|
||||||
SignCAPath string `env:"MF_CERTS_SIGN_CA_PATH" envDefault:"ca.crt"`
|
SignCAPath string `env:"MF_CERTS_SIGN_CA_PATH" envDefault:"ca.crt"`
|
||||||
@ -112,6 +114,15 @@ func main() {
|
|||||||
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHttp, AltPrefix: envPrefix}); err != nil {
|
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHttp, AltPrefix: envPrefix}); err != nil {
|
||||||
logger.Fatal(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err))
|
logger.Fatal(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err))
|
||||||
}
|
}
|
||||||
|
tp, err := jaegerClient.NewProvider(svcName, cfg.JaegerURL, instanceID)
|
||||||
|
if err != nil {
|
||||||
|
logger.Fatal(fmt.Sprintf("failed to init Jaeger: %s", err))
|
||||||
|
}
|
||||||
|
defer func() {
|
||||||
|
if err := tp.Shutdown(ctx); err != nil {
|
||||||
|
logger.Error(fmt.Sprintf("error shutting down tracer provider: %v", err))
|
||||||
|
}
|
||||||
|
}()
|
||||||
hs := httpserver.New(ctx, cancel, svcName, httpServerConfig, api.MakeHandler(svc, logger, instanceID), logger)
|
hs := httpserver.New(ctx, cancel, svcName, httpServerConfig, api.MakeHandler(svc, logger, instanceID), logger)
|
||||||
|
|
||||||
if cfg.SendTelemetry {
|
if cfg.SendTelemetry {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user