Skip to content

Commit

Permalink
Instrument obsreport.Processor (open-telemetry#6607)
Browse files Browse the repository at this point in the history
* Instrument obsreport.Processor

* add processor promchecker tests

* add chloggen

* run make genpdata and fix linter errors

* address review feedback and retest

* pass cfg into createOtelMetrics
  • Loading branch information
moh-osman3 authored and bogdandrutu committed Nov 28, 2022
1 parent 30cac33 commit 782818a
Show file tree
Hide file tree
Showing 21 changed files with 558 additions and 166 deletions.
11 changes: 11 additions & 0 deletions .chloggen/depcollector.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
change_type: deprecation

# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver)
component: service

# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
note: Deprecate service.[Collector|NewSvcHandler|CollectorSettings|State|NewCommand] in favor of collector package"

# One or more tracking issues or pull requests related to the change
issues: [6608]
11 changes: 11 additions & 0 deletions .chloggen/obsreport-processor.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
change_type: enhancement

# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver)
component: obsreport

# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
note: "Instrument `obsreport.Processor` metrics with otel-go"

# One or more tracking issues or pull requests related to the change
issues: [6607]
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
//go:build windows
// +build windows

package service
package collector

import (
"os"
Expand All @@ -38,7 +38,7 @@ func TestNewSvcHandler(t *testing.T) {
factories, err := componenttest.NopFactories()
require.NoError(t, err)

s := NewSvcHandler(CollectorSettings{BuildInfo: component.NewDefaultBuildInfo(), Factories: factories})
s := NewSvcHandler(Settings{BuildInfo: component.NewDefaultBuildInfo(), Factories: factories})

colDone := make(chan struct{})
requests := make(chan svc.ChangeRequest)
Expand Down
20 changes: 15 additions & 5 deletions service/command_test.go → collector/command_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.

package service
package collector

import (
"path/filepath"
Expand All @@ -23,28 +23,38 @@ import (

"go.opentelemetry.io/collector/component"
"go.opentelemetry.io/collector/component/componenttest"
"go.opentelemetry.io/collector/confmap"
"go.opentelemetry.io/collector/confmap/converter/expandconverter"
"go.opentelemetry.io/collector/confmap/provider/fileprovider"
)

func TestNewCommandVersion(t *testing.T) {
cmd := NewCommand(CollectorSettings{BuildInfo: component.BuildInfo{Version: "test_version"}})
cmd := NewCommand(Settings{BuildInfo: component.BuildInfo{Version: "test_version"}})
assert.Equal(t, "test_version", cmd.Version)
}

func TestNewCommandNoConfigURI(t *testing.T) {
factories, err := componenttest.NopFactories()
require.NoError(t, err)

cmd := NewCommand(CollectorSettings{Factories: factories})
cmd := NewCommand(Settings{Factories: factories})
require.Error(t, cmd.Execute())
}

func TestNewCommandInvalidComponent(t *testing.T) {
factories, err := componenttest.NopFactories()
require.NoError(t, err)

cfgProvider, err := NewConfigProvider(newDefaultConfigProviderSettings([]string{filepath.Join("testdata", "otelcol-invalid.yaml")}))
cfgProvider, err := NewConfigProvider(
ConfigProviderSettings{
ResolverSettings: confmap.ResolverSettings{
URIs: []string{filepath.Join("testdata", "otelcol-invalid.yaml")},
Providers: map[string]confmap.Provider{"file": fileprovider.New()},
Converters: []confmap.Converter{expandconverter.New()},
},
})
require.NoError(t, err)

cmd := NewCommand(CollectorSettings{Factories: factories, ConfigProvider: cfgProvider})
cmd := NewCommand(Settings{Factories: factories, ConfigProvider: cfgProvider})
require.Error(t, cmd.Execute())
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.

package service
package collector

import (
"context"
Expand All @@ -30,17 +30,18 @@ import (
"go.opentelemetry.io/collector/confmap"
"go.opentelemetry.io/collector/confmap/provider/fileprovider"
"go.opentelemetry.io/collector/confmap/provider/yamlprovider"
"go.opentelemetry.io/collector/service"
"go.opentelemetry.io/collector/service/telemetry"
)

var configNop = &Config{
var configNop = &service.Config{
Receivers: map[component.ID]component.Config{component.NewID("nop"): componenttest.NewNopReceiverFactory().CreateDefaultConfig()},
Processors: map[component.ID]component.Config{component.NewID("nop"): componenttest.NewNopProcessorFactory().CreateDefaultConfig()},
Exporters: map[component.ID]component.Config{component.NewID("nop"): componenttest.NewNopExporterFactory().CreateDefaultConfig()},
Extensions: map[component.ID]component.Config{component.NewID("nop"): componenttest.NewNopExtensionFactory().CreateDefaultConfig()},
Service: ConfigService{
Service: service.ConfigService{
Extensions: []component.ID{component.NewID("nop")},
Pipelines: map[component.ID]*ConfigServicePipeline{
Pipelines: map[component.ID]*service.ConfigServicePipeline{
component.NewID("traces"): {
Receivers: []component.ID{component.NewID("nop")},
Processors: []component.ID{component.NewID("nop")},
Expand Down
66 changes: 66 additions & 0 deletions collector/moved.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
// Copyright The OpenTelemetry Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Package collector handles the command-line, configuration, and runs the
// OpenTelemetry Collector.
package collector // import "go.opentelemetry.io/collector/collector"

import (
"go.opentelemetry.io/collector/service"
)

// State defines Collector's state.
type State = service.State //nolint:staticcheck

const (
StateStarting = service.StateStarting //nolint:staticcheck
StateRunning = service.StateRunning //nolint:staticcheck
StateClosing = service.StateClosing //nolint:staticcheck
StateClosed = service.StateClosed //nolint:staticcheck
)

// Collector represents a server providing the OpenTelemetry Collector service.
type Collector = service.Collector //nolint:staticcheck

// New creates and returns a new instance of Collector.
var New = service.New //nolint:staticcheck

// Settings holds configuration for creating a new Collector.
type Settings = service.CollectorSettings //nolint:staticcheck

// ConfigProvider provides the service configuration.
//
// The typical usage is the following:
//
// cfgProvider.Get(...)
// cfgProvider.Watch() // wait for an event.
// cfgProvider.Get(...)
// cfgProvider.Watch() // wait for an event.
// // repeat Get/Watch cycle until it is time to shut down the Collector process.
// cfgProvider.Shutdown()
type ConfigProvider = service.ConfigProvider //nolint:staticcheck

// ConfigProviderSettings are the settings to configure the behavior of the ConfigProvider.
type ConfigProviderSettings = service.ConfigProviderSettings //nolint:staticcheck

// NewConfigProvider returns a new ConfigProvider that provides the service configuration:
// * Initially it resolves the "configuration map":
// - Retrieve the confmap.Conf by merging all retrieved maps from the given `locations` in order.
// - Then applies all the confmap.Converter in the given order.
//
// * Then unmarshalls the confmap.Conf into the service Config.
var NewConfigProvider = service.NewConfigProvider //nolint:staticcheck

// NewCommand constructs a new cobra.Command using the given CollectorSettings.
var NewCommand = service.NewCommand //nolint:staticcheck
25 changes: 25 additions & 0 deletions collector/moved_windows.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// Copyright The OpenTelemetry Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

//go:build windows
// +build windows

package collector // import "go.opentelemetry.io/collector/collector"

import (
"go.opentelemetry.io/collector/service"
)

// NewSvcHandler constructs a new svc.Handler using the given CollectorSettings.
var NewSvcHandler = service.NewSvcHandler //nolint:staticcheck
18 changes: 18 additions & 0 deletions collector/testdata/otelcol-invalid.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
receivers:
nop:

processors:
nop:

exporters:
nop:

service:
telemetry:
metrics:
address: localhost:8888
pipelines:
traces:
receivers: [nop]
processors: [invalid]
exporters: [nop]
30 changes: 30 additions & 0 deletions collector/testdata/otelcol-nop.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
receivers:
nop:

processors:
nop:

exporters:
nop:

extensions:
nop:

service:
telemetry:
metrics:
address: localhost:8888
extensions: [nop]
pipelines:
traces:
receivers: [nop]
processors: [nop]
exporters: [nop]
metrics:
receivers: [nop]
processors: [nop]
exporters: [nop]
logs:
receivers: [nop]
processors: [nop]
exporters: [nop]
Loading

0 comments on commit 782818a

Please sign in to comment.