Skip to content

Commit 8228531

Browse files
committed
[receiver/googlecloudpubsub] Turn noisy warn in reset metric (open-telemetry#37571)
1 parent fef32db commit 8228531

14 files changed

+445
-96
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
change_type: enhancement
2+
3+
component: googlecloudpubsubreceiver
4+
5+
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
6+
note: Turn noisy `warn` log about Pub/Sub servers into `debug`, and turn the reset count into a metric
7+
8+
issues: [37571]
9+
10+
subtext: |
11+
The receiver uses the Google Cloud Pub/Sub StreamingPull API and keeps a open connection. The Pub/Sub servers
12+
recurrently close the connection after a time period to avoid a long-running sticky connection. Before the
13+
receiver logged `warn` log lines everytime this happened. These log lines are moved to debug so that fleets with
14+
lots of collectors with the receiver don't span logs at warn level. To keep track of the resets, whenever a
15+
connection reset happens a `otelcol_receiver_googlecloudpubsub_stream_restarts` metric is increased by one.
16+
17+
change_logs: [user]
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
[comment]: <> (Code generated by mdatagen. DO NOT EDIT.)
2+
3+
# googlecloudpubsub
4+
5+
## Internal Telemetry
6+
7+
The following telemetry is emitted by this component.
8+
9+
### otelcol_receiver.googlecloudpubsub.stream_restarts
10+
11+
Number of times the stream (re)starts due to a Pub/Sub servers connection close
12+
13+
The receiver uses the Google Cloud Pub/Sub StreamingPull API and keeps a open connection. The Pub/Sub servers
14+
recurrently close the connection after a time period to avoid a long-running sticky connection. This metric
15+
counts the number of the resets that occurred during the lifetime of the container.
16+
17+
18+
| Unit | Metric Type | Value Type | Monotonic |
19+
| ---- | ----------- | ---------- | --------- |
20+
| 1 | Sum | Int | true |

receiver/googlecloudpubsubreceiver/factory.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,24 +41,24 @@ func (factory *pubsubReceiverFactory) CreateDefaultConfig() component.Config {
4141
return &Config{}
4242
}
4343

44-
func (factory *pubsubReceiverFactory) ensureReceiver(params receiver.Settings, config component.Config) (*pubsubReceiver, error) {
44+
func (factory *pubsubReceiverFactory) ensureReceiver(settings receiver.Settings, config component.Config) (*pubsubReceiver, error) {
4545
receiver := factory.receivers[config.(*Config)]
4646
if receiver != nil {
4747
return receiver, nil
4848
}
4949
rconfig := config.(*Config)
5050
obsrecv, err := receiverhelper.NewObsReport(receiverhelper.ObsReportSettings{
51-
ReceiverID: params.ID,
51+
ReceiverID: settings.ID,
5252
Transport: reportTransport,
53-
ReceiverCreateSettings: params,
53+
ReceiverCreateSettings: settings,
5454
})
5555
if err != nil {
5656
return nil, err
5757
}
5858
receiver = &pubsubReceiver{
59-
logger: params.Logger,
59+
settings: settings,
6060
obsrecv: obsrecv,
61-
userAgent: strings.ReplaceAll(rconfig.UserAgent, "{{version}}", params.BuildInfo.Version),
61+
userAgent: strings.ReplaceAll(rconfig.UserAgent, "{{version}}", settings.BuildInfo.Version),
6262
config: rconfig,
6363
}
6464
factory.receivers[config.(*Config)] = receiver

receiver/googlecloudpubsubreceiver/go.mod

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
module github.com/open-telemetry/opentelemetry-collector-contrib/receiver/googlecloudpubsubreceiver
22

3-
go 1.22.0
3+
go 1.22.7
4+
5+
toolchain go1.23.4
46

57
require (
68
cloud.google.com/go/logging v1.13.0
7-
cloud.google.com/go/pubsub v1.45.3
9+
cloud.google.com/go/pubsub v1.46.0
810
github.com/google/go-cmp v0.6.0
911
github.com/googleapis/gax-go/v2 v2.14.1
1012
github.com/iancoleman/strcase v0.3.0
@@ -20,23 +22,27 @@ require (
2022
go.opentelemetry.io/collector/pdata v1.24.1-0.20250131104636-a737a48402e0
2123
go.opentelemetry.io/collector/receiver v0.118.1-0.20250131104636-a737a48402e0
2224
go.opentelemetry.io/collector/receiver/receivertest v0.118.1-0.20250131104636-a737a48402e0
25+
go.opentelemetry.io/otel v1.34.0
26+
go.opentelemetry.io/otel/metric v1.34.0
27+
go.opentelemetry.io/otel/sdk/metric v1.34.0
28+
go.opentelemetry.io/otel/trace v1.34.0
2329
go.uber.org/goleak v1.3.0
2430
go.uber.org/multierr v1.11.0
2531
go.uber.org/zap v1.27.0
2632
google.golang.org/api v0.219.0
27-
google.golang.org/genproto v0.0.0-20241118233622-e639e219e697
28-
google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576
33+
google.golang.org/genproto v0.0.0-20250127172529-29210b9bc287
34+
google.golang.org/genproto/googleapis/api v0.0.0-20250127172529-29210b9bc287
2935
google.golang.org/grpc v1.70.0
3036
google.golang.org/protobuf v1.36.4
3137
)
3238

3339
require (
34-
cloud.google.com/go v0.117.0 // indirect
40+
cloud.google.com/go v0.118.0 // indirect
3541
cloud.google.com/go/auth v0.14.0 // indirect
3642
cloud.google.com/go/auth/oauth2adapt v0.2.7 // indirect
3743
cloud.google.com/go/compute/metadata v0.6.0 // indirect
38-
cloud.google.com/go/iam v1.2.2 // indirect
39-
cloud.google.com/go/longrunning v0.6.2 // indirect
44+
cloud.google.com/go/iam v1.3.1 // indirect
45+
cloud.google.com/go/longrunning v0.6.4 // indirect
4046
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
4147
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
4248
github.com/felixge/httpsnoop v1.0.4 // indirect
@@ -57,26 +63,22 @@ require (
5763
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
5864
github.com/modern-go/reflect2 v1.0.2 // indirect
5965
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
60-
go.einride.tech/aip v0.68.0 // indirect
66+
go.einride.tech/aip v0.68.1 // indirect
6167
go.opencensus.io v0.24.0 // indirect
6268
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
63-
go.opentelemetry.io/collector/config/configretry v1.24.1-0.20250131104636-a737a48402e0 // indirect
69+
go.opentelemetry.io/collector/config/configretry v1.24.1-0.20250130224751-50b76b95bf35 // indirect
6470
go.opentelemetry.io/collector/config/configtelemetry v0.118.1-0.20250131104636-a737a48402e0 // indirect
65-
go.opentelemetry.io/collector/consumer/consumererror v0.118.1-0.20250131104636-a737a48402e0 // indirect
66-
go.opentelemetry.io/collector/consumer/xconsumer v0.118.1-0.20250131104636-a737a48402e0 // indirect
71+
go.opentelemetry.io/collector/consumer/consumererror v0.118.1-0.20250130224751-50b76b95bf35 // indirect
72+
go.opentelemetry.io/collector/consumer/xconsumer v0.118.1-0.20250130224751-50b76b95bf35 // indirect
6773
go.opentelemetry.io/collector/extension v0.118.1-0.20250131104636-a737a48402e0 // indirect
68-
go.opentelemetry.io/collector/extension/xextension v0.118.1-0.20250131104636-a737a48402e0 // indirect
69-
go.opentelemetry.io/collector/featuregate v1.24.1-0.20250131104636-a737a48402e0 // indirect
74+
go.opentelemetry.io/collector/extension/xextension v0.118.1-0.20250130224751-50b76b95bf35 // indirect
75+
go.opentelemetry.io/collector/featuregate v1.24.1-0.20250130224751-50b76b95bf35 // indirect
7076
go.opentelemetry.io/collector/pdata/pprofile v0.118.1-0.20250131104636-a737a48402e0 // indirect
71-
go.opentelemetry.io/collector/pipeline v0.118.1-0.20250131104636-a737a48402e0 // indirect
72-
go.opentelemetry.io/collector/receiver/xreceiver v0.118.1-0.20250131104636-a737a48402e0 // indirect
73-
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 // indirect
74-
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect
75-
go.opentelemetry.io/otel v1.34.0 // indirect
76-
go.opentelemetry.io/otel/metric v1.34.0 // indirect
77+
go.opentelemetry.io/collector/pipeline v0.118.1-0.20250130224751-50b76b95bf35 // indirect
78+
go.opentelemetry.io/collector/receiver/xreceiver v0.118.1-0.20250130224751-50b76b95bf35 // indirect
79+
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0 // indirect
80+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 // indirect
7781
go.opentelemetry.io/otel/sdk v1.34.0 // indirect
78-
go.opentelemetry.io/otel/sdk/metric v1.34.0 // indirect
79-
go.opentelemetry.io/otel/trace v1.34.0 // indirect
8082
golang.org/x/crypto v0.32.0 // indirect
8183
golang.org/x/net v0.34.0 // indirect
8284
golang.org/x/oauth2 v0.25.0 // indirect

0 commit comments

Comments
 (0)