Skip to content

Commit

Permalink
Bumps OTC to v0.33.0 and fixes a bunch of errors introduced during mi…
Browse files Browse the repository at this point in the history
…gration (#170)

* Bump OpenTelemetry Collector Core to v0.33.0 and migrate the codebase
* Update sumologicexporter to work with v0.33.0
* Remove unused code
* Update testcase to proto v0.9

Co-authored-by: codeboten <aboten@lightstep.com>
  • Loading branch information
pmm-sumo and codeboten authored Aug 27, 2021
1 parent b133d7b commit aa4ff00
Show file tree
Hide file tree
Showing 36 changed files with 640 additions and 530 deletions.
10 changes: 5 additions & 5 deletions docs/Configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -394,7 +394,7 @@ receivers:
For details, see the [Filelog Receiver documentation][filelogreceiver_readme].

[opentelemetry-log-collection]: https://github.com/open-telemetry/opentelemetry-log-collection
[filelogreceiver_readme]: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.31.0/receiver/filelogreceiver
[filelogreceiver_readme]: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.33.0/receiver/filelogreceiver

#### Fluent Forward Receiver

Expand Down Expand Up @@ -442,7 +442,7 @@ receivers:

For details, see the [Syslog Receiver documentation][syslogreceiver_readme].

[syslogreceiver_readme]: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.31.0/receiver/syslogreceiver
[syslogreceiver_readme]: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.33.0/receiver/syslogreceiver

#### Statsd Receiver

Expand Down Expand Up @@ -486,7 +486,7 @@ receivers:
For details, see the [OTLP Receiver documentation][otlpreceiver_readme].

[otlp]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/otlp.md
[otlpreceiver_readme]: https://github.com/open-telemetry/opentelemetry-collector/tree/v0.31.0/receiver/otlpreceiver
[otlpreceiver_readme]: https://github.com/open-telemetry/opentelemetry-collector/tree/v0.33.0/receiver/otlpreceiver

#### TCPlog Receiver

Expand All @@ -502,7 +502,7 @@ receivers:

For details, see the [TCPlog Receiver documentation][tcplogreceiver_readme].

[tcplogreceiver_readme]: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.31.0/receiver/tcplogreceiver
[tcplogreceiver_readme]: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.33.0/receiver/tcplogreceiver

#### UDPlog Receiver

Expand All @@ -518,7 +518,7 @@ receivers:

For details, see the [UDPlog Receiver documentation][udplogreceiver_readme].

[udplogreceiver_readme]: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.31.0/receiver/udplogreceiver
[udplogreceiver_readme]: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.33.0/receiver/udplogreceiver

#### Receivers from OpenTelemetry Collector

Expand Down
18 changes: 9 additions & 9 deletions docs/Migration.md
Original file line number Diff line number Diff line change
Expand Up @@ -301,12 +301,12 @@ receivers:
start_at: beginning
## encoding is substitute for Installed Collector `Encoding`.
## List of supported encodings:
## https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.31.0/receiver/filelogreceiver
## https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.33.0/receiver/filelogreceiver
encoding: utf-8
## multiline is Opentelemetry Collector substitute for `Enable Multiline Processing`.
## As multiline detection behaves slightly different than in Installed Collector
## the following section in filelog documentation is recommended to read:
## https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.31.0/receiver/filelogreceiver#multiline-configuration
## https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.33.0/receiver/filelogreceiver#multiline-configuration
multiline:
## line_start_pattern is substitute of `Boundary Regex`.
line_start_pattern: ^\d{4}
Expand Down Expand Up @@ -751,7 +751,7 @@ receivers:
listen_address: 0.0.0.0:514
## Add network attributes
## `net.peer.name` is going to be used as exporters.sumologic.source_host
## rel: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.31.0/receiver/tcplogreceiver#configuration
## rel: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.33.0/receiver/tcplogreceiver#configuration
add_attributes: true
## Use udpreceiver for UDP protocol
udpreceiver/first receiver:
Expand All @@ -760,7 +760,7 @@ receivers:
listen_address: 0.0.0.0:514
## Add network attributes
## `net.peer.name` is going to be used as exporters.sumologic.source_host
## rel: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.31.0/receiver/udplogreceiver#configuration
## rel: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.33.0/receiver/udplogreceiver#configuration
add_attributes: true

processors:
Expand Down Expand Up @@ -1281,11 +1281,11 @@ Remote Windows Performance Source is not supported by the OpenTelemetry Collecto

Windows Active Directory Source is not supported by the OpenTelemetry Collector.

[resourceprocessor]: https://github.com/open-telemetry/opentelemetry-collector/tree/v0.31.0/processor/resourceprocessor
[multiline]: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.31.0/receiver/filelogreceiver#multiline-configuration
[supported_encodings]: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.31.0/receiver/filelogreceiver#supported-encodings
[udplogreceiver]: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.31.0/receiver/udplogreceiver
[tcplogreceiver]: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.31.0/receiver/tcplogreceiver
[resourceprocessor]: https://github.com/open-telemetry/opentelemetry-collector/tree/v0.33.0/processor/resourceprocessor
[multiline]: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.33.0/receiver/filelogreceiver#multiline-configuration
[supported_encodings]: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.33.0/receiver/filelogreceiver#supported-encodings
[udplogreceiver]: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.33.0/receiver/udplogreceiver
[tcplogreceiver]: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.33.0/receiver/tcplogreceiver
[sumologicsyslog]: ../pkg/processor/sumologicsyslogprocessor/README.md
[network-semantic-convention]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/span-general.md#general-network-connection-attributes
[sumologicextension]: ../pkg/extension/sumologicextension/README.md
Expand Down
58 changes: 29 additions & 29 deletions otelcolbuilder/.otelcol-builder.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,65 +6,65 @@ dist:
module: github.com/SumoLogic/opentelemetry-collector-builder

# the OpenTelemetry Collector version to use as base for the distribution.
otelcol_version: 0.31.0
otelcol_version: 0.33.0
# the path to write the output (sources and binary).
output_path: ./cmd

exporters:
# Exporters with non-upstreamed changes:
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sumologicexporter v0.31.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sumologicexporter v0.33.0"
# Upstream exporters:
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter v0.31.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter v0.33.0"

processors:
# Processors with non-upstreamed changes:
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/processor/cascadingfilterprocessor v0.31.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/processor/k8sprocessor v0.31.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/processor/sourceprocessor v0.31.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/processor/sumologicsyslogprocessor v0.31.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/processor/cascadingfilterprocessor v0.33.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/processor/k8sprocessor v0.33.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/processor/sourceprocessor v0.33.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/processor/sumologicsyslogprocessor v0.33.0"
# Upstream processors:
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbyattrsprocessor v0.31.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbytraceprocessor v0.31.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricstransformprocessor v0.31.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor v0.31.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/processor/routingprocessor v0.31.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanmetricsprocessor v0.31.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor v0.31.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbyattrsprocessor v0.33.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbytraceprocessor v0.33.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricstransformprocessor v0.33.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor v0.33.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/processor/routingprocessor v0.33.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanmetricsprocessor v0.33.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor v0.33.0"

receivers:
# Receivers with non-upstreamed changes:
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/telegrafreceiver v0.31.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/telegrafreceiver v0.33.0"
# Upstream receivers:
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver v0.31.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/fluentforwardreceiver v0.31.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/syslogreceiver v0.31.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/statsdreceiver v0.31.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/tcplogreceiver v0.31.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/udplogreceiver v0.31.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver v0.33.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/fluentforwardreceiver v0.33.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/syslogreceiver v0.33.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/statsdreceiver v0.33.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/tcplogreceiver v0.33.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/udplogreceiver v0.33.0"

extensions:
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/extension/sumologicextension v0.31.0"
- gomod: "github.com/open-telemetry/opentelemetry-collector-contrib/extension/sumologicextension v0.33.0"

# Replacement paths are relative to the output_path (location of source files)
replaces:
# This is needed because of:
# failed to download go modules: exit status 1.
# Output: "go: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver@v0.31.0 requires
# Output: "go: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver@v0.33.0 requires
# github.com/open-telemetry/opentelemetry-collector-contrib/internal/stanza@v0.0.0-00010101000000-000000000000: invalid version: unknown revision 000000000000"
- github.com/open-telemetry/opentelemetry-collector-contrib/internal/stanza => github.com/open-telemetry/opentelemetry-collector-contrib/internal/stanza v0.31.0
- github.com/open-telemetry/opentelemetry-collector-contrib/internal/stanza => github.com/open-telemetry/opentelemetry-collector-contrib/internal/stanza v0.33.0

# This is needed because of:
# failed to download go modules: exit status 1.
# Output: "go: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver@v0.31.0 requires
# Output: "go: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver@v0.33.0 requires
# github.com/open-telemetry/opentelemetry-collector-contrib/internal/stanza@v0.0.0-00010101000000-000000000000 requires
# github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage@v0.0.0-00010101000000-000000000000: invalid version: unknown revision 000000000000"
- github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage => github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.31.0
- github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage => github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.33.0

# This is needed because of:
# failed to download go modules: exit status 1.
# Output: "go: github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbytraceprocessor@v0.31.0 requires
# Output: "go: github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbytraceprocessor@v0.33.0 requires
# github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersignal@v0.0.0-00010101000000-000000000000: invalid version: unknown revision 000000000000"
- github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersignal => github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersignal v0.31.0
- github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersignal => github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersignal v0.33.0

# ----------------------------------------------------------------------------
# Customized receivers
Expand All @@ -88,4 +88,4 @@ replaces:

# ----------------------------------------------------------------------------
# Customized core
- go.opentelemetry.io/collector => github.com/SumoLogic/opentelemetry-collector v0.31.0-sumo-1
- go.opentelemetry.io/collector => github.com/SumoLogic/opentelemetry-collector v0.33.0-sumo-1
2 changes: 1 addition & 1 deletion otelcolbuilder/Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
BINARY_NAME ?= otelcol-sumo
BUILDER_VERSION ?= 0.31.0
BUILDER_VERSION ?= 0.33.0
BUILDER_REPO ?= github.com/open-telemetry/opentelemetry-collector-builder
BUILDER_BIN_PATH ?= ${HOME}/bin/opentelemetry-collector-builder
VERSION ?= "$(shell git describe --tags --abbrev=10)"
Expand Down
53 changes: 20 additions & 33 deletions pkg/exporter/sumologicexporter/carbon_formatter.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import (
"strings"

"go.opentelemetry.io/collector/model/pdata"
tracetranslator "go.opentelemetry.io/collector/translator/trace"
)

// carbon2TagString returns all attributes as space spearated key=value pairs.
Expand All @@ -45,7 +44,7 @@ func carbon2TagString(record metricPair) string {
returnValue = append(returnValue, fmt.Sprintf(
"%s=%s",
sanitizeCarbonString(k),
sanitizeCarbonString(tracetranslator.AttributeValueToString(v)),
sanitizeCarbonString(pdata.AttributeValueToString(v)),
))
return true
})
Expand All @@ -64,54 +63,42 @@ func sanitizeCarbonString(text string) string {
return strings.NewReplacer(" ", "_", "=", ":", "\n", "_").Replace(text)
}

