You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Describe the bug
Attempting to send internal telemetry over Unix socket fails, error is logged and the OTel process is terminated.
Steps to reproduce
In internal telemetry config, try to use unix:otlp.sock instead of URI in config.service.telemetry.metrics.readers[periodic].exporters.otlp.endpoint
What did you expect to see?
Unix socket recognized properly as internal telemetry endpoint, internal telemetry metrics are being sent to Unix socket in the same way app container in the same pod does.
What did you see instead?
Pod fails to start, sidecar OTel Collector container logs error:
2024/12/17 09:29:01 collector server run finished with error: failed to create metric provider: parse "http://unix:otlp.sock": invalid port ":otlp.sock" after host
What version did you use?
We run OTel Collectors in our k8s clusters, installed as Helm charts.
Chart version: opentelemetry-operator:0.74.3
OTel image version override: 0.115.1 (tried on 0.114.0 too)
What config did you use?
config:
service:
telemetry:
metrics:
level: detailed
readers:
- periodic:
interval: 10000
exporter:
otlp:
protocol: grpc/protobuf
endpoint: unix:otlp.sock # <- only network URI is being accepted due to address:port validation
Environment
All workloads are run in Azure k8s/AKS v1.30
Additional context
It looks like the error hints on what's happening:
2024/12/17 09:29:01 collector server run finished with error: failed to create metric provider: parse "http://unix:otlp.sock": invalid port ":otlp.sock" after host
Instead of accepting the endpoint address the way it is, the validation adds http:// to the beginning of the string, and considers everything after colon as the port, like :<port_expected>.
OTel Collector OTLP exporter documentation refers to the gRPC name resolution specification which should allow unix sockets in unix:socket syntax, so this extra endpoint address validation looks excessive and actually breaks the usage of unix sockets.
The text was updated successfully, but these errors were encountered:
There is a bit of a problem here, the "exporter" under the periodic reader is not a collector exporter, but an otel-go exporter and I am not sure how they recommend that to be configured.
Describe the bug
Attempting to send internal telemetry over Unix socket fails, error is logged and the OTel process is terminated.
Steps to reproduce
In internal telemetry config, try to use
unix:otlp.sock
instead of URI inconfig.service.telemetry.metrics.readers[periodic].exporters.otlp.endpoint
What did you expect to see?
Unix socket recognized properly as internal telemetry endpoint, internal telemetry metrics are being sent to Unix socket in the same way app container in the same pod does.
What did you see instead?
Pod fails to start, sidecar OTel Collector container logs error:
What version did you use?
We run OTel Collectors in our k8s clusters, installed as Helm charts.
Chart version:
opentelemetry-operator:0.74.3
OTel image version override:
0.115.1
(tried on0.114.0
too)What config did you use?
Environment
All workloads are run in Azure k8s/AKS v1.30
Additional context
It looks like the error hints on what's happening:
Instead of accepting the endpoint address the way it is, the validation adds
http://
to the beginning of the string, and considers everything after colon as the port, like:<port_expected>
.OTel Collector OTLP exporter documentation refers to the gRPC name resolution specification which should allow unix sockets in
unix:socket
syntax, so this extra endpoint address validation looks excessive and actually breaks the usage of unix sockets.The text was updated successfully, but these errors were encountered: