Class: Karafka::Web::Tracking::Consumers::Sampler::Metrics::Container

Inherits:
Os
  • Object
show all
Defined in:
lib/karafka/web/tracking/consumers/sampler/metrics/container.rb

Overview

Collects metrics from containerized environments (Docker, Kubernetes) Extends OS metrics with container-aware memory limit detection from cgroups Supports both cgroups v1 and v2

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Os

#cpu_usage, #cpus, #initialize, #memory_threads_ps, #memory_total_usage, #memory_usage, #threads

Constructor Details

This class inherits a constructor from Karafka::Web::Tracking::Consumers::Sampler::Metrics::Os

Class Method Details

.active?Boolean

Checks if running in a containerized environment with cgroups

Returns:

  • (Boolean)

    true if cgroups are available, false otherwise



35
36
37
# File 'lib/karafka/web/tracking/consumers/sampler/metrics/container.rb', line 35

def active?
  !cgroup_version.nil?
end

.memory_limitInteger?

Gets the memory limit for the container

Returns:

  • (Integer, nil)

    memory limit in kilobytes, or nil if not available



41
42
43
44
45
46
47
48
49
50
# File 'lib/karafka/web/tracking/consumers/sampler/metrics/container.rb', line 41

def memory_limit
  return @memory_limit if instance_variable_defined?(:@memory_limit)

  @memory_limit = case cgroup_version
                  when :v2
                    read_cgroup_v2_memory_limit
                  when :v1
                    read_cgroup_v1_memory_limit
                  end
end

Instance Method Details

#memory_sizeInteger

Note:

Memoized at instance level to avoid repeated class method calls

In containerized environments, returns the container’s memory limit from cgroups. Falls back to host memory if no limit is set.

Returns:

  • (Integer)

    total amount of memory in kilobytes



104
105
106
# File 'lib/karafka/web/tracking/consumers/sampler/metrics/container.rb', line 104

def memory_size
  @memory_size ||= self.class.memory_limit || super
end