// carbon2IntRecord converts IntDataPoint to carbon2 metric string
// carbon2NumberRecord converts NumberDataPoint to carbon2 metric string
// with additional information from metricPair.
func carbon2IntRecord(record metricPair, dataPoint pdata.IntDataPoint) string {
return fmt.Sprintf("%s %d %d",
carbon2TagString(record),
dataPoint.Value(),
dataPoint.Timestamp()/1e9,
)
}

// carbon2DoubleRecord converts DoubleDataPoint to carbon2 metric string
// with additional information from metricPair.
func carbon2DoubleRecord(record metricPair, dataPoint pdata.NumberDataPoint) string {
return fmt.Sprintf("%s %g %d",
carbon2TagString(record),
dataPoint.Value(),
dataPoint.Timestamp()/1e9,
)
func carbon2NumberRecord(record metricPair, dataPoint pdata.NumberDataPoint) string {
switch dataPoint.Type() {
case pdata.MetricValueTypeDouble:
return fmt.Sprintf("%s %g %d",
carbon2TagString(record),
dataPoint.DoubleVal(),
dataPoint.Timestamp()/1e9,
)
case pdata.MetricValueTypeInt:
return fmt.Sprintf("%s %d %d",
carbon2TagString(record),
dataPoint.IntVal(),
dataPoint.Timestamp()/1e9,
)
}
return ""
}

// carbon2metric2String converts metric to Carbon2 formatted string.
func carbon2Metric2String(record metricPair) string {
var nextLines []string

switch record.metric.DataType() {
case pdata.MetricDataTypeIntGauge:
dps := record.metric.IntGauge().DataPoints()
nextLines = make([]string, 0, dps.Len())
for i := 0; i < dps.Len(); i++ {
nextLines = append(nextLines, carbon2IntRecord(record, dps.At(i)))
}
case pdata.MetricDataTypeIntSum:
dps := record.metric.IntSum().DataPoints()
nextLines = make([]string, 0, dps.Len())
for i := 0; i < dps.Len(); i++ {
nextLines = append(nextLines, carbon2IntRecord(record, dps.At(i)))
}
case pdata.MetricDataTypeGauge:
dps := record.metric.Gauge().DataPoints()
nextLines = make([]string, 0, dps.Len())
for i := 0; i < dps.Len(); i++ {
nextLines = append(nextLines, carbon2DoubleRecord(record, dps.At(i)))
nextLines = append(nextLines, carbon2NumberRecord(record, dps.At(i)))
}
case pdata.MetricDataTypeSum:
dps := record.metric.Sum().DataPoints()
nextLines = make([]string, 0, dps.Len())
for i := 0; i < dps.Len(); i++ {
nextLines = append(nextLines, carbon2DoubleRecord(record, dps.At(i)))
nextLines = append(nextLines, carbon2NumberRecord(record, dps.At(i)))
}
// Skip complex metrics
case pdata.MetricDataTypeHistogram:
Expand Down
8 changes: 0 additions & 8 deletions pkg/exporter/sumologicexporter/carbon_formatter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,14 +82,6 @@ func TestCarbonMetricDataTypeSummary(t *testing.T) {
assert.Equal(t, expected, result)
}

func TestCarbonMetricDataTypeIntHistogram(t *testing.T) {
metric := exampleIntHistogramMetric()

result := carbon2Metric2String(metric)
expected := ``
assert.Equal(t, expected, result)
}

func TestCarbonMetricDataTypeHistogram(t *testing.T) {
metric := exampleHistogramMetric()

Expand Down
12 changes: 3 additions & 9 deletions pkg/exporter/sumologicexporter/exporter.go
Original file line number Diff line number Diff line change
Expand Up @@ -138,9 +138,7 @@ func newLogsExporter(

return exporterhelper.NewLogsExporter(
cfg,
component.ExporterCreateSettings{
Logger: params.Logger,
},
params,
se.pushLogsData,
// Disable exporterhelper Timeout, since we are using a custom mechanism
// within exporter itself
Expand All @@ -163,9 +161,7 @@ func newMetricsExporter(

return exporterhelper.NewMetricsExporter(
cfg,
component.ExporterCreateSettings{
Logger: params.Logger,
},
params,
se.pushMetricsData,
// Disable exporterhelper Timeout, since we are using a custom mechanism
// within exporter itself
Expand All @@ -188,9 +184,7 @@ func newTracesExporter(

return exporterhelper.NewTracesExporter(
cfg,
component.ExporterCreateSettings{
Logger: params.Logger,
},
params,
se.pushTracesData,
// Disable exporterhelper Timeout, since we are using a custom mechanism
// within exporter itself
Expand Down
Loading

0 comments on commit aa4ff00

Please sign in to comment.