Skip to content

ecs resourcedetection enabled causes collector to not start outside of ecs #5852

@anuraaga

Description

@anuraaga

Currently, enabling the ecs resource detector seems to require an environment variable usually set by ECS, and if I set it to a dummy value such as ECS_CONTAINER_METADATA_URI_V4=http://aws.amazon.com, it panics at startup with something like

2021-10-21T07:04:45.301Z	error	ecs/metadata_ecs.go:101	Encountered unexpected error reading response from ECS Task Metadata Endpoint	{"kind": "processor", "name": "resourcedetection", "error": "invalid character '<' looking for beginning of value"}
github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor/internal/aws/ecs.fetch
	github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor@v0.36.0/internal/aws/ecs/metadata_ecs.go:101
github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor/internal/aws/ecs.(*ecsMetadataProviderImpl).fetchTaskMetaData
	github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor@v0.36.0/internal/aws/ecs/metadata_ecs.go:58
github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor/internal/aws/ecs.(*Detector).Detect
	github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor@v0.36.0/internal/aws/ecs/ecs.go:62
github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor/internal.(*ResourceProvider).detectResource
	github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor@v0.36.0/internal/resourcedetection.go:129
github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor/internal.(*ResourceProvider).Get.func1
	github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor@v0.36.0/internal/resourcedetection.go:114
sync.(*Once).doSlow
	sync/once.go:68
sync.(*Once).Do
	sync/once.go:59
github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor/internal.(*ResourceProvider).Get
	github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor@v0.36.0/internal/resourcedetection.go:110
github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor.(*resourceDetectionProcessor).Start
	github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor@v0.36.0/resourcedetection_processor.go:36
go.opentelemetry.io/collector/component/componenthelper.StartFunc.Start
	go.opentelemetry.io/collector@v0.36.0/component/componenthelper/component.go:28
go.opentelemetry.io/collector/service/internal/builder.BuiltPipelines.StartProcessors
	go.opentelemetry.io/collector@v0.36.0/service/internal/builder/pipelines_builder.go:58
go.opentelemetry.io/collector/service.(*service).Start
	go.opentelemetry.io/collector@v0.36.0/service/service.go:112
go.opentelemetry.io/collector/service.(*Collector).setupConfigurationComponents
	go.opentelemetry.io/collector@v0.36.0/service/collector.go:192
go.opentelemetry.io/collector/service.(*Collector).Run
	go.opentelemetry.io/collector@v0.36.0/service/collector.go:222
main.newCommand.func1
	github.com/aws-observability/aws-otel-collector/cmd/awscollector/main.go:135
github.com/spf13/cobra.(*Command).execute
	github.com/spf13/cobra@v1.2.1/command.go:856
github.com/spf13/cobra.(*Command).ExecuteC
	github.com/spf13/cobra@v1.2.1/command.go:974
github.com/spf13/cobra.(*Command).Execute
	github.com/spf13/cobra@v1.2.1/command.go:902
main.runInteractive
	github.com/aws-observability/aws-otel-collector/cmd/awscollector/main.go:89
main.run
	github.com/aws-observability/aws-otel-collector/cmd/awscollector/main_others.go:40
main.main
	github.com/aws-observability/aws-otel-collector/cmd/awscollector/main.go:76
runtime.main
	runtime/proc.go:255
Error: cannot start processors: invalid character '<' looking for beginning of value

I think it should still be possible to run a collector with the same config locally when troubleshooting, and this could be logged as an error without preventing collector startup entirely.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions