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)
예제 #2
0
    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)
예제 #3
0
파일: stats.py 프로젝트: adreyer/Diamond
    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
예제 #4
0
파일: stats.py 프로젝트: richardc/Diamond
    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
예제 #6
0
 def user_agent(self):
     """
     HTTP user agent
     """
     return "Diamond: %s" % get_diamond_version()
예제 #7
0
파일: main.py 프로젝트: sara62/Diamond
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
예제 #8
0
 def user_agent(self):
     """
     HTTP user agent
     """
     return "Diamond: %s" % 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
예제 #10
0
 def user_agent(self):
     """
     HTTP user agent
     """
     return "Diamond/{}".format(get_diamond_version())
예제 #11
0
파일: stats.py 프로젝트: 50onRed/Diamond
    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
예제 #12
0
    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
예제 #13
0
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