Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for connection via UNIX Domain Socket(UDS) when sending trace spans from istio-proxy to Datadog Agent. #50816

Open
mugioka opened this issue May 2, 2024 · 3 comments

Comments

@mugioka
Copy link

mugioka commented May 2, 2024

Describe the feature request

Currently, we are unable to configure the Unix Domain Socket (UDS) to send tracing spans to Datadog. This limitation arises from the DataDogAddress function which only accepts values in the host:port format. Moreover, the Istiod-generated configuration below does not support UDS:

{
    “name”: “datadog_agent”,
    “type”: “STRICT_DNS”,
    “connectTimeout”: “1s”,
    “loadAssignment”: {
        “clusterName”: “datadog_agent”,
        “endpoints”: [
            {
                “lbEndpoints”: [
                    {
                        “endpoint”: {
                            “address”: {
                                “socketAddress”: {
                                    “address”: “datadog.example.svc.cluster.local”,
                                    “portValue”: 8126
                                }
                            }
                        }
                    }
                ]
            }
        ]
    },
    “respectDnsTtl”: true,
    “dnsLookupFamily”: “V4_ONLY”
}

From my understanding of the Envoy configuration, config.core.v3.SocketAddress does not support UDS. Therefore, we need to use config.core.v3.Pipe to send the tracing span via UDS.

Datadog supports UDS for receiving trace spans. Therefore, we would like to support that send trace spans via UDS to optimize the performance of traceable Istio-proxy.

Describe alternatives you've considered

Affected product area (please put an X in all that apply)

[ ] Ambient
[ ] Docs
[ ] Dual Stack
[ ] Installation
[ ] Networking
[ x ] Performance and Scalability
[ ] Extensions and Telemetry
[ ] Security
[ ] Test and Release
[ x ] User Experience
[ ] Developer Infrastructure

Affected features (please put an X in all that apply)

[ ] Multi Cluster
[ ] Virtual Machine
[ ] Multi Control Plane

Additional context

@mugioka mugioka changed the title Support for communication via UNIX Domain Socket(UDS) when sending trace spans from istio-proxy to Datadog Agent. Support for connection via UNIX Domain Socket(UDS) when sending trace spans from istio-proxy to Datadog Agent. May 2, 2024
@mugioka
Copy link
Author

mugioka commented May 5, 2024

Envoy internally uses Datadog integration for C++. Therefore, in order to send tracing spans to the Datadog agent via UDS (Unix Domain Socket), modifications are required to both Envoy and the Datadog C++ tracing library.

https://github.com/envoyproxy/envoy/blob/main/source/extensions/tracers/datadog/README.md

@mugioka mugioka closed this as not planned Won't fix, can't repro, duplicate, stale May 5, 2024
@mugioka
Copy link
Author

mugioka commented May 5, 2024

https://github.com/DataDog/dd-trace-cpp/blob/main/src/datadog/http_client.cpp

Datadog cpp lib supports unix domain sockets.

@mugioka mugioka reopened this May 5, 2024
@zirain
Copy link
Member

zirain commented May 6, 2024

need envoy support this first.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants