Skip to content

Commit b95cf9e

Browse files
author
Antoine Gelloz
committed
Merge branch 'main' into chore/models-in-sharedpublishkafka
2 parents c6de3f6 + d9684b9 commit b95cf9e

File tree

20 files changed

+385
-37
lines changed

20 files changed

+385
-37
lines changed

sharedotlp/go.mod

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ module github.com/numary/go-libs/sharedotlp
33
go 1.18
44

55
require (
6+
github.com/spf13/cobra v1.5.0
7+
github.com/spf13/pflag v1.0.5
8+
github.com/spf13/viper v1.12.0
69
github.com/stretchr/testify v1.8.0
710
go.opentelemetry.io/otel v1.8.0
811
go.opentelemetry.io/otel/exporters/jaeger v1.8.0
@@ -23,22 +26,35 @@ require (
2326
require (
2427
github.com/cenkalti/backoff/v4 v4.1.3 // indirect
2528
github.com/davecgh/go-spew v1.1.1 // indirect
29+
github.com/fsnotify/fsnotify v1.5.4 // indirect
2630
github.com/go-logr/logr v1.2.3 // indirect
2731
github.com/go-logr/stdr v1.2.2 // indirect
2832
github.com/golang/protobuf v1.5.2 // indirect
2933
github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 // indirect
34+
github.com/hashicorp/hcl v1.0.0 // indirect
35+
github.com/inconshreveable/mousetrap v1.0.0 // indirect
36+
github.com/magiconair/properties v1.8.6 // indirect
37+
github.com/mitchellh/mapstructure v1.5.0 // indirect
38+
github.com/pelletier/go-toml v1.9.5 // indirect
39+
github.com/pelletier/go-toml/v2 v2.0.1 // indirect
3040
github.com/pmezard/go-difflib v1.0.0 // indirect
41+
github.com/spf13/afero v1.8.2 // indirect
42+
github.com/spf13/cast v1.5.0 // indirect
43+
github.com/spf13/jwalterweatherman v1.1.0 // indirect
44+
github.com/subosito/gotenv v1.3.0 // indirect
3145
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.8.0 // indirect
3246
go.opentelemetry.io/proto/otlp v0.18.0 // indirect
33-
go.uber.org/atomic v1.6.0 // indirect
47+
go.uber.org/atomic v1.7.0 // indirect
3448
go.uber.org/dig v1.14.0 // indirect
35-
go.uber.org/multierr v1.5.0 // indirect
36-
go.uber.org/zap v1.16.0 // indirect
37-
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 // indirect
38-
golang.org/x/sys v0.0.0-20210903071746-97244b99971b // indirect
39-
golang.org/x/text v0.3.5 // indirect
40-
google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1 // indirect
49+
go.uber.org/multierr v1.6.0 // indirect
50+
go.uber.org/zap v1.17.0 // indirect
51+
golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2 // indirect
52+
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a // indirect
53+
golang.org/x/text v0.3.7 // indirect
54+
google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd // indirect
4155
google.golang.org/grpc v1.46.2 // indirect
4256
google.golang.org/protobuf v1.28.0 // indirect
57+
gopkg.in/ini.v1 v1.66.4 // indirect
58+
gopkg.in/yaml.v2 v2.4.0 // indirect
4359
gopkg.in/yaml.v3 v3.0.1 // indirect
4460
)

sharedotlp/go.sum

Lines changed: 122 additions & 25 deletions
Large diffs are not rendered by default.
File renamed without changes.
File renamed without changes.

sharedotlp/recover.go renamed to sharedotlp/pkg/recover.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package sharedotlp
22

3-
import "context"
3+
import (
4+
"context"
5+
)
46

57
func RecordErrorOnRecover(ctx context.Context, forwardPanic bool) func() {
68
return func() {
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package sharedotlpmetrics
2+
3+
import (
4+
flag "github.com/spf13/pflag"
5+
"github.com/spf13/viper"
6+
"go.uber.org/fx"
7+
)
8+
9+
const (
10+
OtelMetricsFlag = "otel-metrics"
11+
OtelMetricsExporterFlag = "otel-metrics-exporter"
12+
OtelMetricsExporterOTLPModeFlag = "otel-metrics-exporter-otlp-mode"
13+
OtelMetricsExporterOTLPEndpointFlag = "otel-metrics-exporter-otlp-endpoint"
14+
OtelMetricsExporterOTLPInsecureFlag = "otel-metrics-exporter-otlp-insecure"
15+
)
16+
17+
func InitOTLPMetricsFlags(flags *flag.FlagSet) {
18+
flags.Bool(OtelMetricsFlag, false, "Enable OpenTelemetry metrics support")
19+
flags.String(OtelMetricsExporterFlag, "stdout", "OpenTelemetry metrics exporter")
20+
flags.String(OtelMetricsExporterOTLPModeFlag, "grpc", "OpenTelemetry metrics OTLP exporter mode (grpc|http)")
21+
flags.String(OtelMetricsExporterOTLPEndpointFlag, "", "OpenTelemetry metrics grpc endpoint")
22+
flags.Bool(OtelMetricsExporterOTLPInsecureFlag, false, "OpenTelemetry metrics grpc insecure")
23+
}
24+
25+
func CLIMetricsModule(v *viper.Viper) fx.Option {
26+
if v.GetBool(OtelMetricsFlag) {
27+
return MetricsModule(MetricsModuleConfig{
28+
Exporter: v.GetString(OtelMetricsExporterFlag),
29+
OTLPConfig: func() *OTLPMetricsConfig {
30+
if v.GetString(OtelMetricsExporterFlag) != OTLPMetricsExporter {
31+
return nil
32+
}
33+
return &OTLPMetricsConfig{
34+
Mode: v.GetString(OtelMetricsExporterOTLPModeFlag),
35+
Endpoint: v.GetString(OtelMetricsExporterOTLPEndpointFlag),
36+
Insecure: v.GetBool(OtelMetricsExporterOTLPInsecureFlag),
37+
}
38+
}(),
39+
})
40+
}
41+
return nil
42+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package sharedotlpmetrics
2+
3+
import (
4+
"context"
5+
"errors"
6+
"fmt"
7+
"reflect"
8+
"testing"
9+
10+
"github.com/spf13/cobra"
11+
"github.com/spf13/viper"
12+
"github.com/stretchr/testify/require"
13+
"go.opentelemetry.io/otel/metric"
14+
controller "go.opentelemetry.io/otel/sdk/metric/controller/basic"
15+
"go.uber.org/fx"
16+
)
17+
18+
func TestOTLPMetricsModule(t *testing.T) {
19+
cmd := &cobra.Command{
20+
PreRunE: func(cmd *cobra.Command, args []string) error {
21+
return viper.BindPFlags(cmd.Flags())
22+
},
23+
RunE: func(cmd *cobra.Command, args []string) error {
24+
app := fx.New(
25+
fx.NopLogger,
26+
CLIMetricsModule(viper.GetViper()),
27+
fx.Invoke(func(lc fx.Lifecycle, provider metric.MeterProvider) {
28+
lc.Append(fx.Hook{
29+
OnStart: func(ctx context.Context) error {
30+
if !reflect.TypeOf(provider).
31+
AssignableTo(reflect.TypeOf(&controller.Controller{})) {
32+
return errors.New("global.GetMeterProvider() should return a *controller.Controller instance")
33+
}
34+
return nil
35+
},
36+
})
37+
}))
38+
require.NoError(t, app.Start(cmd.Context()))
39+
require.NoError(t, app.Err())
40+
return nil
41+
},
42+
}
43+
InitOTLPMetricsFlags(cmd.Flags())
44+
45+
cmd.SetArgs([]string{
46+
fmt.Sprintf("--%s", OtelMetricsFlag),
47+
fmt.Sprintf("--%s=%s", OtelMetricsExporterFlag, "otlp"),
48+
})
49+
50+
require.NoError(t, cmd.Execute())
51+
}

sharedotlp/sharedotlpmetrics/metrics.go renamed to sharedotlp/pkg/sharedotlpmetrics/metrics.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package sharedotlpmetrics
22

33
import (
4-
opentelemetry "github.com/numary/go-libs/sharedotlp"
4+
opentelemetry "github.com/numary/go-libs/sharedotlp/pkg"
55
"go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc"
66
"go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp"
77
"go.uber.org/fx"

0 commit comments

Comments
 (0)