Class: Fluent::Plugin::NodeExporter::CMetricsDataSchemaParser
- Inherits:
-
Object
- Object
- Fluent::Plugin::NodeExporter::CMetricsDataSchemaParser
- Defined in:
- lib/fluent/plugin/node_exporter/cmetrics_dataschema_parser.rb
Instance Method Summary collapse
- #parse(metrics) ⇒ Object
-
#to_readable_hash(metrics) ⇒ Object
Parsed CMetrics Data Schema Format { “name” => metrics name “time” => Fluent::EventTime “labels” => => value, … “value” => … }.
Instance Method Details
#parse(metrics) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/fluent/plugin/node_exporter/cmetrics_dataschema_parser.rb', line 23 def parse(metrics) data = [] begin metrics.each do |metric| next if metric["values"].empty? data << to_readable_hash(metric) end rescue => e raise Fluent::Plugin::Parser::ParserError.new(e.) end data.flatten end |
#to_readable_hash(metrics) ⇒ Object
Parsed CMetrics Data Schema Format
"name" => metrics name
"time" => Fluent::EventTime
"labels" => {"key" => value, ...
"value" => ...
}
“labels” field is optional. It is available when {“meta”=>“label_dictionary”…} and “labels” in “values” => [{“ts”=>…, “labels“=>}]..
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/fluent/plugin/node_exporter/cmetrics_dataschema_parser.rb', line 47 def to_readable_hash(metrics) opts = metrics["meta"]["opts"] metric_name = if opts["ss"].size.zero? "#{opts['ns']}_#{opts['name']}" else "#{opts['ns']}_#{opts['ss']}_#{opts['name']}" end cmetrics = [] labels = [] unless metrics["meta"]["labels"].empty? metrics["meta"]["labels"].each do |v| labels << metrics["meta"]["label_dictionary"][v] end end metrics["values"].each do |entry| cmetric = { "name" => metric_name, "value" => entry["value"], "desc" => opts["desc"], "ts" => entry["ts"] } unless metrics["meta"]["labels"].empty? params = {} entry["labels"].each_with_index do |v, index| label = labels[index] params[label] = metrics["meta"]["label_dictionary"][v] end cmetric["labels"] = params end cmetrics << cmetric end cmetrics end |