class DataNode
Attributes
autoupdater[R]
firmware[R]
hardware[R]
hostname[R]
sitecode[R]
Public Class Methods
new(data, links, alfred, timestamp)
click to toggle source
@param [Hash] data @param [Links] links
# File bin/ffmapquery, line 145 def initialize(data, links, alfred, timestamp) @data = Hash.new @alfred = alfred # Der Hostname ist Teil eines Dateisystempfads und darf daher nur bestimmte Chars enthalten. @hostname = remove_unsafe_chars(data['nodeinfo']['hostname']) @groupname = nil begin @autoupdater = remove_unsafe_chars(data['nodeinfo']['software']['autoupdater']['branch']) rescue @autoupdater = 'Unbekannt' end begin @firmware = remove_unsafe_chars(data['nodeinfo']['software']['firmware']['release']) rescue @firmware = 'Unbekannt' end begin @hardware = remove_unsafe_chars(data['nodeinfo']['hardware']['model']) @hardware = 'Unbekannt' if @hardware.length < 1 rescue @hardware = 'Unbekannt' end begin @sitecode = remove_unsafe_chars(data['nodeinfo']['system']['site_code']) @sitecode = 'default' if @sitecode.length < 1 rescue @sitecode = 'default' end @node_id = data['nodeinfo']['node_id'] data['flags']['online'] ? @data[:online] = 1 : @data[:online] = 0 @data[:uptime] = data['statistics']['uptime'].to_i @data[:loadavg] = data['statistics']['loadavg'].to_f @data[:memory_usage] = data['statistics']['memory_usage'].to_f @data[:rootfs_usage] = data['statistics']['rootfs_usage'].to_f @data[:clients] = data['statistics']['clients'].to_f @links = links.link_list(data['nodeinfo']['node_id']) @data[:mesh], @data[:vpn] = links.links(@node_id) begin @mac = data['nodeinfo']['network']['mac'] @data[:traffic_rx_bytes] = alfred[@mac.to_s + '.traffic_fastd.rx_bytes'] if alfred[@mac.to_s + '.traffic_fastd.rx_bytes'] @data[:traffic_rx_packets] = alfred[@mac.to_s + '.traffic_fastd.rx_packets'] if alfred[@mac.to_s + '.traffic_fastd.rx_packets'] @data[:traffic_tx_bytes] = alfred[@mac.to_s + '.traffic_fastd.tx_bytes'] if alfred[@mac.to_s + '.traffic_fastd.tx_bytes'] @data[:traffic_tx_packets] = alfred[@mac.to_s + '.traffic_fastd.tx_packets'] if alfred[@mac.to_s + '.traffic_fastd.tx_packets'] @data[:traffic_batman_rx_bytes] = data['statistics']['traffic']['rx']['bytes'].to_i @data[:traffic_batman_forward_bytes] = data['statistics']['traffic']['forward']['bytes'].to_i @data[:traffic_batman_tx_bytes] = data['statistics']['traffic']['tx']['bytes'].to_i @data[:traffic_batman_mgmttx_bytes] = data['statistics']['traffic']['mgmt_tx']['bytes'].to_i @data[:traffic_batman_mgmtrx_bytes] = data['statistics']['traffic']['mgmt_rx']['bytes'].to_i rescue # ignored end @timestamp = timestamp end
Public Instance Methods
get_influx_lines(socket = nil)
click to toggle source
# File bin/ffmapquery, line 202 def get_influx_lines(socket = nil) out = Array.new t = @timestamp.to_i.to_s measurement = "nodes" tags = "region=" + $C[:region] tags << ",domain=" + @sitecode tags << ",group=" + @groupname if @groupname tags << ",nodeid=" + @node_id tags << ",node=" + @hostname tags << ",autoupdater=" + @autoupdater tags << ",firmware=" + @firmware tags << ",hardware=" + @hardware fields = "" comma = "" @data.each_pair { | key, dp | fields << comma + $mapping[key] + "=" + dp.to_s comma = "," } line = "#{measurement},#{tags} #{fields} #{t}" out << line @links.each { | l | if $node_map[l.first] line = "links" line << ",group=#{@groupname}" if @groupname line << ",region=#{$C[:region]},domain=#{@sitecode},linktype=#{l[2]},sourcenodeid=#{@node_id},sourcenode=#{@hostname},targetnodeid=#{l.first},targetnode=#{$node_map[l.first]},autoupdater=#{@autoupdater},firmware=#{@firmware},hardware=#{@hardware} tq=#{l[1].to_s} #{t}" out << line end } if @links out end
setGroup(groupname)
click to toggle source
# File bin/ffmapquery, line 199 def setGroup(groupname) @groupname = groupname.to_s end