def _get_version(self): """ Return version string """ ret = 'Diamond_' + get_diamond_version().rstrip() if os.path.isfile('/opt/netuitive-agent/version-manifest.txt'): with open('/opt/netuitive-agent/version-manifest.txt', 'r') as f: v = f.readline() f.close() ret = v.replace(' ', '_').lower().rstrip() return(ret)
def _get_version(self): """ Return version string """ ret = 'Diamond_' + get_diamond_version().rstrip() if os.path.isfile('/opt/netuitive-agent/version-manifest.txt'): with open('/opt/netuitive-agent/version-manifest.txt', 'r') as f: v = f.readline() f.close() ret = v.replace(' ', '_').lower().rstrip() return (ret)
def collect(self): getIncludePaths(self.full_config['server']['collectors_path']) getCollectors(self.full_config['server']['collectors_path']) stats = {} stats['version'] = get_diamond_version() uuid_file = open(self.config['uuidfile']) stats['uuid'] = uuid_file.read().strip() uuid_file.close() stats['collectors'] = {} stats['collectors']['Default'] = self.get_stats_for_upload( config=self.full_config['collectors']['default']) for collector in collectors: if not hasattr(collectors[collector], collector): continue cls = getattr(collectors[collector], collector) obj = cls(config=self.full_config, handlers={}) stats['collectors'][collector] = obj.get_stats_for_upload() stats['collectors']['StatsCollector'] = self.get_stats_for_upload() stats['server'] = {} if type(self.full_config['server']['handlers']) is list: handlers = self.full_config['server']['handlers'] else: handlers = self.full_config['server']['handlers'].split(',') stats['server']['handlers'] = handlers reload_i = self.full_config['server']['collectors_reload_interval'] stats['server']['collectors_reload_interval'] = reload_i data = urllib.urlencode({'stats': json.dumps(stats)}) f = urllib.urlopen(self.config['url'], data) f.read() f.close() return True
def _add_sys_meta(self): try: self.element.add_attribute('platform', platform.system()) if psutil: self.element.add_attribute('cpus', psutil.cpu_count()) mem = psutil.virtual_memory() self.element.add_attribute( 'ram', get_human_readable_size(mem.total)) self.element.add_attribute('ram bytes', mem.total) self.element.add_attribute( 'boottime', str(datetime.datetime.fromtimestamp(psutil.boot_time()))) if platform.system().startswith('Linux'): if check_lsb() is None: supported_dists = platform._supported_dists + ('system',) dist = platform.linux_distribution( supported_dists=supported_dists) else: dist = check_lsb() self.element.add_attribute('distribution_name', str(dist[0])) self.element.add_attribute( 'distribution_version', str(dist[1])) self.element.add_attribute('distribution_id', str(dist[2])) if os.path.isfile('/opt/netuitive-agent/version-manifest.txt'): with open('/opt/netuitive-agent/version-manifest.txt', 'r') as f: v = f.readline() f.close() self.element.add_attribute( 'agent', v.replace(' ', '_').lower().rstrip()) else: self.element.add_attribute( 'agent', 'Diamond_' + get_diamond_version().rstrip()) except Exception as e: logging.info(e) pass
def user_agent(self): """ HTTP user agent """ return "Diamond: %s" % get_diamond_version()
def main(): try: # Initialize Options defaults = { 'skip_pidfile': False, } if os.name == 'nt': defaults['skip_pidfile'] = True parser = optparse.OptionParser() parser.add_option("-c", "--configfile", dest="configfile", default="/etc/diamond/diamond.conf", help="config file") parser.add_option("-f", "--foreground", dest="foreground", default=False, action="store_true", help="run in foreground") parser.add_option("-l", "--log-stdout", dest="log_stdout", default=False, action="store_true", help="log to stdout") parser.add_option("-p", "--pidfile", dest="pidfile", default=None, help="pid file") parser.add_option("-r", "--run", dest="collector", default=None, help="run a given collector once and exit") parser.add_option("-v", "--version", dest="version", default=False, action="store_true", help="display the version and exit") parser.add_option("--skip-pidfile", dest="skip_pidfile", default=defaults['skip_pidfile'], action="store_true", help="Skip creating PID file") parser.add_option("-u", "--user", dest="user", default=None, help="Change to specified unprivilegd user") parser.add_option("-g", "--group", dest="group", default=None, help="Change to specified unprivilegd group") parser.add_option("--skip-change-user", dest="skip_change_user", default=False, action="store_true", help="Skip changing to an unprivilegd user") parser.add_option("--skip-fork", dest="skip_fork", default=False, action="store_true", help="Skip forking (damonizing) process") # Parse Command Line Args (options, args) = parser.parse_args() # Initial variables uid = -1 gid = -1 if options.version: print "Diamond version %s" % (get_diamond_version()) sys.exit(0) # Initialize Config if os.path.exists(options.configfile): config = configobj.ConfigObj(os.path.abspath(options.configfile)) config['configfile'] = options.configfile else: print >> sys.stderr, "ERROR: Config file: %s does not exist." % ( options.configfile) parser.print_help(sys.stderr) sys.exit(1) # Initialize Logging log = logging.getLogger('diamond') if options.log_stdout: log.setLevel(logging.DEBUG) # Configure Logging Format formatter = logging.Formatter( '[%(asctime)s] [%(threadName)s] %(message)s') # handler streamHandler = logging.StreamHandler(sys.stdout) streamHandler.setFormatter(formatter) streamHandler.setLevel(logging.DEBUG) log.addHandler(streamHandler) else: try: if sys.version_info >= (2, 6): logging.config.fileConfig(options.configfile, disable_existing_loggers=False) else: # python <= 2.5 does not have disable_existing_loggers # default was to always disable them, in our case we want to # keep any logger created by handlers logging.config.fileConfig(options.configfile) for logger in logging.root.manager.loggerDict.values(): logger.disabled = 0 except Exception, e: sys.stderr.write("Error occurs when initialize logging: ") sys.stderr.write(str(e)) sys.stderr.write(os.linesep) # Pass the exit up stream rather then handle it as an general exception except SystemExit, e: raise SystemExit
def collect(self): getIncludePaths(self.full_config['server']['collectors_path']) getCollectors(self.full_config['server']['collectors_path']) stats = {} stats['version'] = get_diamond_version() stats['python_version'] = platform.python_version() if platform.system() == 'Darwin': ver = platform.mac_ver() os_version = ('Darwin', ver[0], '') elif platform.system() == 'Linux': os_version = platform.linux_distribution() elif platform.system() == 'Windows': ver = platform.win32_ver() os_version = ('Windows', ver[0], ver[2]) stats['os'] = "%s %s" % (os_version[0], os_version[1]) stats['os_distname'] = os_version[0] stats['os_version'] = os_version[1] stats['os_id'] = os_version[2] uuid_file = open(self.config['uuidfile']) stats['uuid'] = uuid_file.read().strip() uuid_file.close() stats['collectors'] = {} stats['collectors']['Default'] = self.get_stats_for_upload( config=self.full_config['collectors']['default']) for collector in collectors: if not hasattr(collectors[collector], collector): continue cls = getattr(collectors[collector], collector) obj = cls(config=self.full_config, handlers={}) stats['collectors'][collector] = obj.get_stats_for_upload() stats['collectors']['StatsCollector'] = self.get_stats_for_upload() stats['server'] = {} if type(self.full_config['server']['handlers']) is list: handlers = self.full_config['server']['handlers'] else: handlers = self.full_config['server']['handlers'].split(',') stats['server']['handlers'] = handlers reload_i = self.full_config['server']['collectors_reload_interval'] stats['server']['collectors_reload_interval'] = reload_i hmeth = 'Default' if 'hostname_method' in self.full_config['collectors']['default']: hmeth = self.full_config['collectors']['default'][ 'hostname_method'] stats['server']['hostname_method'] = hmeth data = urllib.urlencode({'stats': json.dumps(stats)}) f = urllib.urlopen(self.config['url'], data) f.read() f.close() return True
def user_agent(self): """ HTTP user agent """ return "Diamond/{}".format(get_diamond_version())
def collect(self): getIncludePaths(self.full_config['server']['collectors_path']) getCollectors(self.full_config['server']['collectors_path']) stats = {} stats['version'] = get_diamond_version() stats['python_version'] = platform.python_version() if platform.system() == 'Darwin': ver = platform.mac_ver() os_version = ('Darwin', ver[0], '') elif platform.system() == 'Linux': os_version = platform.linux_distribution() elif platform.system() == 'Windows': ver = platform.win32_ver() os_version = ('Windows', ver[0], ver[2]) stats['os'] = "%s %s" % (os_version[0], os_version[1]) stats['os_distname'] = os_version[0] stats['os_version'] = os_version[1] stats['os_id'] = os_version[2] uuid_file = open(self.config['uuidfile']) stats['uuid'] = uuid_file.read().strip() uuid_file.close() stats['collectors'] = {} stats['collectors']['Default'] = self.get_stats_for_upload( config=self.full_config['collectors']['default']) for collector in collectors: if not hasattr(collectors[collector], collector): continue cls = getattr(collectors[collector], collector) obj = cls(config=self.full_config, handlers={}) stats['collectors'][collector] = obj.get_stats_for_upload() stats['collectors']['StatsCollector'] = self.get_stats_for_upload() stats['server'] = {} if type(self.full_config['server']['handlers']) is list: handlers = self.full_config['server']['handlers'] else: handlers = self.full_config['server']['handlers'].split(',') stats['server']['handlers'] = handlers reload_i = self.full_config['server']['collectors_reload_interval'] stats['server']['collectors_reload_interval'] = reload_i hmeth = 'Default' if 'hostname_method' in self.full_config['collectors']['default']: hmeth = self.full_config['collectors']['default']['hostname_method'] stats['server']['hostname_method'] = hmeth data = urllib.urlencode({'stats': json.dumps(stats)}) f = urllib.urlopen(self.config['url'], data) f.read() f.close() return True
def collect(self): getIncludePaths(self.full_config["server"]["collectors_path"]) getCollectors(self.full_config["server"]["collectors_path"]) stats = {} stats["version"] = get_diamond_version() stats["python_version"] = platform.python_version() if platform.system() == "Darwin": ver = platform.mac_ver() os_version = ("Darwin", ver[0], "") elif platform.system() == "Linux": os_version = platform.linux_distribution() elif platform.system() == "Windows": ver = platform.win32_ver() os_version = ("Windows", ver[0], ver[2]) stats["os"] = "%s %s" % (os_version[0], os_version[1]) stats["os_distname"] = os_version[0] stats["os_version"] = os_version[1] stats["os_id"] = os_version[2] uuid_file = open(self.config["uuidfile"]) stats["uuid"] = uuid_file.read().strip() uuid_file.close() stats["collectors"] = {} stats["collectors"]["Default"] = self.get_stats_for_upload(config=self.full_config["collectors"]["default"]) for collector in collectors: if not hasattr(collectors[collector], collector): continue cls = getattr(collectors[collector], collector) obj = cls(config=self.full_config, handlers={}) stats["collectors"][collector] = obj.get_stats_for_upload() stats["collectors"]["StatsCollector"] = self.get_stats_for_upload() stats["server"] = {} if type(self.full_config["server"]["handlers"]) is list: handlers = self.full_config["server"]["handlers"] else: handlers = self.full_config["server"]["handlers"].split(",") stats["server"]["handlers"] = handlers reload_i = self.full_config["server"]["collectors_reload_interval"] stats["server"]["collectors_reload_interval"] = reload_i hmeth = "Default" if "hostname_method" in self.full_config["collectors"]["default"]: hmeth = self.full_config["collectors"]["default"]["hostname_method"] stats["server"]["hostname_method"] = hmeth data = urllib.urlencode({"stats": json.dumps(stats)}) f = urllib.urlopen(self.config["url"], data) f.read() f.close() return True
def main(): try: # Initialize Options defaults = { 'skip_pidfile': False, } if os.name == 'nt': defaults['skip_pidfile'] = True parser = optparse.OptionParser() parser.add_option("-c", "--configfile", dest="configfile", default="/etc/diamond/diamond.conf", help="config file") parser.add_option("-f", "--foreground", dest="foreground", default=False, action="store_true", help="run in foreground") parser.add_option("-l", "--log-stdout", dest="log_stdout", default=False, action="store_true", help="log to stdout") parser.add_option("-p", "--pidfile", dest="pidfile", default=None, help="pid file") parser.add_option("-r", "--run", dest="collector", default=None, help="run a given collector once and exit") parser.add_option("-v", "--version", dest="version", default=False, action="store_true", help="display the version and exit") parser.add_option("--skip-pidfile", dest="skip_pidfile", default=defaults['skip_pidfile'], action="store_true", help="Skip creating PID file") parser.add_option("-u", "--user", dest="user", default=None, help="Change to specified unprivilegd user") parser.add_option("-g", "--group", dest="group", default=None, help="Change to specified unprivilegd group") parser.add_option("--skip-change-user", dest="skip_change_user", default=False, action="store_true", help="Skip changing to an unprivilegd user") parser.add_option("--skip-fork", dest="skip_fork", default=False, action="store_true", help="Skip forking (damonizing) process") # Parse Command Line Args (options, args) = parser.parse_args() # Initial variables uid = -1 gid = -1 if options.version: print "Diamond version %s" % (get_diamond_version()) sys.exit(0) # Initialize Config options.configfile = os.path.abspath(options.configfile) if os.path.exists(options.configfile): config = configobj.ConfigObj(options.configfile) else: print >> sys.stderr, "ERROR: Config file: %s does not exist." % ( options.configfile) parser.print_help(sys.stderr) sys.exit(1) # Initialize Logging log = setup_logging(options.configfile, options.log_stdout) # Pass the exit up stream rather then handle it as an general exception except SystemExit, e: raise SystemExit