Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Instrument obsreport.receiver metrics with otel go #6222

Merged
merged 21 commits into from
Oct 12, 2022
Merged
Show file tree
Hide file tree
Changes from 19 commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
017e5e6
Instrument obs_receiver with otel go
paivagustavo Sep 29, 2022
e39ca63
add changelog entry
paivagustavo Oct 3, 2022
740089e
remove views configuration
paivagustavo Oct 3, 2022
5e3e5d9
move otel-go metrics to obsreport
paivagustavo Oct 3, 2022
4b36a7f
add UseOtelForMetrics to TelemetrySettings; extract otel sdk initiali…
paivagustavo Oct 4, 2022
c6049b2
default UseOtelForMetrics to false
paivagustavo Oct 4, 2022
32f6ad5
remove duplicate oc registry initialization
paivagustavo Oct 4, 2022
48b6778
move `UseOtelForMetrics` to the internal package `obsreportconfig`
paivagustavo Oct 5, 2022
1d1ac78
Merge branch 'main' into gustavo/otel-go-metrics
paivagustavo Oct 5, 2022
d77d44f
address comments
paivagustavo Oct 6, 2022
80cb6f7
Merge remote-tracking branch 'origin/main' into gustavo/otel-go-metrics
paivagustavo Oct 10, 2022
d4195fd
only register view if featuregate is disabled
paivagustavo Oct 10, 2022
03a30b1
prefix meter name with `receiver/`
paivagustavo Oct 10, 2022
da46725
change meter scope name
paivagustavo Oct 11, 2022
3116f25
Merge remote-tracking branch 'origin/main' into gustavo/otel-go-metrics
paivagustavo Oct 11, 2022
77f4323
upgrade otel metric sdk
paivagustavo Oct 12, 2022
f058096
run make gotidy
paivagustavo Oct 12, 2022
5dd757f
Merge remote-tracking branch 'origin/main' into gustavo/otel-go-metrics
paivagustavo Oct 12, 2022
97481a5
update changelog
paivagustavo Oct 12, 2022
7ce8fc9
revert: otel go version upgrade
paivagustavo Oct 12, 2022
a5320de
revert: x/sys upgrades
paivagustavo Oct 12, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
6 changes: 5 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

## Unreleased

### 💡 Enhancements 💡

