def main(config_path=None): """ The main entry point for the unix version of dogstatsd. """ parser = optparse.OptionParser("%prog [start|stop|restart|status]") parser.add_option('-u', '--use-local-forwarder', action='store_true', dest="use_forwarder", default=False) opts, args = parser.parse_args() reporter, server = init(config_path, use_watchdog=True, use_forwarder=opts.use_forwarder) pid_file = PidFile('dogstatsd') daemon = Dogstatsd(pid_file.get_path(), server, reporter) # If no args were passed in, run the server in the foreground. if not args: daemon.run() return 0 # Otherwise, we're process the deamon command. else: command = args[0] if command == 'start': daemon.start() elif command == 'stop': daemon.stop() elif command == 'restart': daemon.restart() elif command == 'status': daemon.status() elif command == 'info': return daemon.info() else: sys.stderr.write("Unknown command: %s\n\n" % command) parser.print_help() return 1 return 0
def testBadPidFile(self): pid_dir = "/does-not-exist" p = PidFile('test', pid_dir) path = p.get_path() self.assertEquals(path, "/tmp/test.pid") pid = "666" pid_f = open(path, 'w') pid_f.write(pid) pid_f.close() self.assertEquals(p.get_pid(), 666) self.assertEquals(p.clean(), True) self.assertEquals(os.path.exists(path), False)
def testBadPidFile(self): pid_dir = "/does-not-exist" p = PidFile('test', pid_dir) path = p.get_path() self.assertEquals(path, os.path.join(tempfile.gettempdir(), 'test.pid')) pid = "666" pid_f = open(path, 'w') pid_f.write(pid) pid_f.close() self.assertEquals(p.get_pid(), 666) self.assertEquals(p.clean(), True) self.assertEquals(os.path.exists(path), False)
def main(config_path=None): """ The main entry point for the unix version of dogstatsd. """ parser = optparse.OptionParser("%prog [start|stop|restart|status]") parser.add_option('-u', '--use-local-forwarder', action='store_true', dest="use_forwarder", default=False) opts, args = parser.parse_args() reporter, server = init(config_path, use_watchdog=True, use_forwarder=opts.use_forwarder) # If no args were passed in, run the server in the foreground. if not args: reporter.start() server.start() # If we're here, we're done. logger.info("Shutting down ...") return 0 # Otherwise, we're process the deamon command. else: command = args[0] pid_file = PidFile('dogstatsd') daemon = Dogstatsd(pid_file.get_path(), server, reporter) if command == 'start': daemon.start() elif command == 'stop': daemon.stop() elif command == 'restart': daemon.restart() elif command == 'status': pid = pid_file.get_pid() if pid: message = 'dogstatsd is running with pid %s' % pid else: message = 'dogstatsd is not running' logger.info(message) sys.stdout.write(message + "\n") else: sys.stderr.write("Unknown command: %s\n\n" % command) parser.print_help() return 1 return 0
def main(config_path=None): """ The main entry point for the unix version of dogstatsd. """ parser = optparse.OptionParser("%prog [start|stop|restart|status]") parser.add_option('-u', '--use-local-forwarder', action='store_true', dest="use_forwarder", default=False) opts, args = parser.parse_args() # commands that don't need the daemon if args and args[0] in ['info', 'status']: command = args[0] if command == 'info': logging.getLogger().setLevel(logging.ERROR) return DogstatsdStatus.print_latest_status() elif command == 'status': pid = pid_file.get_pid() if pid: message = 'dogstatsd is running with pid %s' % pid else: message = 'dogstatsd is not running' log.info(message) sys.stdout.write(message + "\n") return 0 reporter, server = init(config_path, use_watchdog=True, use_forwarder=opts.use_forwarder) pid_file = PidFile('dogstatsd') daemon = Dogstatsd(pid_file.get_path(), server, reporter) # If no args were passed in, run the server in the foreground. if not args: daemon.run() return 0 # Otherwise, we're process the deamon command. else: command = args[0] if command == 'start': daemon.start() elif command == 'stop': daemon.stop() elif command == 'restart': daemon.restart() else: sys.stderr.write("Unknown command: %s\n\n" % command) parser.print_help() return 1 return 0
def main(config_path=None): """ The main entry point for the unix version of dogstatsd. """ parser = optparse.OptionParser("%prog [start|stop|restart|status]") parser.add_option('-u', '--use-local-forwarder', action='store_true', dest="use_forwarder", default=False) opts, args = parser.parse_args() reporter, server, cnf = init(config_path, use_watchdog=True, use_forwarder=opts.use_forwarder, args=args) pid_file = PidFile('dogstatsd') daemon = Dogstatsd(pid_file.get_path(), server, reporter, cnf.get('autorestart', False)) # If no args were passed in, run the server in the foreground. if not args: daemon.run() return 0 # Otherwise, we're process the deamon command. else: command = args[0] if command == 'start': daemon.start() elif command == 'stop': daemon.stop() elif command == 'restart': daemon.restart() elif command == 'status': daemon.status() elif command == 'info': return daemon.info() else: sys.stderr.write("Unknown command: %s\n\n" % command) parser.print_help() return 1 return 0
def main(): options, args = get_parsed_args() agentConfig = get_config(options=options) autorestart = agentConfig.get('autorestart', False) hostname = get_hostname(agentConfig) COMMANDS = [ 'start', 'stop', 'restart', 'foreground', 'status', 'info', 'check', 'configcheck', 'jmx', ] if len(args) < 1: sys.stderr.write("Usage: %s %s\n" % (sys.argv[0], "|".join(COMMANDS))) return 2 command = args[0] if command not in COMMANDS: sys.stderr.write("Unknown command: %s\n" % command) return 3 pid_file = PidFile('dd-agent') if options.clean: pid_file.clean() agent = Agent(pid_file.get_path(), autorestart) if command in START_COMMANDS: log.info('Agent version %s' % get_version()) if 'start' == command: log.info('Start daemon') agent.start() elif 'stop' == command: log.info('Stop daemon') agent.stop() elif 'restart' == command: log.info('Restart daemon') agent.restart() elif 'status' == command: agent.status() elif 'info' == command: return agent.info(verbose=options.verbose) elif 'foreground' == command: logging.info('Running in foreground') if autorestart: # Set-up the supervisor callbacks and fork it. logging.info('Running Agent with auto-restart ON') def child_func(): agent.run() def parent_func(): agent.start_event = False AgentSupervisor.start(parent_func, child_func) else: # Run in the standard foreground. agent.run(config=agentConfig) elif 'check' == command: check_name = args[1] try: import checks.collector # Try the old-style check first print getattr(checks.collector, check_name)(log).check(agentConfig) except Exception: # If not an old-style check, try checks.d checks = load_check_directory(agentConfig, hostname) for check in checks['initialized_checks']: if check.name == check_name: check.run() print check.get_metrics() print check.get_events() if len(args) == 3 and args[2] == 'check_rate': print "Running 2nd iteration to capture rate metrics" time.sleep(1) check.run() print check.get_metrics() print check.get_events() elif 'configcheck' == command or 'configtest' == command: osname = get_os() all_valid = True for conf_path in glob.glob(os.path.join(get_confd_path(osname), "*.yaml")): basename = os.path.basename(conf_path) try: check_yaml(conf_path) except Exception, e: all_valid = False print "%s contains errors:\n %s" % (basename, e) else: print "%s is valid" % basename if all_valid: print "All yaml files passed. You can now run the Datadog agent." return 0 else: print("Fix the invalid yaml files above in order to start the Datadog agent. " "A useful external tool for yaml parsing can be found at " "http://yaml-online-parser.appspot.com/") return 1
if __name__ == '__main__': options, args = get_parsed_args() agentConfig = get_config() # Logging setupLogging(agentConfig) if len(args) > 0: command = args[0] pid_file = PidFile('dd-agent') if options.clean: pid_file.clean() daemon = Agent(pid_file.get_path()) if 'start' == command: logging.info('Start daemon') daemon.start() elif 'stop' == command: logging.info('Stop daemon') daemon.stop() elif 'restart' == command: logging.info('Restart daemon') daemon.restart() elif 'foreground' == command: logging.info('Running in foreground')
def main(): options, args = get_parsed_args() agentConfig = get_config(options=options) autorestart = agentConfig.get('autorestart', False) hostname = get_hostname(agentConfig) COMMANDS = [ 'start', 'stop', 'restart', 'foreground', 'status', 'info', 'check', 'configcheck', 'jmx', 'flare', ] if len(args) < 1: sys.stderr.write("Usage: %s %s\n" % (sys.argv[0], "|".join(COMMANDS))) return 2 command = args[0] if command not in COMMANDS: sys.stderr.write("Unknown command: %s\n" % command) return 3 pid_file = PidFile('dd-agent') if options.clean: pid_file.clean() agent = Agent(pid_file.get_path(), autorestart) if command in START_COMMANDS: log.info('Agent version %s' % get_version()) if 'start' == command: log.info('Start daemon') agent.start() elif 'stop' == command: log.info('Stop daemon') agent.stop() elif 'restart' == command: log.info('Restart daemon') agent.restart() elif 'status' == command: agent.status() elif 'info' == command: return agent.info(verbose=options.verbose) elif 'foreground' == command: logging.info('Running in foreground') if autorestart: # Set-up the supervisor callbacks and fork it. logging.info('Running Agent with auto-restart ON') def child_func(): agent.start(foreground=True) def parent_func(): agent.start_event = False AgentSupervisor.start(parent_func, child_func) else: # Run in the standard foreground. agent.start(foreground=True) elif 'check' == command: if len(args) < 2: sys.stderr.write( "Usage: %s check <check_name> [check_rate]\n" "Add check_rate as last argument to compute rates\n" % sys.argv[0] ) return 1 check_name = args[1] try: import checks.collector # Try the old-style check first print getattr(checks.collector, check_name)(log).check(agentConfig) except Exception: # If not an old-style check, try checks.d checks = load_check_directory(agentConfig, hostname) for check in checks['initialized_checks']: if check.name == check_name: check.run() print check.get_metrics() print check.get_events() print check.get_service_checks() if len(args) == 3 and args[2] == 'check_rate': print "Running 2nd iteration to capture rate metrics" time.sleep(1) check.run() print check.get_metrics() print check.get_events() print check.get_service_checks() check.stop() elif 'configcheck' == command or 'configtest' == command: configcheck() elif 'jmx' == command: from jmxfetch import JMX_LIST_COMMANDS, JMXFetch if len(args) < 2 or args[1] not in JMX_LIST_COMMANDS.keys(): print "#" * 80 print "JMX tool to be used to help configuring your JMX checks." print "See http://docs.datadoghq.com/integrations/java/ for more information" print "#" * 80 print "\n" print "You have to specify one of the following commands:" for command, desc in JMX_LIST_COMMANDS.iteritems(): print " - %s [OPTIONAL: LIST OF CHECKS]: %s" % (command, desc) print "Example: sudo /etc/init.d/datadog-agent jmx list_matching_attributes tomcat jmx solr" print "\n" else: jmx_command = args[1] checks_list = args[2:] confd_directory = get_confd_path(get_os()) jmx_process = JMXFetch(confd_directory, agentConfig) should_run = jmx_process.run(jmx_command, checks_list, reporter="console") if not should_run: print "Couldn't find any valid JMX configuration in your conf.d directory: %s" % confd_directory print "Have you enabled any JMX check ?" print "If you think it's not normal please get in touch with Datadog Support" elif 'flare' == command: Flare.check_user_rights() case_id = int(args[1]) if len(args) > 1 else None f = Flare(True, case_id) f.collect() try: f.upload() except Exception, e: print 'The upload failed:\n{0}'.format(str(e))
def main(): options, args = get_parsed_args() agentConfig = get_config(options=options) autorestart = agentConfig.get('autorestart', False) COMMANDS = [ 'start', 'stop', 'restart', 'foreground', 'status', 'info', 'check', ] if len(args) < 1: sys.stderr.write("Usage: %s %s\n" % (sys.argv[0], "|".join(COMMANDS))) return 2 command = args[0] if command not in COMMANDS: sys.stderr.write("Unknown command: %s\n" % command) return 3 pid_file = PidFile('dd-agent') if options.clean: pid_file.clean() agent = Agent(pid_file.get_path(), autorestart) if 'start' == command: log.info('Start daemon') agent.start() elif 'stop' == command: log.info('Stop daemon') agent.stop() elif 'restart' == command: log.info('Restart daemon') agent.restart() elif 'status' == command: agent.status() elif 'info' == command: agent.info(verbose=options.verbose) elif 'foreground' == command: logging.info('Running in foreground') if autorestart: # Set-up the supervisor callbacks and fork it. logging.info('Running Agent with auto-restart ON') def child_func(): agent.run() def parent_func(): agent.start_event = False AgentSupervisor.start(parent_func, child_func) else: # Run in the standard foreground. agent.run(config=agentConfig) elif 'check' == command: check_name = args[1] try: import checks.collector # Try the old-style check first print getattr(checks.collector, check_name)(log).check(agentConfig) except Exception: # If not an old-style check, try checks.d checks = load_check_directory(agentConfig) for check in checks: if check.name == check_name: check.run() print check.get_metrics() print check.get_events() if len(args) == 3 and args[2] == 'check_rate': print "Running 2nd iteration to capture rate metrics" time.sleep(1) check.run() print check.get_metrics() print check.get_events() return 0
def main(): options, args = get_parsed_args() agentConfig = get_config(options=options) autorestart = agentConfig.get('autorestart', False) hostname = get_hostname(agentConfig) COMMANDS = [ 'start', 'stop', 'restart', 'foreground', 'status', 'info', 'check', 'configcheck', 'jmx', 'flare', ] if len(args) < 1: sys.stderr.write("Usage: %s %s\n" % (sys.argv[0], "|".join(COMMANDS))) return 2 command = args[0] if command not in COMMANDS: sys.stderr.write("Unknown command: %s\n" % command) return 3 # Deprecation notice if command not in DD_AGENT_COMMANDS: # Will become an error message and exit after deprecation period from utils.deprecations import deprecate_old_command_line_tools deprecate_old_command_line_tools() pid_file = PidFile('dd-agent') if options.clean: pid_file.clean() agent = Agent(pid_file.get_path(), autorestart) if command in START_COMMANDS: log.info('Agent version %s' % get_version()) if 'start' == command: log.info('Start daemon') agent.start() elif 'stop' == command: log.info('Stop daemon') agent.stop() elif 'restart' == command: log.info('Restart daemon') agent.restart() elif 'status' == command: agent.status() elif 'info' == command: return agent.info(verbose=options.verbose) elif 'foreground' == command: logging.info('Running in foreground') if autorestart: # Set-up the supervisor callbacks and fork it. logging.info('Running Agent with auto-restart ON') def child_func(): agent.start(foreground=True) def parent_func(): agent.start_event = False AgentSupervisor.start(parent_func, child_func) else: # Run in the standard foreground. agent.start(foreground=True) elif 'check' == command: if len(args) < 2: sys.stderr.write( "Usage: %s check <check_name> [check_rate]\n" "Add check_rate as last argument to compute rates\n" % sys.argv[0]) return 1 check_name = args[1] try: import checks.collector # Try the old-style check first print getattr(checks.collector, check_name)(log).check(agentConfig) except Exception: # If not an old-style check, try checks.d checks = load_check_directory(agentConfig, hostname) for check in checks['initialized_checks']: if check.name == check_name: check.run() print check.get_metrics() print check.get_events() print check.get_service_checks() if len(args) == 3 and args[2] == 'check_rate': print "Running 2nd iteration to capture rate metrics" time.sleep(1) check.run() print check.get_metrics() print check.get_events() print check.get_service_checks() check.stop() elif 'configcheck' == command or 'configtest' == command: configcheck() elif 'jmx' == command: from jmxfetch import JMX_LIST_COMMANDS, JMXFetch if len(args) < 2 or args[1] not in JMX_LIST_COMMANDS.keys(): print "#" * 80 print "JMX tool to be used to help configuring your JMX checks." print "See http://docs.datadoghq.com/integrations/java/ for more information" print "#" * 80 print "\n" print "You have to specify one of the following commands:" for command, desc in JMX_LIST_COMMANDS.iteritems(): print " - %s [OPTIONAL: LIST OF CHECKS]: %s" % (command, desc) print "Example: sudo /etc/init.d/datadog-agent jmx list_matching_attributes tomcat jmx solr" print "\n" else: jmx_command = args[1] checks_list = args[2:] confd_directory = get_confd_path(get_os()) jmx_process = JMXFetch(confd_directory, agentConfig) should_run = jmx_process.run(jmx_command, checks_list, reporter="console") if not should_run: print "Couldn't find any valid JMX configuration in your conf.d directory: %s" % confd_directory print "Have you enabled any JMX check ?" print "If you think it's not normal please get in touch with Datadog Support" elif 'flare' == command: Flare.check_user_rights() case_id = int(args[1]) if len(args) > 1 else None f = Flare(True, case_id) f.collect() try: f.upload() except Exception, e: print 'The upload failed:\n{0}'.format(str(e))
def main(): options, args = get_parsed_args() agentConfig = get_config() # Logging setup_logging(agentConfig) COMMANDS = [ 'start', 'stop', 'restart', 'foreground', 'status', 'info', ] if len(args) < 1: sys.stderr.write("Usage: %s %s\n" % (sys.argv[0], "|".join(COMMANDS))) return 2 command = args[0] if command not in COMMANDS: sys.stderr.write("Unknown command: %s\n" % command) return 3 pid_file = PidFile('dd-agent') # Only initialize the Agent if we're starting or stopping it. if command in ['start', 'stop', 'restart', 'foreground']: if options.clean: pid_file.clean() agent = Agent(pid_file.get_path()) if 'start' == command: logging.info('Start daemon') agent.start() elif 'stop' == command: logging.info('Stop daemon') agent.stop() elif 'restart' == command: logging.info('Restart daemon') agent.restart() elif 'foreground' == command: logging.info('Running in foreground') agent.run() # Commands that don't need the agent to be initialized. else: if 'status' == command: pid = pid_file.get_pid() if pid is not None: sys.stdout.write('dd-agent is running as pid %s.\n' % pid) else: sys.stdout.write('dd-agent is not running.\n') elif 'info' == command: return CollectorStatus.print_latest_status() return 0
def main(): options, args = get_parsed_args() agentConfig = get_config(options=options) autorestart = agentConfig.get('autorestart', False) COMMANDS = [ 'start', 'stop', 'restart', 'foreground', 'status', 'info', ] if len(args) < 1: sys.stderr.write("Usage: %s %s\n" % (sys.argv[0], "|".join(COMMANDS))) return 2 command = args[0] if command not in COMMANDS: sys.stderr.write("Unknown command: %s\n" % command) return 3 pid_file = PidFile('dd-agent') # Only initialize the Agent if we're starting or stopping it. if command in ['start', 'stop', 'restart', 'foreground']: if options.clean: pid_file.clean() agent = Agent(pid_file.get_path(), autorestart) if 'start' == command: log.info('Start daemon') agent.start() elif 'stop' == command: log.info('Stop daemon') agent.stop() elif 'restart' == command: log.info('Restart daemon') agent.restart() elif 'foreground' == command: logging.info('Running in foreground') if autorestart: # Set-up the supervisor callbacks and fork it. logging.info('Running Agent with auto-restart ON') def child_func(): agent.run() def parent_func(): agent.start_event = False AgentSupervisor.start(parent_func, child_func) else: # Run in the standard foreground. agent.run(config=agentConfig) # Commands that don't need the agent to be initialized. else: if 'status' == command: pid = pid_file.get_pid() if pid is not None: sys.stdout.write('dd-agent is running as pid %s.\n' % pid) log.info("dd-agent is running as pid %s." % pid) else: sys.stdout.write('dd-agent is not running.\n') log.info("dd-agent is not running.") elif 'info' == command: logging.getLogger().setLevel(logging.ERROR) return CollectorStatus.print_latest_status(verbose=options.verbose) return 0
def main(): options, args = get_parsed_args() agentConfig = get_config(options=options) autorestart = agentConfig.get('autorestart', False) COMMANDS = [ 'start', 'stop', 'restart', 'foreground', 'status', 'info', 'check', ] if len(args) < 1: sys.stderr.write("Usage: %s %s\n" % (sys.argv[0], "|".join(COMMANDS))) return 2 command = args[0] if command not in COMMANDS: sys.stderr.write("Unknown command: %s\n" % command) return 3 pid_file = PidFile('dd-agent') if options.clean: pid_file.clean() agent = Agent(pid_file.get_path(), autorestart) if 'start' == command: log.info('Start daemon') agent.start() elif 'stop' == command: log.info('Stop daemon') agent.stop() elif 'restart' == command: log.info('Restart daemon') agent.restart() elif 'status' == command: agent.status() elif 'info' == command: return agent.info(verbose=options.verbose) elif 'foreground' == command: logging.info('Running in foreground') if autorestart: # Set-up the supervisor callbacks and fork it. logging.info('Running Agent with auto-restart ON') def child_func(): agent.run() def parent_func(): agent.start_event = False AgentSupervisor.start(parent_func, child_func) else: # Run in the standard foreground. agent.run(config=agentConfig) elif 'check' == command: check_name = args[1] try: import checks.collector # Try the old-style check first print getattr(checks.collector, check_name)(log).check(agentConfig) except Exception: # If not an old-style check, try checks.d checks = load_check_directory(agentConfig) for check in checks['initialized_checks']: if check.name == check_name: check.run() print check.get_metrics() print check.get_events() if len(args) == 3 and args[2] == 'check_rate': print "Running 2nd iteration to capture rate metrics" time.sleep(1) check.run() print check.get_metrics() print check.get_events() return 0
def main(): options, args = get_parsed_args() agentConfig = get_config(options=options) autorestart = agentConfig.get('autorestart', False) COMMANDS = [ 'start', 'stop', 'restart', 'foreground', 'status', 'info', 'check', 'configcheck', 'jmx', ] if len(args) < 1: sys.stderr.write("Usage: %s %s\n" % (sys.argv[0], "|".join(COMMANDS))) return 2 command = args[0] if command not in COMMANDS: sys.stderr.write("Unknown command: %s\n" % command) return 3 pid_file = PidFile('dd-agent') if options.clean: pid_file.clean() agent = Agent(pid_file.get_path(), autorestart) if command in START_COMMANDS: log.info('Agent version %s' % get_version()) if 'start' == command: log.info('Start daemon') agent.start() elif 'stop' == command: log.info('Stop daemon') agent.stop() elif 'restart' == command: log.info('Restart daemon') agent.restart() elif 'status' == command: agent.status() elif 'info' == command: return agent.info(verbose=options.verbose) elif 'foreground' == command: logging.info('Running in foreground') if autorestart: # Set-up the supervisor callbacks and fork it. logging.info('Running Agent with auto-restart ON') def child_func(): agent.run() def parent_func(): agent.start_event = False AgentSupervisor.start(parent_func, child_func) else: # Run in the standard foreground. agent.run(config=agentConfig) elif 'check' == command: check_name = args[1] try: import checks.collector # Try the old-style check first print getattr(checks.collector, check_name)(log).check(agentConfig) except Exception: # If not an old-style check, try checks.d checks = load_check_directory(agentConfig) for check in checks['initialized_checks']: if check.name == check_name: check.run() print check.get_metrics() print check.get_events() if len(args) == 3 and args[2] == 'check_rate': print "Running 2nd iteration to capture rate metrics" time.sleep(1) check.run() print check.get_metrics() print check.get_events() elif 'configcheck' == command or 'configtest' == command: osname = get_os() all_valid = True for conf_path in glob.glob( os.path.join(get_confd_path(osname), "*.yaml")): basename = os.path.basename(conf_path) try: check_yaml(conf_path) except Exception, e: all_valid = False print "%s contains errors:\n %s" % (basename, e) else: print "%s is valid" % basename if all_valid: print "All yaml files passed. You can now run the Datadog agent." return 0 else: print( "Fix the invalid yaml files above in order to start the Datadog agent. " "A useful external tool for yaml parsing can be found at " "http://yaml-online-parser.appspot.com/") return 1
def main(): options, args = get_parsed_args() agentConfig = get_config() # Logging setup_logging(agentConfig) COMMANDS = [ 'start', 'stop', 'restart', 'foreground', 'status', 'info', ] if len(args) < 1: sys.stderr.write("Usage: %s %s\n" % (sys.argv[0], "|".join(COMMANDS))) return 2 command = args[0] if command not in COMMANDS: sys.stderr.write("Unknown command: %s\n" % command) return 3 pid_file = PidFile('dd-agent') # Only initialize the Agent if we're starting or stopping it. if command in ['start', 'stop', 'restart', 'foreground']: if options.clean: pid_file.clean() agent = Agent(pid_file.get_path()) if 'start' == command: logging.info('Start daemon') agent.start() elif 'stop' == command: logging.info('Stop daemon') agent.stop() elif 'restart' == command: logging.info('Restart daemon') agent.restart() elif 'foreground' == command: logging.info('Running in foreground') agent.run() # Commands that don't need the agent to be initialized. else: if 'status' == command: pid = pid_file.get_pid() if pid is not None: sys.stdout.write('dd-agent is running as pid %s.\n' % pid) else: sys.stdout.write('dd-agent is not running.\n') elif 'info' == command: CollectorStatus.print_latest_status() return 0