def get_network_info()

in ambari-metrics-host-monitoring/src/main/python/core/host_info.py [0:0]


  def get_network_info(self):
    """
    Return network counters
    """

    with self.__last_network_lock:
      current_time = time.time()
      delta = current_time - self.__last_network_io_time
      self.__last_network_io_time = current_time

    if delta <= 0:
      delta = float("inf")

    net_stats = psutil.net_io_counters(True)
    new_net_stats = {}

    skip_virtual_interfaces = self.get_virtual_network_interfaces() if self.__config.get_virtual_interfaces_skip() == 'True' else []
    skip_network_patterns = self.__config.get_network_interfaces_skip_pattern()
    skip_network_patterns_list = skip_network_patterns.split(',') if skip_network_patterns and skip_network_patterns != 'None' else []
    for interface, values in net_stats.items():
      if interface != 'lo' and not interface in skip_virtual_interfaces:
        ignore_network = False
        for p in skip_network_patterns_list:
          if re.match(p, interface):
            ignore_network = True
        if not ignore_network:
          new_net_stats = {'bytes_out': new_net_stats.get('bytes_out', 0) + values.bytes_sent,
                           'bytes_in': new_net_stats.get('bytes_in', 0) + values.bytes_recv,
                           'pkts_out': new_net_stats.get('pkts_out', 0) + values.packets_sent,
                           'pkts_in': new_net_stats.get('pkts_in', 0) + values.packets_recv
          }

    with self.__last_network_lock:
      result = dict((k, (v - self.__last_network_data.get(k, 0)) / delta) for k, v in new_net_stats.items())
      result = dict((k, 0 if v < 0 else v) for k, v in result.items())
      self.__last_network_data = new_net_stats

    return result