module Datadog::Core::Environment::Container
For container environments
Constants
- CONTAINER_PATTERN
- CONTAINER_REGEX
- Descriptor
- FARGATE_14_CONTAINER_REGEX
- PLATFORM_REGEX
- POD_REGEX
- UUID_PATTERN
Public Instance Methods
container_id()
click to toggle source
# File lib/datadog/core/environment/container.rb, line 31 def container_id descriptor.container_id end
descriptor()
click to toggle source
# File lib/datadog/core/environment/container.rb, line 39 def descriptor @descriptor ||= Descriptor.new.tap do |descriptor| begin Cgroup.descriptors.each do |cgroup_descriptor| # Parse container data from cgroup descriptor path = cgroup_descriptor.path next if path.nil? # Split path into parts parts = path.split('/') parts.shift # Remove leading empty part # Read info from path next if parts.empty? platform = parts[0][PLATFORM_REGEX, :platform] container_id, task_uid = nil case parts.length when 0..1 next when 2 container_id = parts[-1][CONTAINER_REGEX, :container] \ || parts[-1][FARGATE_14_CONTAINER_REGEX, :container] else if (container_id = parts[-1][CONTAINER_REGEX, :container]) task_uid = parts[-2][POD_REGEX, :pod] || parts[1][POD_REGEX, :pod] else container_id = parts[-1][FARGATE_14_CONTAINER_REGEX, :container] end end # If container ID wasn't found, ignore. # Path might describe a non-container environment. next if container_id.nil? descriptor.platform = platform descriptor.container_id = container_id descriptor.task_uid = task_uid break end rescue StandardError => e Datadog.logger.error( "Error while parsing container info. Cause: #{e.message} Location: #{Array(e.backtrace).first}" ) end end end
platform()
click to toggle source
# File lib/datadog/core/environment/container.rb, line 27 def platform descriptor.platform end
task_uid()
click to toggle source
# File lib/datadog/core/environment/container.rb, line 35 def task_uid descriptor.task_uid end