Ejemplo n.º 1
0
 def test_search_for_known_service(self):
     monit_name_to_expectation = {
         'uaserver': ServicesEnum.UASERVER,
         'taskqueue-17448': ServicesEnum.TASKQUEUE,
         'datastore_server-4002': ServicesEnum.DATASTORE,
         'blobstore': ServicesEnum.BLOBSTORE,
         'app___superapp-20005': ServicesEnum.APPLICATION,
         'zookeeper': ServicesEnum.ZOOKEEPER,
         'rabbitmq': ServicesEnum.RABBITMQ,
         'nginx': ServicesEnum.NGINX,
         'log_service': ServicesEnum.LOG_SERVICE,
         'iaas_manager': ServicesEnum.IAAS_MANAGER,
         'hermes': ServicesEnum.HERMES,
         'haproxy': ServicesEnum.HAPROXY,
         'groomer_service': ServicesEnum.GROOMER,
         'flower': ServicesEnum.FLOWER,
         'ejabberd': ServicesEnum.EJABBERD,
         'controller': ServicesEnum.CONTROLLER,
         'celery-snowmachineapp-9999': ServicesEnum.CELERY,
         'cassandra': ServicesEnum.CASSANDRA,
         'backup_recovery_service': ServicesEnum.BACKUP_RECOVERY_SERVICE,
         'memcached': ServicesEnum.MEMCACHED,
         'appmanagerserver': ServicesEnum.APPMANAGER,
     }
     for monit_name, expected in monit_name_to_expectation.items():
         assert find_service_by_monit_name(monit_name) == expected
 def test_search_for_known_service(self):
   monit_name_to_expectation = {
     'uaserver': ServicesEnum.UASERVER,
     'taskqueue-17448': ServicesEnum.TASKQUEUE,
     'datastore_server-4002': ServicesEnum.DATASTORE,
     'blobstore': ServicesEnum.BLOBSTORE,
     'app___superapp-20005': ServicesEnum.APPLICATION,
     'zookeeper': ServicesEnum.ZOOKEEPER,
     'rabbitmq': ServicesEnum.RABBITMQ,
     'nginx': ServicesEnum.NGINX,
     'log_service': ServicesEnum.LOG_SERVICE,
     'iaas_manager': ServicesEnum.IAAS_MANAGER,
     'hermes': ServicesEnum.HERMES,
     'haproxy': ServicesEnum.HAPROXY,
     'groomer_service': ServicesEnum.GROOMER,
     'flower': ServicesEnum.FLOWER,
     'ejabberd': ServicesEnum.EJABBERD,
     'controller': ServicesEnum.CONTROLLER,
     'celery-snowmachineapp-9999': ServicesEnum.CELERY,
     'cassandra': ServicesEnum.CASSANDRA,
     'backup_recovery_service': ServicesEnum.BACKUP_RECOVERY_SERVICE,
     'memcached': ServicesEnum.MEMCACHED,
     'appmanagerserver': ServicesEnum.APPMANAGER,
   }
   for monit_name, expected in monit_name_to_expectation.iteritems():
     self.assertEqual(find_service_by_monit_name(monit_name), expected)
Ejemplo n.º 3
0
    def get_current():
        """ Method for building a list of ProcessStats.
    It parses output of `monit status` and generates ProcessStats object
    for each monitored service.

    Returns:
      An instance ofProcessesStatsSnapshot.
    """
        start = time.time()
        monit_status = subprocess.check_output('monit status',
                                               shell=True).decode()
        processes_stats = []
        private_ip = appscale_info.get_private_ip()
        for match in MONIT_PROCESS_PATTERN.finditer(monit_status):
            monit_name = match.group('name')
            pid = int(match.group('pid'))
            service = find_service_by_monit_name(monit_name)
            try:
                stats = _process_stats(pid, service, monit_name, private_ip)
                processes_stats.append(stats)
            except psutil.Error as err:
                logger.warning(
                    "Unable to get process stats for {monit_name} ({err})".
                    format(monit_name=monit_name, err=err))

        # Add processes managed by the ServiceManager.
        for server in ServiceManager.get_state():
            service = find_service_by_monit_name(server.monit_name)
            try:
                stats = _process_stats(server.process.pid, service,
                                       server.monit_name, private_ip)
                processes_stats.append(stats)
            except psutil.Error as error:
                logger.warning('Unable to get process stats for '
                               '{} ({})'.format(server, error))

        stats = ProcessesStatsSnapshot(utc_timestamp=time.mktime(
            datetime.now().timetuple()),
                                       processes_stats=processes_stats)
        logger.info(
            "Prepared stats about {proc} processes in {elapsed:.1f}s.".format(
                proc=len(processes_stats), elapsed=time.time() - start))
        return stats
Ejemplo n.º 4
0
  def get_current():
    """ Method for building a list of ProcessStats.
    It parses output of `monit status` and generates ProcessStats object
    for each monitored service.

    Returns:
      An instance ofProcessesStatsSnapshot.
    """
    start = time.time()
    monit_status = subprocess.check_output('monit status', shell=True)
    processes_stats = []
    private_ip = appscale_info.get_private_ip()
    for match in MONIT_PROCESS_PATTERN.finditer(monit_status):
      monit_name = match.group('name')
      pid = int(match.group('pid'))
      service = find_service_by_monit_name(monit_name)
      try:
        stats = _process_stats(pid, service, monit_name, private_ip)
        processes_stats.append(stats)
      except psutil.Error as err:
        logger.warn(u"Unable to get process stats for {monit_name} ({err})"
                     .format(monit_name=monit_name, err=err))

    # Add processes managed by the ServiceManager.
    for server in ServiceManager.get_state():
      service = find_service_by_monit_name(server.monit_name)
      try:
        stats = _process_stats(server.process.pid, service, server.monit_name,
                               private_ip)
        processes_stats.append(stats)
      except psutil.Error as error:
        logger.warning(u'Unable to get process stats for '
                        u'{} ({})'.format(server, error))

    stats = ProcessesStatsSnapshot(
      utc_timestamp=time.mktime(datetime.now().timetuple()),
      processes_stats=processes_stats
    )
    logger.info("Prepared stats about {proc} processes in {elapsed:.1f}s."
                 .format(proc=len(processes_stats), elapsed=time.time()-start))
    return stats
Ejemplo n.º 5
0
 def test_search_for_unknown_service(self):
     service = find_service_by_monit_name('irrelevant-monit-process')
     assert service.name == 'irrelevant-monit-process'
 def test_search_for_unknown_service(self):
   service = find_service_by_monit_name('irrelevant-monit-process')
   self.assertEqual(service.name, 'irrelevant-monit-process')