class PCPEasy::Agent
Attributes
host[R]
Public Class Methods
new(host)
click to toggle source
# File lib/pcp_easy/agent.rb, line 8 def initialize(host) @host = host end
Public Instance Methods
metric(name)
click to toggle source
# File lib/pcp_easy/agent.rb, line 12 def metric(name) metrics([name]).first end
metrics(names)
click to toggle source
# File lib/pcp_easy/agent.rb, line 16 def metrics(names) raise ArgumentError, "array required for metrics" unless names.is_a? Array pmids = pmapi.pmLookupName(names) pmids_names = Hash[pmids.zip(names)] pmapi.pmFetch(pmids).vset.collect {|v| metric_from_vset(v, pmids_names)} end
Private Instance Methods
metric_from_vset(pm_value_set, pmid_names)
click to toggle source
# File lib/pcp_easy/agent.rb, line 25 def metric_from_vset(pm_value_set, pmid_names) pm_desc = pmapi.pmLookupDesc pm_value_set.pmid name = pmid_names[pm_value_set.pmid] if pm_desc.indom == PCPEasy::PMAPI::PM_INDOM_NULL metric_values = metric_value_for_no_indom(pm_value_set, pm_desc) else metric_values = metric_value_for_indoms(pm_value_set, pm_desc) end PCPEasy::Metric.new(name, pm_desc, metric_values) end
metric_value_for_indoms(pm_value_set, pm_desc)
click to toggle source
# File lib/pcp_easy/agent.rb, line 42 def metric_value_for_indoms(pm_value_set, pm_desc) indoms = pmapi.pmGetInDom(pm_desc.indom) pm_value_set.vlist.collect do |v| value = pmapi.pmExtractValue(pm_value_set.valfmt, pm_desc, v) PCPEasy::Metric::Value.new(value, indoms[v.inst]) end end
metric_value_for_no_indom(pm_value_set, pm_desc)
click to toggle source
# File lib/pcp_easy/agent.rb, line 37 def metric_value_for_no_indom(pm_value_set, pm_desc) value = pmapi.pmExtractValue(pm_value_set.valfmt, pm_desc, pm_value_set.vlist.first) [PCPEasy::Metric::Value.new(value, nil)] end
pmapi()
click to toggle source
# File lib/pcp_easy/agent.rb, line 52 def pmapi @pmapi ||= PCPEasy::PMAPI.new(@host) end