Skip to content

Commit 3e93bd9

Browse files
feat: add otel metrics and enable '/metrics' route (#17)
* otel metrics wip Signed-off-by: sami <sami@appscode.com> * gracefully shutdown http server upon exit Signed-off-by: sami <sami@appscode.com> * Undo unnecessary changes Signed-off-by: sami <sami@appscode.com> * Fix test Signed-off-by: sami <sami@appscode.com> * fix linter issues Signed-off-by: sami <sami@appscode.com> * force shutdown upon receiving second os signal Signed-off-by: sami <sami@appscode.com> * Add utility package for graceful shutdown context Signed-off-by: sami <sami@appscode.com> * remove duplicate metrics file Signed-off-by: sami <sami@appscode.com> * fix tests by adding mock metrics object Signed-off-by: sami <sami@appscode.com> * ci: rename build job to match required status check Signed-off-by: Imtiaz Uddin <imtiaz@appscode.com> --------- Signed-off-by: sami <sami@appscode.com> Signed-off-by: Imtiaz Uddin <imtiaz@appscode.com> Co-authored-by: Imtiaz Uddin <imtiaz@appscode.com>
1 parent 709ba34 commit 3e93bd9

File tree

418 files changed

+53491
-3804
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

418 files changed

+53491
-3804
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ on:
99
jobs:
1010

1111
build:
12+
name: Build
1213
runs-on: ubuntu-24.04
1314
steps:
1415
- uses: actions/checkout@v4

apis/config.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,14 @@ type Config struct {
2424
Database *DatabaseCfg `valid:"required" json:"database" mapstructure:"database"`
2525
Publisher *PublisherCfg `valid:"required" json:"publisher" mapstructure:"publisher"`
2626
Logger *Logger `valid:"required" json:"logger" mapstructure:"logger"`
27+
Telemetry *TelemetryCfg `json:"telemetry" mapstructure:"telemetry"`
28+
}
29+
30+
// TelemetryCfg holds telemetry and metrics configuration.
31+
type TelemetryCfg struct {
32+
// Enabled enables the Prometheus metrics endpoint at /metrics.
33+
// Defaults to true if not specified.
34+
Enabled bool `json:"enabled" mapstructure:"enabled"`
2735
}
2836

2937
// ListenerCfg path of the listener config.

apis/event.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@ package apis
22

33
import (
44
"fmt"
5-
"github.com/google/uuid"
65
"time"
6+
7+
"github.com/google/uuid"
78
)
89

910
// Event structure for publishing to the NATS server.

apis/logger.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,6 @@ func InitSlog(cfg *Logger, version string, hook bool) *slog.Logger {
4646
handler = slog.NewTextHandler(os.Stdout, &opt)
4747
}
4848

49-
if hook {
50-
// TODO: add OTEL hook
51-
}
52-
5349
logger := slog.New(handler).With("version", version)
5450

5551
return logger

apis/metrics.go

Lines changed: 0 additions & 59 deletions
This file was deleted.

cmd/pgoutbox/main.go

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,17 @@ import (
2121
"fmt"
2222
"log/slog"
2323
"os"
24-
"os/signal"
2524
"runtime/debug"
26-
"syscall"
2725
"time"
2826

2927
"kubeops.dev/pgoutbox/apis"
3028
"kubeops.dev/pgoutbox/internal/listener"
3129
"kubeops.dev/pgoutbox/internal/listener/transaction"
30+
"kubeops.dev/pgoutbox/internal/telemetry"
3231

3332
"github.com/urfave/cli/v2"
33+
"kubeops.dev/pgoutbox/internal/telemetry/metrics"
34+
"kubeops.dev/pgoutbox/internal/util"
3435
)
3536

3637
// GetVersion returns latest git hash of commit.
@@ -71,7 +72,7 @@ func main() {
7172
},
7273
},
7374
Action: func(c *cli.Context) error {
74-
ctx, cancel := signal.NotifyContext(c.Context, syscall.SIGINT, syscall.SIGTERM)
75+
ctx, cancel := util.SetupSignalContext()
7576
defer cancel()
7677

7778
cfg, err := apis.InitConfig(c.String("config"))
@@ -85,6 +86,12 @@ func main() {
8586

8687
logger := apis.InitSlog(cfg.Logger, version, false)
8788

89+
if cfg.Telemetry == nil || cfg.Telemetry.Enabled {
90+
if err = telemetry.InitMetrics(ctx, version); err != nil {
91+
return fmt.Errorf("initialize telemetry: %w", err)
92+
}
93+
}
94+
8895
pgxConn, pgConn, err := initPgxConnections(cfg.Database, logger, time.Minute*10)
8996
if err != nil {
9097
return fmt.Errorf("pgx connection: %w", err)
@@ -104,14 +111,19 @@ func main() {
104111
}
105112
}()
106113

114+
metrics, err := metrics.New()
115+
if err != nil {
116+
return fmt.Errorf("initialize metrics: %w", err)
117+
}
118+
107119
svc := listener.NewWalListener(
108120
cfg,
109121
logger,
110122
listener.NewRepository(pgxConn),
111123
newReplicationConn(pgConn),
112124
pub,
113125
transaction.NewBinaryParser(logger, binary.BigEndian),
114-
apis.NewMetrics(),
126+
metrics,
115127
)
116128

117129
go svc.InitHandlers(ctx)

go.mod

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,16 @@ require (
1212
github.com/jackc/pgx/v5 v5.8.0
1313
github.com/magiconair/properties v1.8.7
1414
github.com/nats-io/nats.go v1.48.0
15-
github.com/prometheus/client_golang v1.20.5
15+
github.com/prometheus/client_golang v1.23.2
1616
github.com/spf13/viper v1.19.0
1717
github.com/stretchr/testify v1.11.1
1818
github.com/urfave/cli/v2 v2.27.4
1919
github.com/wagslane/go-rabbitmq v0.14.2
20+
go.opentelemetry.io/otel v1.39.0
21+
go.opentelemetry.io/otel/exporters/prometheus v0.61.0
22+
go.opentelemetry.io/otel/metric v1.39.0
23+
go.opentelemetry.io/otel/sdk v1.39.0
24+
go.opentelemetry.io/otel/sdk/metric v1.39.0
2025
golang.org/x/sync v0.19.0
2126
google.golang.org/grpc v1.66.2
2227
k8s.io/apimachinery v0.34.3
@@ -37,7 +42,7 @@ require (
3742
github.com/eapache/queue v1.1.0 // indirect
3843
github.com/felixge/httpsnoop v1.0.4 // indirect
3944
github.com/fsnotify/fsnotify v1.7.0 // indirect
40-
github.com/go-logr/logr v1.4.2 // indirect
45+
github.com/go-logr/logr v1.4.3 // indirect
4146
github.com/go-logr/stdr v1.2.2 // indirect
4247
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
4348
github.com/golang/snappy v0.0.4 // indirect
@@ -64,9 +69,10 @@ require (
6469
github.com/pelletier/go-toml/v2 v2.2.3 // indirect
6570
github.com/pierrec/lz4/v4 v4.1.21 // indirect
6671
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
67-
github.com/prometheus/client_model v0.6.1 // indirect
68-
github.com/prometheus/common v0.59.1 // indirect
69-
github.com/prometheus/procfs v0.15.1 // indirect
72+
github.com/prometheus/client_model v0.6.2 // indirect
73+
github.com/prometheus/common v0.67.4 // indirect
74+
github.com/prometheus/otlptranslator v1.0.0 // indirect
75+
github.com/prometheus/procfs v0.19.2 // indirect
7076
github.com/rabbitmq/amqp091-go v1.10.0 // indirect
7177
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
7278
github.com/russross/blackfriday/v2 v2.1.0 // indirect
@@ -80,24 +86,24 @@ require (
8086
github.com/subosito/gotenv v1.6.0 // indirect
8187
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect
8288
go.opencensus.io v0.24.0 // indirect
89+
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
8390
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.55.0 // indirect
8491
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.55.0 // indirect
85-
go.opentelemetry.io/otel v1.30.0 // indirect
86-
go.opentelemetry.io/otel/metric v1.30.0 // indirect
87-
go.opentelemetry.io/otel/trace v1.30.0 // indirect
92+
go.opentelemetry.io/otel/trace v1.39.0 // indirect
8893
go.uber.org/multierr v1.11.0 // indirect
94+
go.yaml.in/yaml/v2 v2.4.3 // indirect
8995
golang.org/x/crypto v0.46.0 // indirect
9096
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect
9197
golang.org/x/net v0.47.0 // indirect
92-
golang.org/x/oauth2 v0.27.0 // indirect
98+
golang.org/x/oauth2 v0.32.0 // indirect
9399
golang.org/x/sys v0.39.0 // indirect
94100
golang.org/x/text v0.32.0 // indirect
95101
golang.org/x/time v0.9.0 // indirect
96102
google.golang.org/api v0.198.0 // indirect
97103
google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 // indirect
98104
google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect
99105
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect
100-
google.golang.org/protobuf v1.36.5 // indirect
106+
google.golang.org/protobuf v1.36.10 // indirect
101107
gopkg.in/ini.v1 v1.67.0 // indirect
102108
gopkg.in/yaml.v3 v3.0.1 // indirect
103109
k8s.io/klog/v2 v2.130.1 // indirect

go.sum

Lines changed: 36 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7z
5252
github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
5353
github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
5454
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
55-
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
56-
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
55+
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
56+
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
5757
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
5858
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
5959
github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA=
@@ -135,6 +135,8 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
135135
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
136136
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
137137
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
138+
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
139+
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
138140
github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
139141
github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
140142
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
@@ -154,21 +156,23 @@ github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFu
154156
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
155157
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
156158
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
157-
github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y=
158-
github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
159+
github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o=
160+
github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg=
159161
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
160-
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
161-
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
162-
github.com/prometheus/common v0.59.1 h1:LXb1quJHWm1P6wq/U824uxYi4Sg0oGvNeUm1z5dJoX0=
163-
github.com/prometheus/common v0.59.1/go.mod h1:GpWM7dewqmVYcd7SmRaiWVe9SSqjf0UrwnYnpEZNuT0=
164-
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
165-
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
162+
github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk=
163+
github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE=
164+
github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc=
165+
github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI=
166+
github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos=
167+
github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM=
168+
github.com/prometheus/procfs v0.19.2 h1:zUMhqEW66Ex7OXIiDkll3tl9a1ZdilUOd/F6ZXw4Vws=
169+
github.com/prometheus/procfs v0.19.2/go.mod h1:M0aotyiemPhBCM0z5w87kL22CxfcH05ZpYlu+b4J7mw=
166170
github.com/rabbitmq/amqp091-go v1.10.0 h1:STpn5XsHlHGcecLmMFCtg7mqq0RnD+zFr4uzukfVhBw=
167171
github.com/rabbitmq/amqp091-go v1.10.0/go.mod h1:Hy4jKW5kQART1u+JkDTF9YYOQUHXqMuhrgxOEeS7G4o=
168172
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM=
169173
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
170-
github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
171-
github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
174+
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
175+
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
172176
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
173177
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
174178
github.com/sagikazarmark/locafero v0.6.0 h1:ON7AQg37yzcRPU69mt7gwhFEBwxI6P9T4Qu3N51bwOk=
@@ -211,22 +215,30 @@ go.einride.tech/aip v0.68.0 h1:4seM66oLzTpz50u4K1zlJyOXQ3tCzcJN7I22tKkjipw=
211215
go.einride.tech/aip v0.68.0/go.mod h1:7y9FF8VtPWqpxuAxl0KQWqaULxW4zFIesD6zF5RIHHg=
212216
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
213217
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
218+
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
219+
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
214220
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.55.0 h1:hCq2hNMwsegUvPzI7sPOvtO9cqyy5GbWt/Ybp2xrx8Q=
215221
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.55.0/go.mod h1:LqaApwGx/oUmzsbqxkzuBvyoPpkxk3JQWnqfVrJ3wCA=
216222
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.55.0 h1:ZIg3ZT/aQ7AfKqdwp7ECpOK6vHqquXXuyTjIO8ZdmPs=
217223
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.55.0/go.mod h1:DQAwmETtZV00skUwgD6+0U89g80NKsJE3DCKeLLPQMI=
218-
go.opentelemetry.io/otel v1.30.0 h1:F2t8sK4qf1fAmY9ua4ohFS/K+FUuOPemHUIXHtktrts=
219-
go.opentelemetry.io/otel v1.30.0/go.mod h1:tFw4Br9b7fOS+uEao81PJjVMjW/5fvNCbpsDIXqP0pc=
220-
go.opentelemetry.io/otel/metric v1.30.0 h1:4xNulvn9gjzo4hjg+wzIKG7iNFEaBMX00Qd4QIZs7+w=
221-
go.opentelemetry.io/otel/metric v1.30.0/go.mod h1:aXTfST94tswhWEb+5QjlSqG+cZlmyXy/u8jFpor3WqQ=
222-
go.opentelemetry.io/otel/sdk v1.29.0 h1:vkqKjk7gwhS8VaWb0POZKmIEDimRCMsopNYnriHyryo=
223-
go.opentelemetry.io/otel/sdk v1.29.0/go.mod h1:pM8Dx5WKnvxLCb+8lG1PRNIDxu9g9b9g59Qr7hfAAok=
224-
go.opentelemetry.io/otel/trace v1.30.0 h1:7UBkkYzeg3C7kQX8VAidWh2biiQbtAKjyIML8dQ9wmc=
225-
go.opentelemetry.io/otel/trace v1.30.0/go.mod h1:5EyKqTzzmyqB9bwtCCq6pDLktPK6fmGf/Dph+8VI02o=
224+
go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48=
225+
go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8=
226+
go.opentelemetry.io/otel/exporters/prometheus v0.61.0 h1:cCyZS4dr67d30uDyh8etKM2QyDsQ4zC9ds3bdbrVoD0=
227+
go.opentelemetry.io/otel/exporters/prometheus v0.61.0/go.mod h1:iivMuj3xpR2DkUrUya3TPS/Z9h3dz7h01GxU+fQBRNg=
228+
go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0=
229+
go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs=
230+
go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18=
231+
go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE=
232+
go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8=
233+
go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew=
234+
go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI=
235+
go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA=
226236
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
227237
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
228238
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
229239
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
240+
go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0=
241+
go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8=
230242
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
231243
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
232244
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
@@ -255,8 +267,8 @@ golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
255267
golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY=
256268
golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=
257269
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
258-
golang.org/x/oauth2 v0.27.0 h1:da9Vo7/tDv5RH/7nZDz1eMGS/q1Vv1N/7FCrBhI9I3M=
259-
golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
270+
golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY=
271+
golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
260272
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
261273
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
262274
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -323,8 +335,8 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2
323335
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
324336
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
325337
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
326-
google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
327-
google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
338+
google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE=
339+
google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
328340
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
329341
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
330342
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=

0 commit comments

Comments
 (0)