Closed
Description
Component(s)
exporter/elasticsearch
What happened?
Description
The Elasticsearch exporter assumes all scope attribute values are strings, and will panic if they're not.
Steps to Reproduce
Run the collector with the attached config. Yes, use a logs pipeline with the hostmetrics receiver -- originally an accident on my part, but it triggers the bug.
Expected Result
The exporter should encode scope attribute values with the original type rather than coercing to a string.
Actual Result
The exporter panics.
Collector version
v0.119.0
Environment information
Environment
N/A
OpenTelemetry Collector configuration
receivers:
hostmetrics:
scrapers:
cpu: {}
exporters:
elasticsearch:
endpoint: <snip>
api_key: <snip>
service:
pipelines:
logs:
receivers: [hostmetrics]
processors: []
exporters: [elasticsearch]
Log output
panic: interface conversion: interface {} is bool, not string
goroutine 1 [running]:
github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.scopeToAttributes({0xc00075bab0?, 0xc001b03a4c?})
/home/andrew/projects/opentelemetry-collector-contrib/exporter/elasticsearchexporter/model.go:337 +0x27d
github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.(*encodeModel).encodeLogDefaultMode(0xc001b02690, {0xc000dd6f78?, 0xc001b03a4c?}, {0xc000d91300?, 0xc001b03a4c?}, {0xc00075bab0?, 0xc001b03a4c?}, {{0x10a0d4fe,
0x14}, {0x0, ...}, ...})
/home/andrew/projects/opentelemetry-collector-contrib/exporter/elasticsearchexporter/model.go:136 +0x8e5
github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.(*encodeModel).encodeLog(0xc001b02690, {0xc000dd6f78?, 0xc001b03a4c?}, {0x0, 0x0}, {0xc000d91300?, 0xc001b03a4c?}, {0xc00075bab0?, 0xc001b03a4c?}, {0x0, ...},
...)
/home/andrew/projects/opentelemetry-collector-contrib/exporter/elasticsearchexporter/model.go:113 +0x166
github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.(*elasticsearchExporter).pushLogRecord(0xc000bc8540, {0x120d3368, 0xc00075bb20}, {0xc000dd6f78?, 0xc001b03a4c?}, {0x0, 0x0}, {0xc000d91300?, 0xc001b03a4c?}, {0
xc00075bab0, ...}, ...)
/home/andrew/projects/opentelemetry-collector-contrib/exporter/elasticsearchexporter/exporter.go:187 +0x54b
github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.(*elasticsearchExporter).pushLogsData(0xc000bc8540, {0x120d3368, 0xc00075bb20}, {0xc0011a3f08?, 0xc001b03a4c?})
/home/andrew/projects/opentelemetry-collector-contrib/exporter/elasticsearchexporter/exporter.go:138 +0xb37
go.opentelemetry.io/collector/exporter/exporterhelper.(*logsRequest).Export(0xc000d81d60, {0x120d3368, 0xc00075bb20})
/home/andrew/go/pkg/mod/go.opentelemetry.io/collector/[email protected]/exporterhelper/logs.go:64 +0x83
go.opentelemetry.io/collector/exporter/exporterhelper/internal.(*TimeoutSender).Send(0xc000f645a0, {0x120d32c0, 0xc000c17980}, {0x120ac350, 0xc000d81d60})
/home/andrew/go/pkg/mod/go.opentelemetry.io/collector/[email protected]/exporterhelper/internal/timeout_sender.go:53 +0xee
go.opentelemetry.io/collector/exporter/exporterhelper/internal.(*obsReportSender[...]).Send(0x1200f660, {0x120d32f8, 0xc000594dc0}, {0x120ac350, 0xc000d81d60})
/home/andrew/go/pkg/mod/go.opentelemetry.io/collector/[email protected]/exporterhelper/internal/obs_report_sender.go:28 +0x21e
go.opentelemetry.io/collector/exporter/exporterhelper/internal.(*BaseExporter).Send(0xc000685a40, {0x120d32f8, 0xc000594dc0}, {0x120ac350, 0xc000d81d60})
/home/andrew/go/pkg/mod/go.opentelemetry.io/collector/[email protected]/exporterhelper/internal/base_exporter.go:129 +0xa4
go.opentelemetry.io/collector/exporter/exporterhelper.NewLogsRequest.func1({0x120d32f8, 0xc000594dc0}, {0xc0011a3f08?, 0xc001b03a4c?})
/home/andrew/go/pkg/mod/go.opentelemetry.io/collector/[email protected]/exporterhelper/logs.go:142 +0x3c5
go.opentelemetry.io/collector/consumer.ConsumeLogsFunc.ConsumeLogs(...)
/home/andrew/go/pkg/mod/go.opentelemetry.io/collector/[email protected]/logs.go:26
go.opentelemetry.io/collector/consumer.ConsumeLogsFunc.ConsumeLogs(...)
/home/andrew/go/pkg/mod/go.opentelemetry.io/collector/[email protected]/logs.go:26
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/hostmetricsreceiver.(*hostEntitiesReceiver).sendEntityEvent(0xc000ad79b0, {0x120d32f8, 0xc000594dc0})
/home/andrew/projects/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/receiver.go:75 +0x484
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/hostmetricsreceiver.(*hostEntitiesReceiver).Start(0xc000ad79b0, {0x120d16d0, 0x1a3d1860}, {0x4153a5?, 0x10?})
/home/andrew/projects/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/receiver.go:33 +0xba
go.opentelemetry.io/collector/service/internal/graph.(*Graph).StartAll(0xc000dd6360, {0x120d16d0, 0x1a3d1860}, 0xc00092ac60)
/home/andrew/go/pkg/mod/go.opentelemetry.io/collector/[email protected]/internal/graph/graph.go:419 +0x3fd
go.opentelemetry.io/collector/service.(*Service).Start(0xc0014cbcb0, {0x120d16d0, 0x1a3d1860})
/home/andrew/go/pkg/mod/go.opentelemetry.io/collector/[email protected]/service.go:267 +0x51a
go.opentelemetry.io/collector/otelcol.(*Collector).setupConfigurationComponents(0xc0007810e0, {0x120d16d0, 0x1a3d1860})
/home/andrew/go/pkg/mod/go.opentelemetry.io/collector/[email protected]/collector.go:231 +0xd25
go.opentelemetry.io/collector/otelcol.(*Collector).Run(0xc0007810e0, {0x120d16d0, 0x1a3d1860})
/home/andrew/go/pkg/mod/go.opentelemetry.io/collector/[email protected]/collector.go:285 +0x6b
go.opentelemetry.io/collector/otelcol.NewCommand.func1(0xc0004cc308, {0x10996e15?, 0x7?, 0x1098af58?})
/home/andrew/go/pkg/mod/go.opentelemetry.io/collector/[email protected]/command.go:36 +0x13c
github.com/spf13/cobra.(*Command).execute(0xc0004cc308, {0xc0000b7ea0, 0x2, 0x2})
/home/andrew/go/pkg/mod/github.com/spf13/[email protected]/command.go:985 +0x10f4
github.com/spf13/cobra.(*Command).ExecuteC(0xc0004cc308)
/home/andrew/go/pkg/mod/github.com/spf13/[email protected]/command.go:1117 +0x656
github.com/spf13/cobra.(*Command).Execute(0xc0004cc308)
/home/andrew/go/pkg/mod/github.com/spf13/[email protected]/command.go:1041 +0x27
main.runInteractive({0x10dc7ce8, {{0x109cd5ab, 0xe}, {0x10bbc707, 0x3b}, {0x109b2886, 0xb}}, 0x0, {{{0x0, 0x0, ...}, ...}}, ...})
/home/andrew/projects/opentelemetry-collector-contrib/cmd/otelcontribcol/main.go:61 +0x5d
main.run(...)
/home/andrew/projects/opentelemetry-collector-contrib/cmd/otelcontribcol/main_others.go:10
main.main()
/home/andrew/projects/opentelemetry-collector-contrib/cmd/otelcontribcol/main.go:54 +0x778
exit status 2
Additional context
No response