From df3dc42eb9f41f6f979d8f43cd1a98795c62475f Mon Sep 17 00:00:00 2001 From: root Date: Sun, 22 Sep 2024 11:25:28 +0200 Subject: [PATCH] Thread -> pmap (easier to use, them effect) --- Gemfile | 1 + lib/lxc_collector.rb | 67 ++++++++++++++++++++++---------------------- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/Gemfile b/Gemfile index 514cb9f..5c1f99c 100644 --- a/Gemfile +++ b/Gemfile @@ -7,3 +7,4 @@ gem 'sd_notify' gem 'cbor' gem 'io-extra' gem 'ffi' +gem 'pmap' diff --git a/lib/lxc_collector.rb b/lib/lxc_collector.rb index 7a03f5d..e8dac70 100755 --- a/lib/lxc_collector.rb +++ b/lib/lxc_collector.rb @@ -4,6 +4,7 @@ require 'pathname' require 'prometheus/client' require 'lxc' require 'ostruct' +require 'pmap' require_relative 'ns' require_relative 'file-statfs' @@ -199,46 +200,44 @@ class LxcCollector @state.set CTStates[ct.state], labels: labels end - LXC.running_containers.map do |ct| - Thread.new ct do |ct| - pid, io = CBORIO.popen(:r) {|io| forked2 io, ct } - begin - io.map do |l| - case l[0].to_sym + LXC.running_containers.peach do |ct| + pid, io = CBORIO.popen(:r) {|io| forked2 io, ct } + begin + io.map do |l| + case l[0].to_sym - when :mountpoint - st = OpenStruct.new l[1] - labels = { id: st.id, mountpoint: st.mp } - @info.set 1, labels: labels.merge( name: st.name, fstype: st.fstypename) - @totalb.set st.bsize*st.blocks, labels: labels - @freeb.set st.bsize*st.bfree, labels: labels - @availb.set st.bsize*st.bavail, labels: labels - @totalf.set st.files, labels: labels - @freef.set st.ffree, labels: labels + when :mountpoint + st = OpenStruct.new l[1] + labels = { id: st.id, mountpoint: st.mp } + @info.set 1, labels: labels.merge( name: st.name, fstype: st.fstypename) + @totalb.set st.bsize*st.blocks, labels: labels + @freeb.set st.bsize*st.bfree, labels: labels + @availb.set st.bsize*st.bavail, labels: labels + @totalf.set st.files, labels: labels + @freef.set st.ffree, labels: labels - when :os_release - osr = OpenStruct.new l[1] - @os_release.set 1, labels: { - id: osr.id, name: osr.name, - os_id: osr.os_id, - os_name: osr.os_name, - os_pretty_name: osr.os_pretty_name, - os_version_codename: osr.os_version_codename - } - @os_version.set osr.os_version_id, labels: { id: osr.id } + when :os_release + osr = OpenStruct.new l[1] + @os_release.set 1, labels: { + id: osr.id, name: osr.name, + os_id: osr.os_id, + os_name: osr.os_name, + os_pretty_name: osr.os_pretty_name, + os_version_codename: osr.os_version_codename + } + @os_version.set osr.os_version_id, labels: { id: osr.id } - when :pkgs - as = OpenStruct.new l[1] - @pkgs_last_update.set as.last_update, labels: { id: as.id } - @pkgs_upgradable.set as.upgradable, labels: { id: as.id } - end + when :pkgs + as = OpenStruct.new l[1] + @pkgs_last_update.set as.last_update, labels: { id: as.id } + @pkgs_upgradable.set as.upgradable, labels: { id: as.id } end - ensure - io.close - Process.wait pid end + ensure + io.close + Process.wait pid end - end.each &:join + end @prometheus end