def network_io_counters(interface=None): ''' Return network I/O statistics. CLI Example: .. code-block:: bash salt '*' ps.network_io_counters salt '*' ps.network_io_counters interface=eth0 ''' if not interface: return dict(psutil.net_io_counters()._asdict()) else: stats = psutil.net_io_counters(pernic=True) if interface in stats: return dict(stats[interface]._asdict()) else: return False
def beacon(config): ''' Emit the network statistics of this host. Specify thresholds for each network stat and only emit a beacon if any of them are exceeded. Emit beacon when any values are equal to configured values. .. code-block:: yaml beacons: network_info: - eth0: type: equal bytes_sent: 100000 bytes_recv: 100000 packets_sent: 100000 packets_recv: 100000 errin: 100 errout: 100 dropin: 100 dropout: 100 Emit beacon when any values are greater than configured values. .. code-block:: yaml beacons: network_info: - eth0: type: greater bytes_sent: 100000 bytes_recv: 100000 packets_sent: 100000 packets_recv: 100000 errin: 100 errout: 100 dropin: 100 dropout: 100 ''' ret = [] _stats = psutil.net_io_counters(pernic=True) for interface_config in config: interface = interface_config.keys()[0] if interface in _stats: _if_stats = _stats[interface] _diff = False for attr in __attrs: if attr in interface_config[interface]: if 'type' in interface_config[interface] and \ interface_config[interface]['type'] == 'equal': if getattr(_if_stats, attr, None) == \ int(interface_config[interface][attr]): _diff = True elif 'type' in interface_config[interface] and \ interface_config[interface]['type'] == 'greater': if getattr(_if_stats, attr, None) > \ int(interface_config[interface][attr]): _diff = True else: log.debug('attr {}'.format( getattr(_if_stats, attr, None))) else: if getattr(_if_stats, attr, None) == \ int(interface_config[interface][attr]): _diff = True if _diff: ret.append({ 'interface': interface, 'network_info': _to_list(_if_stats) }) return ret
def beacon(config): """ Emit the network statistics of this host. Specify thresholds for each network stat and only emit a beacon if any of them are exceeded. Emit beacon when any values are equal to configured values. .. code-block:: yaml beacons: network_info: - interfaces: eth0: type: equal bytes_sent: 100000 bytes_recv: 100000 packets_sent: 100000 packets_recv: 100000 errin: 100 errout: 100 dropin: 100 dropout: 100 Emit beacon when any values are greater than configured values. .. code-block:: yaml beacons: network_info: - interfaces: eth0: type: greater bytes_sent: 100000 bytes_recv: 100000 packets_sent: 100000 packets_recv: 100000 errin: 100 errout: 100 dropin: 100 dropout: 100 """ ret = [] config = salt.utils.beacons.list_to_dict(config) log.debug("psutil.net_io_counters %s", psutil.net_io_counters) _stats = psutil.net_io_counters(pernic=True) log.debug("_stats %s", _stats) for interface in config.get("interfaces", {}): if interface in _stats: interface_config = config["interfaces"][interface] _if_stats = _stats[interface] _diff = False for attr in __attrs: if attr in interface_config: if ( "type" in interface_config and interface_config["type"] == "equal" ): if getattr(_if_stats, attr, None) == int( interface_config[attr] ): _diff = True elif ( "type" in interface_config and interface_config["type"] == "greater" ): if getattr(_if_stats, attr, None) > int(interface_config[attr]): _diff = True else: log.debug("attr %s", getattr(_if_stats, attr, None)) else: if getattr(_if_stats, attr, None) == int( interface_config[attr] ): _diff = True if _diff: ret.append( {"interface": interface, "network_info": _to_list(_if_stats)} ) return ret
def beacon(config): ''' Emit the network statistics of this host. Specify thresholds for each network stat and only emit a beacon if any of them are exceeded. Emit beacon when any values are equal to configured values. .. code-block:: yaml beacons: network_info: eth0: - type: equal - bytes_sent: 100000 - bytes_recv: 100000 - packets_sent: 100000 - packets_recv: 100000 - errin: 100 - errout: 100 - dropin: 100 - dropout: 100 Emit beacon when any values are greater than configured values. .. code-block:: yaml beacons: network_info: eth0: - type: greater - bytes_sent: 100000 - bytes_recv: 100000 - packets_sent: 100000 - packets_recv: 100000 - errin: 100 - errout: 100 - dropin: 100 - dropout: 100 ''' ret = [] _stats = psutil.net_io_counters(pernic=True) for interface in config: if interface in _stats: _if_stats = _stats[interface] _diff = False for attr in __attrs: if attr in config[interface]: if 'type' in config[interface] and config[interface][ 'type'] == 'equal': if _if_stats.__dict__[attr] == int( config[interface][attr]): _diff = True elif 'type' in config[interface] and config[interface][ 'type'] == 'greater': if _if_stats.__dict__[attr] > int( config[interface][attr]): _diff = True else: if _if_stats.__dict__[attr] == int( config[interface][attr]): _diff = True if _diff: ret.append({ 'interface': interface, 'network_info': _to_list(_if_stats) }) return ret
def beacon(config): """ Emit the network statistics of this host. Specify thresholds for each network stat and only emit a beacon if any of them are exceeded. Emit beacon when any values are equal to configured values. .. code-block:: yaml beacons: network_info: eth0: - type: equal - bytes_sent: 100000 - bytes_recv: 100000 - packets_sent: 100000 - packets_recv: 100000 - errin: 100 - errout: 100 - dropin: 100 - dropout: 100 Emit beacon when any values are greater than configured values. .. code-block:: yaml beacons: network_info: eth0: - type: greater - bytes_sent: 100000 - bytes_recv: 100000 - packets_sent: 100000 - packets_recv: 100000 - errin: 100 - errout: 100 - dropin: 100 - dropout: 100 """ ret = [] _stats = psutil.net_io_counters(pernic=True) for interface in config: if interface in _stats: _if_stats = _stats[interface] _diff = False for attr in __attrs: if attr in config[interface]: if "type" in config[interface] and config[interface]["type"] == "equal": if _if_stats.__dict__[attr] == int(config[interface][attr]): _diff = True elif "type" in config[interface] and config[interface]["type"] == "greater": if _if_stats.__dict__[attr] > int(config[interface][attr]): _diff = True else: if _if_stats.__dict__[attr] == int(config[interface][attr]): _diff = True if _diff: ret.append({"interface": interface, "network_info": _to_list(_if_stats)}) return ret