read!

in lib/elastic_apm/metrics/jvm_set.rb [40:73]


      def read!
        return if disabled?

        heap = platform_bean.get_heap_memory_usage
        non_heap = platform_bean.get_non_heap_memory_usage

        gauge(:"jvm.memory.heap.used").value = heap.get_used
        gauge(:"jvm.memory.heap.committed").value = heap.get_committed
        gauge(:"jvm.memory.heap.max").value = heap.get_max

        gauge(:"jvm.memory.non_heap.used").value = non_heap.get_used
        gauge(:"jvm.memory.non_heap.committed").value = non_heap.get_committed
        gauge(:"jvm.memory.non_heap.max").value = non_heap.get_max

        pool_beans.each do |bean|
          next unless bean.type.name == "HEAP"

          tags = { name: bean.get_name }

          gauge(:"jvm.memory.heap.pool.used", tags: tags).value = bean.get_usage.get_used
          gauge(:"jvm.memory.heap.pool.committed", tags: tags).value = bean.get_usage.get_committed
          gauge(:"jvm.memory.heap.pool.max", tags: tags).value = bean.get_usage.get_max
        end
      rescue Exception => e
        error("JVM metrics encountered error: %s", e)
        debug("Backtrace:") { e.backtrace.join("\n") }

        @error_count += 1
        if @error_count >= MAX_TRIES
          disable!
          error("Disabling JVM metrics after #{MAX_TRIES} errors", e)
        end
      end