Class: Opstat::Parsers::Haproxy
- Inherits:
-
Object
- Object
- Opstat::Parsers::Haproxy
- Includes:
- Logging
- Defined in:
- lib/parsers/haproxy.rb
Instance Method Summary collapse
Methods included from Logging
#log_level, #oplogger, #preconfig_logger
Instance Method Details
#parse_data(data:, time:) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/parsers/haproxy.rb', line 8 def parse_data(data:, time:) white_headers = [ :svname, :qcur, :qmax, :scur, :smax, :slim, :stot, :bin, :bout, :hrsp_1xx, :hrsp_2xx, :hrsp_3xx, :hrsp_4xx, :hrsp_5xx, :hrsp_other, :req_tot, :conn_tot] parsed_data = CSV.parse(data.join, { headers: true, header_converters: :symbol, converters: :all}).map{|row| Hash[row.headers[0..-1].zip(row.fields[0..-1])]}.group_by{|row| row[:_pxname]} report = [] yaml = [] parsed_data.each do |key,value| if value.first[:svname] == "FRONTEND" report << {:stats_type => :frontend, :name => value.first[:_pxname], :summary => value.first.select { |key, value| white_headers.include?(key)}} elsif value.first[:_pxname].to_s.start_with?("backend") backends = { :stats_type => :backend, :name => value.first[:_pxname] } instances = [] value.each do |backend| if backend[:svname] == "BACKEND" backends[:summary] = backend.select { |key, value| white_headers.include?(key) } else backends[:details] = instances.push ( backend.select { |key, value| white_headers.include?(key) } ) end end report << backends end end return report end |