elastic / apm-agent-dotnet

https://www.elastic.co/guide/en/apm/agent/dotnet/current/index.html
Apache License 2.0
579 stars 207 forks source link

Adding the field `container.id` to the logs through the log correlation feature #2183

Open chazragg opened 11 months ago

chazragg commented 11 months ago

I believe it would be beneficial to enhance the logs by incorporating container.id alongside ElasticApmTransactionID and ElasticApmTraceId when using the log correlation feature. Currently, the Elastic Agent exclusively includes the container.id field in traces and metrics sent to the APM server. While this certainly helps with correlation for linking traces back to logs and also certain metrics back to the infrastructure panel, there are some UI elementals such as Overview > Instances and Transactions > Trace sample > Investigate where you can click into the container logs and these only work if the container.id field is present in the logs

Describe alternatives you've considered The only way to do this currently would be to handle the collection and injection of the container id yourself on the application side but it seems wasteful to perform the same operation twice when the elastic Agent already performs this step and I believe it would be a small but effective addition.

WilliamRoxit commented 2 months ago

Also missing this. For now I just do this which works for now but might break in future: containerId = File.ReadAllLines("/proc/self/cgroup") .FirstOrDefault(x => x.Contains(":name=")) ?.Split('/') ?.Last(); Enrich.WithProperty("ContainerId", containerId);