def check_snmp(self): """Chek if SNMP is available on the server.""" # Import the SNMP client class from glances.core.glances_snmp import GlancesSNMPClient # Create an instance of the SNMP client clientsnmp = GlancesSNMPClient(host=self.args.client, port=self.args.snmp_port, version=self.args.snmp_version, community=self.args.snmp_community, user=self.args.snmp_user, auth=self.args.snmp_auth) # If we can not grab the hostname, then exit... ret = clientsnmp.get_by_oid("1.3.6.1.2.1.1.5.0") != {} if ret: # Get the OS name (need to grab the good OID...) oid_os_name = clientsnmp.get_by_oid("1.3.6.1.2.1.1.1.0") try: self.system_name = self.get_system_name( oid_os_name['1.3.6.1.2.1.1.1.0']) logger.info( _('SNMP system name detected: {0}').format( self.system_name)) except KeyError: self.system_name = None logger.warning(_('Can not detect SNMP system name')) return ret
def check_snmp(self): """Chek if SNMP is available on the server.""" # Import the SNMP client class from glances.core.glances_snmp import GlancesSNMPClient # Create an instance of the SNMP client clientsnmp = GlancesSNMPClient(host=self.args.client, port=self.args.snmp_port, version=self.args.snmp_version, community=self.args.snmp_community, user=self.args.snmp_user, auth=self.args.snmp_auth) # If we can not grab the hostname, then exit... ret = clientsnmp.get_by_oid("1.3.6.1.2.1.1.5.0") != {} if ret: # Get the OS name (need to grab the good OID...) oid_os_name = clientsnmp.get_by_oid("1.3.6.1.2.1.1.1.0") try: self.system_name = self.get_system_name(oid_os_name['1.3.6.1.2.1.1.1.0']) logger.info(_('SNMP system name detected: {0}').format(self.system_name)) except KeyError: self.system_name = None logger.warning(_('Can not detect SNMP system name')) return ret
def __init__(self, config=None, args=None): # Init stats self.stats = GlancesStats(config=config, args=args) # If configured, set the maximum processes number to display try: max_processes = int( self.stats.get_plugin('processlist').get_conf_value( 'max_processes')) logger.debug( _("Limit maximum displayed processes to %s") % max_processes) except: max_processes = None logger.warning( _("Maximum displayed processes is not configured (high CPU consumption)" )) glances_processes.set_max_processes(max_processes) # If process extended stats is disabled by user if args.disable_process_extended: logger.info(_("Extended stats for top process is disabled")) glances_processes.disable_extended() else: logger.debug( _("Extended stats for top process is enabled (default behavor)" )) glances_processes.enable_extended() # Manage optionnal process filter if args.process_filter is not None: glances_processes.set_process_filter(args.process_filter) # Initial system informations update self.stats.update() # Init CSV output if args.output_csv is not None: from glances.outputs.glances_csv import GlancesCSV self.csvoutput = GlancesCSV(args=args) self.csv_tag = True else: self.csv_tag = False # Init screen self.screen = GlancesCurses(args=args)
def load(self, config): """Load the server list from the configuration file""" server_list = [] if config is None: logger.warning("No configuration file available. Cannot load server list.") elif not config.has_section(self._section): logger.warning("No [%s] section in the configuration file. Cannot load server list." % self._section) else: logger.info("Start reading the [%s] section in the configuration file" % self._section) for i in range(1, 256): new_server = {} postfix = 'server_%s_' % str(i) # Read the server name (mandatory) for s in ['name', 'port', 'alias']: new_server[s] = config.get_raw_option(self._section, '%s%s' % (postfix, s)) if new_server['name'] is not None: # Manage optionnal information if new_server['port'] is None: new_server['port'] = 61209 new_server['username'] = '******' new_server['password'] = '' try: new_server['ip'] = gethostbyname(new_server['name']) except gaierror as e: logger.error("Cannot get IP address for server %s (%s)" % (new_server['name'], e)) continue new_server['key'] = new_server['name'] + ':' + new_server['port'] # Default status is 'UNKNOWN' new_server['status'] = 'UNKNOWN' # Server type is 'STATIC' new_server['type'] = 'STATIC' # Add the server to the list logger.debug("Add server %s to the static list" % new_server['name']) server_list.append(new_server) # Server list loaded logger.info("%s server(s) loaded from the configuration file" % len(server_list)) logger.debug("Static server list: %s" % server_list) return server_list
def __init__(self, config=None, args=None): # Init stats self.stats = GlancesStats(config=config, args=args) # If configured, set the maximum processes number to display try: max_processes = int(self.stats.get_plugin('processlist').get_conf_value('max_processes')) logger.debug(_("Limit maximum displayed processes to %s") % max_processes) except: max_processes = None logger.warning(_("Maximum displayed processes is not configured (high CPU consumption)")) glances_processes.set_max_processes(max_processes) # If process extended stats is disabled by user if args.disable_process_extended: logger.info(_("Extended stats for top process is disabled")) glances_processes.disable_extended() else: logger.debug(_("Extended stats for top process is enabled (default behavor)")) glances_processes.enable_extended() # Manage optionnal process filter if args.process_filter is not None: glances_processes.set_process_filter(args.process_filter) # Initial system informations update self.stats.update() # Init CSV output if args.output_csv is not None: from glances.outputs.glances_csv import GlancesCSV self.csvoutput = GlancesCSV(args=args) self.csv_tag = True else: self.csv_tag = False # Init screen self.screen = GlancesCurses(args=args)
def add_service(self, zeroconf, srv_type, srv_name): """Method called when a new Zeroconf client is detected Return True if the zeroconf client is a Glances server Note: the return code will never be used """ if srv_type != zeroconf_type: return False logger.debug("Check new Zeroconf server: %s / %s" % (srv_type, srv_name)) info = zeroconf.get_service_info(srv_type, srv_name) if info: new_server_ip = socket.inet_ntoa(info.address) new_server_port = info.port # Add server to the global dict self.servers.add_server(srv_name, new_server_ip, new_server_port) logger.info("New Glances server detected (%s from %s:%s)" % (srv_name, new_server_ip, new_server_port)) else: logger.warning( "New Glances server detected, but Zeroconf info failed to be grabbed") return True
# Import system lib import os import tempfile # Import Glances lib from glances.core.glances_globals import logger # Import specific lib try: from matplotlib import __version__ as matplotlib_version import matplotlib.pyplot as plt import matplotlib.dates as dates except: matplotlib_check = False logger.warning('Can not load Matplotlib library. Please install it using "pip install matplotlib"') else: matplotlib_check = True logger.info('Load Matplotlib version %s' % matplotlib_version) class GlancesHistory(object): """This class define the object to manage stats history""" def __init__(self, output_folder=tempfile.gettempdir()): # !!! MINUS: matplotlib footprint (mem/cpu) => Fork process ? # !!! MINUS: Mem used to store history # !!! TODO: sampling before graph => Usefull ? # !!! TODO: do not display first two point (glances is running) # !!! TODO: replace /tmp by a cross platform way to get /tmp folder
# Import system lib import os import tempfile # Import Glances lib from glances.core.glances_globals import logger # Import specific lib try: from matplotlib import __version__ as matplotlib_version import matplotlib.pyplot as plt import matplotlib.dates as dates except: matplotlib_check = False logger.warning( 'Can not load Matplotlib library. Please install it using "pip install matplotlib"' ) else: matplotlib_check = True logger.info('Load Matplotlib version %s' % matplotlib_version) class GlancesHistory(object): """This class define the object to manage stats history""" def __init__(self, output_folder=tempfile.gettempdir()): # !!! MINUS: matplotlib footprint (mem/cpu) => Fork process ? # !!! MINUS: Mem used to store history # !!! TODO: sampling before graph => Usefull ? # !!! TODO: do not display first two point (glances is running) # !!! TODO: replace /tmp by a cross platform way to get /tmp folder self.output_folder = output_folder