def run(self): """ Starts the web server. """ app.run(host=Config.get_config_value('Webserver', 'interface'), port=int(Config.get_config_value('Webserver', 'port')))
def _get_disks_info(): """ Gets template variables filled with disks data @return: Dictionary of template variables """ all_disks = [] if data.last_check.disks is not None: for disk in data.last_check.disks.disks: check_disk = { 'name': disk.name.decode('utf-8'), 'display_name': disk.display_name.decode('utf-8'), 'uuid': disk.uuid, 'used': disk.used, 'free': disk.free, 'size': disk.size, 'percent': int(round(disk.used, 0) * 100 / int(disk.size)) } if check_disk['percent'] >= int(Config.get_config_value('Alerts', 'disk_alert')): check_disk['state'] = STATE_ALERT elif check_disk['percent'] >= int(Config.get_config_value('Alerts', 'disk_warning')): check_disk['state'] = STATE_WARNING else: check_disk['state'] = STATE_OK all_disks.append(check_disk) return all_disks
def _get_swap_info(): """ Gets template variables filled with the last swap check @return: Dictionary of template variables """ vars = dict() if int(data.last_check.memory.swap_size) != 0: # On Mac, the swap is unlimited (only limited by the available hard drive size) if data.last_check.memory.swap_size == data.last_check.memory.total: vars['configuration'] = 'unlimited' else: vars['configuration'] = 'limited' vars['percent'] = int(data.last_check.memory.swap_used) * 100 / int(data.last_check.memory.swap_size) vars['used'] = data.last_check.memory.swap_used vars['free'] = data.last_check.memory.swap_free vars['total'] = data.last_check.memory.swap_size if vars['percent'] >= int(Config.get_config_value('Alerts', 'swap_alert')): vars['state'] = STATE_ALERT elif vars['percent'] >= int(Config.get_config_value('Alerts', 'swap_warning')): vars['state'] = STATE_WARNING else: vars['state'] = STATE_OK else: # No swap available on this host vars['configuration'] = 'undefined' return vars
def run(self): """ Starts the web server. """ app.run( host=Config.get_config_value('Webserver', 'interface'), port=int(Config.get_config_value('Webserver', 'port')) )
def api_check(): """ Entry point of /api/checks @return: flask.Response """ try: interval = int(Config.get_config_value('Checks', 'interval')) except NameError: interval = int(Config.CR_CONFIG_DEFAULT_CHECKS_INTERVAL) vars = { 'date': datetime_to_timestamp(data.last_check.date), 'interval': interval, 'system': { 'timestamp': datetime_to_timestamp(datetime.datetime.now()) }, 'uptime': { 'seconds': data.last_check.load.uptime, 'boot_date': datetime_to_timestamp(data.last_check.date) - int(data.last_check.load.uptime) }, 'cpu': _get_cpu_info(), 'memory': _get_memory_info(), 'swap': _get_swap_info(), 'load': _get_load_info(), 'disks': _get_disks_info() } return flask.Response(response=json.dumps(vars), status=200, mimetype="application/json")
def refresh_standalone_status(self): if convert_text_to_bool(Config.get_config_value('Webserver', 'enable')) is True: self.standalone_status_text.set_text('Standalone app is enabled') self.standalone_status.set_attr_map({None: 'text green'}) else: self.standalone_status_text.set_text('Standalone app is disabled') self.standalone_status.set_attr_map({None: 'text red'})
def _get_cpu_info(): """ Gets template variables filled with the last CPU check @return: Dictionary of template variables """ vars = { 'percent': int(data.last_check.cpu.user) + int(data.last_check.cpu.system), 'user': data.last_check.cpu.user, 'system': data.last_check.cpu.system, 'idle': data.last_check.cpu.idle } if int(Config.get_config_value('Alerts', 'cpu_alert')) <= vars['percent']: vars['state'] = STATE_ALERT elif int(Config.get_config_value('Alerts', 'cpu_warning')) <= vars['percent']: vars['state'] = STATE_WARNING else: vars['state'] = STATE_OK return vars
def _get_load_info(): """ Gets template variables filled with the last load average check @return: Dictionary of template variables """ vars = { '1m': data.last_check.load.last1m, '5m': data.last_check.load.last5m, '15m': data.last_check.load.last15m } load_percent = (float(data.last_check.load.last1m) * 100) / int(cr.host.get_current_host().cpu_count) if load_percent >= int(Config.get_config_value('Alerts', 'load_alert')): vars['state'] = STATE_ALERT elif load_percent >= int(Config.get_config_value('Alerts', 'load_warning')): vars['state'] = STATE_WARNING else: vars['state'] = STATE_OK return vars
def _get_memory_info(): """ Gets template variables filled with the last memory check @return: Dictionary of template variables """ vars = { 'percent': (int(data.last_check.memory.total) - int(data.last_check.memory.free)) * 100 / int(data.last_check.memory.total), 'total': data.last_check.memory.total, 'active': data.last_check.memory.active, 'inactive': data.last_check.memory.inactive, 'resident': data.last_check.memory.resident, 'free': data.last_check.memory.free } if vars['percent'] >= int(Config.get_config_value('Alerts', 'memory_alert')): vars['state'] = STATE_ALERT elif vars['percent'] >= int(Config.get_config_value('Alerts', 'memory_warning')): vars['state'] = STATE_WARNING else: vars['state'] = STATE_OK return vars
def __init__(self): threading.Thread.__init__(self) log.log_debug('ThreadChecks is starting...') # Standard output if cr.host.get_current_host().os == cr.host.OS_MAC: self.MyCollector = collectors.MacCollector() elif cr.host.get_current_host().family == cr.host.FAMILY_LINUX: self.MyCollector = collectors.DebianCollector() else: raise TypeError # Perform a check every xx ticks (1 tick = 1 second) try: self.tickPerformCheck = int(Config.get_config_value('Checks', 'interval')) except: self.tickPerformCheck = 60 log.log_debug('Interval between two checks: %s seconds' % self.tickPerformCheck) self.start()
def run(self): """ Constructor. """ is_error = False # If True, there are one or more errors when CentralReport is trying to start log.log_info("------------------------------------------------") log.log_info("CentralReport is starting...") log.log_info("Current user: "******"Debug", "log_level") except: log_level = "INFO" log.change_log_level(log_level) # Starting the check thread... if host.get_current_host().os != host.OS_UNKNOWN: log.log_info("%s detected. Starting ThreadChecks..." % host.get_current_host().os) CentralReport.checks_thread = threads.Checks() # Launching checks thread else: is_error = True log.log_critical("Sorry, but your OS is not supported yet...") # Starting the internal webserver... if not is_error and text.convert_text_to_bool(Config.get_config_value("Webserver", "enable")): local_web_port = int(Config.get_config_value("Webserver", "port")) if not utils_web.check_port("127.0.0.1", local_web_port): log.log_info("Starting the webserver...") # Importing the module here improve the memory usage import cr.web CentralReport.webserver_thread = cr.web.server.WebServer() else: log.log_error("Error launching the webserver: port %s is already in use on this host!" % local_web_port) else: log.log_info("Webserver is disabled by configuration file!") if not is_error: log.log_info("CentralReport started!") while CentralReport.is_running: if not Config.CR_CONFIG_ENABLE_DEBUG_MODE: # If .pid file is not found, we must stop CR (only in production environment) try: pf = file(self.pidfile, "r") pf.close() except IOError: log.log_error("Pid file is not found. CentralReport must stop itself.") CentralReport.is_running = False self.stop() time.sleep(1) else: log.log_error("Error launching CentralReport!")
def run(self): """ Constructor. """ is_error = False # If True, there are one or more errors when CentralReport is trying to start log.log_info('------------------------------------------------') log.log_info('CentralReport is starting...') log.log_info('Current user: '******'Debug', 'log_level') except: log_level = 'INFO' log.change_log_level(log_level) # Starting the check thread... if host.get_current_host().os != host.OS_UNKNOWN: log.log_info('%s detected. Starting ThreadChecks...' % host.get_current_host().os) CentralReport.checks_thread = threads.Checks( ) # Launching checks thread else: is_error = True log.log_critical('Sorry, but your OS is not supported yet...') # Starting the internal webserver... if not is_error and text.convert_text_to_bool( Config.get_config_value('Webserver', 'enable')): local_web_port = int(Config.get_config_value('Webserver', 'port')) if not utils_web.check_port('127.0.0.1', local_web_port): log.log_info('Starting the webserver...') # Importing the module here improve the memory usage import cr.web CentralReport.webserver_thread = cr.web.server.WebServer() else: log.log_error( 'Error launching the webserver: port %s is already in use on this host!' % local_web_port) else: log.log_info('Webserver is disabled by configuration file!') if not is_error: log.log_info('CentralReport started!') while CentralReport.is_running: if not Config.CR_CONFIG_ENABLE_DEBUG_MODE: # If .pid file is not found, we must stop CR (only in production environment) try: pf = file(self.pidfile, 'r') pf.close() except IOError: log.log_error( 'Pid file is not found. CentralReport must stop itself.' ) CentralReport.is_running = False self.stop() time.sleep(1) else: log.log_error('Error launching CentralReport!')