- Instrument `obsreport.Receiver` metrics with otel-go (#6222)

## v0.62.0 Beta

### 🛑 Breaking changes 🛑
Expand Down Expand Up @@ -55,7 +59,7 @@
- Add config marshaler (#5566)
- Add semantic conventions for specification v1.10-v1.13 (#6213)
- `receiver/otlp`: Make logs related to gRCPC and HTTP server startup clearer (#6174)
- Add prometheus metric prefix and constant service attributes to Collector's own telemetry when using OpenTelemetry for internal telemetry (#6223)
- Add prometheus metric prefix to Collector's own telemetry when using OpenTelemetry for internal telemetry (#6223)
- `exporter/logging`: Apply consistent rendering of map values (#6244)
- Add support in the confmap.Resolver to expand embedded config URIs inside configuration. (#6276)

Expand Down
8 changes: 4 additions & 4 deletions cmd/otelcorecol/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ go 1.18
require (
github.com/stretchr/testify v1.8.0
go.opentelemetry.io/collector v0.62.0
golang.org/x/sys v0.0.0-20220808155132-1c4a2a72c664
golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8
)

require (
Expand Down Expand Up @@ -62,10 +62,10 @@ require (
go.opentelemetry.io/contrib/propagators/b3 v1.10.0 // indirect
go.opentelemetry.io/contrib/zpages v0.36.1 // indirect
go.opentelemetry.io/otel v1.10.0 // indirect
go.opentelemetry.io/otel/exporters/prometheus v0.32.1 // indirect
go.opentelemetry.io/otel/metric v0.32.1 // indirect
go.opentelemetry.io/otel/exporters/prometheus v0.32.2 // indirect
go.opentelemetry.io/otel/metric v0.32.2 // indirect
go.opentelemetry.io/otel/sdk v1.10.0 // indirect
go.opentelemetry.io/otel/sdk/metric v0.32.1 // indirect
go.opentelemetry.io/otel/sdk/metric v0.32.2 // indirect
go.opentelemetry.io/otel/trace v1.10.0 // indirect
go.uber.org/atomic v1.10.0 // indirect
go.uber.org/multierr v1.8.0 // indirect
Expand Down
16 changes: 8 additions & 8 deletions cmd/otelcorecol/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -431,14 +431,14 @@ go.opentelemetry.io/contrib/zpages v0.36.1 h1:gfKq8euLxV6NZP4Yg3HDTkjr1qn1/Yr+dr
go.opentelemetry.io/contrib/zpages v0.36.1/go.mod h1:C7wxlG7CEt/VI00b9e3gXrZ27nHnyC8I+fN32QtguWk=
go.opentelemetry.io/otel v1.10.0 h1:Y7DTJMR6zs1xkS/upamJYk0SxxN4C9AqRd77jmZnyY4=
go.opentelemetry.io/otel v1.10.0/go.mod h1:NbvWjCthWHKBEUMpf0/v8ZRZlni86PpGFEMA9pnQSnQ=
go.opentelemetry.io/otel/exporters/prometheus v0.32.1 h1:1+iSNGGCYoDAMuFDN2M+sYTwa5/wApb7yO/GpW5Vtzg=
go.opentelemetry.io/otel/exporters/prometheus v0.32.1/go.mod h1:t1ZclNSxaC2ztzbHxGU71mg3pkkaHyHcMUIK2Yvft0E=
go.opentelemetry.io/otel/metric v0.32.1 h1:ftff5LSBCIDwL0UkhBuDg8j9NNxx2IusvJ18q9h6RC4=
go.opentelemetry.io/otel/metric v0.32.1/go.mod h1:iLPP7FaKMAD5BIxJ2VX7f2KTuz//0QK2hEUyti5psqQ=
go.opentelemetry.io/otel/exporters/prometheus v0.32.2 h1:dZTvAy/wWVw90IMHJat9kXwxWt00L4idFIgDb+sI16s=
go.opentelemetry.io/otel/exporters/prometheus v0.32.2/go.mod h1:snD7bhlqxrqnStqHZr7vX7+Apab4+7T/gPV9axdAi2Q=
go.opentelemetry.io/otel/metric v0.32.2 h1:q4il3sGUfyfGJIJgjYwEnwWoI4XAHitisQ/Z2y9N3PA=
go.opentelemetry.io/otel/metric v0.32.2/go.mod h1:iLPP7FaKMAD5BIxJ2VX7f2KTuz//0QK2hEUyti5psqQ=
go.opentelemetry.io/otel/sdk v1.10.0 h1:jZ6K7sVn04kk/3DNUdJ4mqRlGDiXAVuIG+MMENpTNdY=
go.opentelemetry.io/otel/sdk v1.10.0/go.mod h1:vO06iKzD5baltJz1zarxMCNHFpUlUiOy4s65ECtn6kE=
go.opentelemetry.io/otel/sdk/metric v0.32.1 h1:S6AqzulzGQl+sTpYeAoVLw1SJbc2LYuKCMUmfEKG+zM=
go.opentelemetry.io/otel/sdk/metric v0.32.1/go.mod h1:Nn+Nt/7cKzm5ISmvLzNO5RLf0Xuv8/Qo8fkpr0JDOzs=
go.opentelemetry.io/otel/sdk/metric v0.32.2 h1:fZhnIvbNQGVFBZuRRWd0RLPQknvu+z79xb+lgT4IXEI=
go.opentelemetry.io/otel/sdk/metric v0.32.2/go.mod h1:VTnvPGgbUr5Uw8GkbXNUGH5GWGsWbmJjq4CSWWsuPlw=
go.opentelemetry.io/otel/trace v1.10.0 h1:npQMbR8o7mum8uF95yFbOEJffhs1sbCOfDh8zAJiH5E=
go.opentelemetry.io/otel/trace v1.10.0/go.mod h1:Sij3YYczqAdz+EhmGhE6TpTxUO5/F/AzrK+kxfGqySM=
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
Expand Down Expand Up @@ -608,8 +608,8 @@ golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220708085239-5a0f0661e09d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220808155132-1c4a2a72c664 h1:v1W7bwXHsnLLloWYTVEdvGvA7BHMeBYsPcF0GLDxIRs=
golang.org/x/sys v0.0.0-20220808155132-1c4a2a72c664/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8 h1:h+EGohizhe9XlX18rfpa8k8RAc5XyaeamM+0VHRd4lc=
golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
Expand Down
8 changes: 4 additions & 4 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,16 @@ require (
go.opentelemetry.io/contrib/propagators/b3 v1.10.0
go.opentelemetry.io/contrib/zpages v0.36.1
go.opentelemetry.io/otel v1.10.0
go.opentelemetry.io/otel/exporters/prometheus v0.32.1
go.opentelemetry.io/otel/metric v0.32.1
go.opentelemetry.io/otel/exporters/prometheus v0.32.2
go.opentelemetry.io/otel/metric v0.32.2
go.opentelemetry.io/otel/sdk v1.10.0
go.opentelemetry.io/otel/sdk/metric v0.32.1
go.opentelemetry.io/otel/sdk/metric v0.32.2
go.opentelemetry.io/otel/trace v1.10.0
go.uber.org/atomic v1.10.0
go.uber.org/multierr v1.8.0
go.uber.org/zap v1.23.0
golang.org/x/net v0.0.0-20220225172249-27dd8689420f
golang.org/x/sys v0.0.0-20220808155132-1c4a2a72c664
golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8
google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa
google.golang.org/grpc v1.50.0
google.golang.org/protobuf v1.28.1
Expand Down
16 changes: 8 additions & 8 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -432,14 +432,14 @@ go.opentelemetry.io/contrib/zpages v0.36.1 h1:gfKq8euLxV6NZP4Yg3HDTkjr1qn1/Yr+dr
go.opentelemetry.io/contrib/zpages v0.36.1/go.mod h1:C7wxlG7CEt/VI00b9e3gXrZ27nHnyC8I+fN32QtguWk=
go.opentelemetry.io/otel v1.10.0 h1:Y7DTJMR6zs1xkS/upamJYk0SxxN4C9AqRd77jmZnyY4=
go.opentelemetry.io/otel v1.10.0/go.mod h1:NbvWjCthWHKBEUMpf0/v8ZRZlni86PpGFEMA9pnQSnQ=
go.opentelemetry.io/otel/exporters/prometheus v0.32.1 h1:1+iSNGGCYoDAMuFDN2M+sYTwa5/wApb7yO/GpW5Vtzg=
go.opentelemetry.io/otel/exporters/prometheus v0.32.1/go.mod h1:t1ZclNSxaC2ztzbHxGU71mg3pkkaHyHcMUIK2Yvft0E=
go.opentelemetry.io/otel/metric v0.32.1 h1:ftff5LSBCIDwL0UkhBuDg8j9NNxx2IusvJ18q9h6RC4=
go.opentelemetry.io/otel/metric v0.32.1/go.mod h1:iLPP7FaKMAD5BIxJ2VX7f2KTuz//0QK2hEUyti5psqQ=
go.opentelemetry.io/otel/exporters/prometheus v0.32.2 h1:dZTvAy/wWVw90IMHJat9kXwxWt00L4idFIgDb+sI16s=
go.opentelemetry.io/otel/exporters/prometheus v0.32.2/go.mod h1:snD7bhlqxrqnStqHZr7vX7+Apab4+7T/gPV9axdAi2Q=
go.opentelemetry.io/otel/metric v0.32.2 h1:q4il3sGUfyfGJIJgjYwEnwWoI4XAHitisQ/Z2y9N3PA=
go.opentelemetry.io/otel/metric v0.32.2/go.mod h1:iLPP7FaKMAD5BIxJ2VX7f2KTuz//0QK2hEUyti5psqQ=
go.opentelemetry.io/otel/sdk v1.10.0 h1:jZ6K7sVn04kk/3DNUdJ4mqRlGDiXAVuIG+MMENpTNdY=
go.opentelemetry.io/otel/sdk v1.10.0/go.mod h1:vO06iKzD5baltJz1zarxMCNHFpUlUiOy4s65ECtn6kE=
go.opentelemetry.io/otel/sdk/metric v0.32.1 h1:S6AqzulzGQl+sTpYeAoVLw1SJbc2LYuKCMUmfEKG+zM=
go.opentelemetry.io/otel/sdk/metric v0.32.1/go.mod h1:Nn+Nt/7cKzm5ISmvLzNO5RLf0Xuv8/Qo8fkpr0JDOzs=
go.opentelemetry.io/otel/sdk/metric v0.32.2 h1:fZhnIvbNQGVFBZuRRWd0RLPQknvu+z79xb+lgT4IXEI=
go.opentelemetry.io/otel/sdk/metric v0.32.2/go.mod h1:VTnvPGgbUr5Uw8GkbXNUGH5GWGsWbmJjq4CSWWsuPlw=
go.opentelemetry.io/otel/trace v1.10.0 h1:npQMbR8o7mum8uF95yFbOEJffhs1sbCOfDh8zAJiH5E=
go.opentelemetry.io/otel/trace v1.10.0/go.mod h1:Sij3YYczqAdz+EhmGhE6TpTxUO5/F/AzrK+kxfGqySM=
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
Expand Down Expand Up @@ -609,8 +609,8 @@ golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220708085239-5a0f0661e09d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220808155132-1c4a2a72c664 h1:v1W7bwXHsnLLloWYTVEdvGvA7BHMeBYsPcF0GLDxIRs=
golang.org/x/sys v0.0.0-20220808155132-1c4a2a72c664/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8 h1:h+EGohizhe9XlX18rfpa8k8RAc5XyaeamM+0VHRd4lc=
golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
Expand Down
57 changes: 45 additions & 12 deletions internal/obsreportconfig/obsreportconfig.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,30 @@ import (
"go.opencensus.io/tag"

"go.opentelemetry.io/collector/config/configtelemetry"
"go.opentelemetry.io/collector/featuregate"
"go.opentelemetry.io/collector/internal/obsreportconfig/obsmetrics"
)

const (
// UseOtelForInternalMetricsfeatureGateID is the feature gate ID that controls whether the collector uses open
// telemetrySettings for internal metrics.
UseOtelForInternalMetricsfeatureGateID = "telemetry.useOtelForInternalMetrics"
)

func init() {
// register feature gate
RegisterInternalMetricFeatureGate(featuregate.GetRegistry())
}

// RegisterInternalMetricFeatureGate registers the Internal Metric feature gate to the passed in registry
func RegisterInternalMetricFeatureGate(registry *featuregate.Registry) {
registry.MustRegister(featuregate.Gate{
ID: UseOtelForInternalMetricsfeatureGateID,
Description: "controls whether the collector uses OpenTelemetry for internal metrics",
Enabled: false,
})
}

// ObsMetrics wraps OpenCensus View for Collector observability metrics
type ObsMetrics struct {
Views []*view.View
Expand All @@ -43,19 +64,11 @@ func Configure(level configtelemetry.Level) *ObsMetrics {
// allViews return the list of all views that needs to be configured.
func allViews() []*view.View {
var views []*view.View
var measures []*stats.Int64Measure
var tagKeys []tag.Key

// Receiver views.
measures := []*stats.Int64Measure{
obsmetrics.ReceiverAcceptedSpans,
obsmetrics.ReceiverRefusedSpans,
obsmetrics.ReceiverAcceptedMetricPoints,
obsmetrics.ReceiverRefusedMetricPoints,
obsmetrics.ReceiverAcceptedLogRecords,
obsmetrics.ReceiverRefusedLogRecords,
}
tagKeys := []tag.Key{
obsmetrics.TagKeyReceiver, obsmetrics.TagKeyTransport,
}
views = append(views, genViews(measures, tagKeys, view.Sum())...)
views = append(views, receiverViews()...)

// Scraper views.
measures = []*stats.Int64Measure{
Expand Down Expand Up @@ -103,6 +116,26 @@ func allViews() []*view.View {
return views
}

func receiverViews() []*view.View {
if featuregate.GetRegistry().IsEnabled(UseOtelForInternalMetricsfeatureGateID) {
bogdandrutu marked this conversation as resolved.
Show resolved Hide resolved
return nil
}

measures := []*stats.Int64Measure{
obsmetrics.ReceiverAcceptedSpans,
obsmetrics.ReceiverRefusedSpans,
obsmetrics.ReceiverAcceptedMetricPoints,
obsmetrics.ReceiverRefusedMetricPoints,
obsmetrics.ReceiverAcceptedLogRecords,
obsmetrics.ReceiverRefusedLogRecords,
}
tagKeys := []tag.Key{
obsmetrics.TagKeyReceiver, obsmetrics.TagKeyTransport,
}

return genViews(measures, tagKeys, view.Sum())
}

func genViews(
measures []*stats.Int64Measure,
tagKeys []tag.Key,
Expand Down
6 changes: 6 additions & 0 deletions obsreport/obsreport.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@ import (
"go.opentelemetry.io/otel/trace"
)

const (
scopeName = "go.opentelemetry.io/collector/obsreport"

nameSep = "/"
)

func recordError(span trace.Span, err error) {
if err != nil {
span.SetStatus(codes.Error, err.Error())
Expand Down