Search code examples
azuredockercontainersazure-container-instancesjaeger

Can't send traces to Jaeger in Azure container instances: remote connection closed in .NET application


I have deployed Jaeger on Azure Container Instances and successfully exposed the required ports for Jaeger to receive and display traces. While I can access the Jaeger UI without any issues, I'm encountering a problem when sending traces from my .NET application. The application throws an exception with the following message:

Status(StatusCode="Unimplemented", Detail="unknown service opentelemetry.proto.collector.trace.v1.TraceService")

I have attempted deploying Jaeger on both Azure Container Instances and a virtual machine, but the result remains the same. I have also ensured that firewall rules are properly configured to allow access. Despite being able to access the Jaeger UI, I am unable to send traces successfully.

Environment:

Docker Image: Jaeger all-in-one docker Azure CLI command used to create container instance: css

az container create -g [resource group name] --name [container instance name]--image jaegertracing/all-in-one:latest --cpu 2 --memory 8 --os-type Linux --ports 13133 16686 4317 4318 --dns-name-label [my DNS label]

I have checked network connectivity, confirmed that the necessary ports are exposed, and reviewed the Jaeger collector and .NET application configurations. However, the issue persists. Any assistance in resolving this problem would be greatly appreciated.


Solution

  • Finally, I found the reason why this was happening. The Otlp Collector was not enabled in the Jaeger-all-in-one instance by default. You have to enable it by setting the environment variable.

    The azure clie command to enable it is:

    az container create -g [resource group name] --name [container instance name]--image jaegertracing/all-in-one:latest --cpu 2 --memory 8 --os-type Linux --ports 13133 16686 4317 4318 --dns-name-label [my DNS label] --environment-variables "COLLECTOR_OTLP_ENABLED=true"