예제 #1
0
 def test_get_runbook(self):
     with mock.patch(
         'paasta_tools.monitoring_tools.__get_monitoring_config_value',
     ) as get_monitoring_config_value_patch:
         monitoring_tools.get_runbook(self.overrides, self.service, self.soa_dir)
         get_monitoring_config_value_patch.assert_called_once_with('runbook', self.overrides, self.service,
                                                                   self.soa_dir)
예제 #2
0
 def test_get_runbook(self):
     with mock.patch(
         'paasta_tools.monitoring_tools.__get_monitoring_config_value',
     ) as get_monitoring_config_value_patch:
         monitoring_tools.get_runbook(self.overrides, self.service, self.soa_dir)
         get_monitoring_config_value_patch.assert_called_once_with('runbook', self.overrides, self.service,
                                                                   self.soa_dir)
예제 #3
0
 def test_get_runbook(self):
     with mock.patch(
         "paasta_tools.monitoring_tools.__get_monitoring_config_value", autospec=True
     ) as get_monitoring_config_value_patch:
         monitoring_tools.get_runbook(self.overrides, self.service, self.soa_dir)
         get_monitoring_config_value_patch.assert_called_once_with(
             "runbook", self.overrides, self.service, self.soa_dir
         )
def send_event(service, namespace, cluster, soa_dir, status, output):
    """Send an event to sensu via pysensu_yelp with the given information.

    :param service: The service name the event is about
    :param namespace: The namespace of the service the event is about
    :param soa_dir: The service directory to read monitoring information from
    :param status: The status to emit for this event
    :param output: The output to emit for this event"""
    # This function assumes the input is a string like "mumble.main"
    monitoring_overrides = marathon_tools.load_marathon_service_config(service, namespace, cluster).get_monitoring()
    if "alert_after" not in monitoring_overrides:
        monitoring_overrides["alert_after"] = "2m"
    monitoring_overrides["check_every"] = "1m"
    monitoring_overrides["runbook"] = monitoring_tools.get_runbook(monitoring_overrides, service, soa_dir=soa_dir)

    check_name = "check_marathon_services_replication.%s" % compose_job_id(service, namespace)
    monitoring_tools.send_event(service, check_name, monitoring_overrides, status, output, soa_dir)
    _log(
        service=service,
        line="Replication: %s" % output,
        component="monitoring",
        level="debug",
        cluster=cluster,
        instance=namespace,
    )
예제 #5
0
def compose_monitoring_overrides_for_service(chronos_job_config):
    """ Compose a group of monitoring overrides """
    monitoring_overrides = chronos_job_config.get_monitoring()
    if 'alert_after' not in monitoring_overrides:
        monitoring_overrides['alert_after'] = '15m'
    monitoring_overrides['check_every'] = '1m'
    monitoring_overrides['runbook'] = monitoring_tools.get_runbook(
        monitoring_overrides,
        chronos_job_config.service,
        soa_dir=chronos_job_config.soa_dir,
    )

    if 'realert_every' not in monitoring_overrides:
        guessed_realert_every = guess_realert_every(chronos_job_config)
        if guessed_realert_every is not None:
            monitoring_overrides[
                'realert_every'] = monitoring_tools.get_realert_every(
                    monitoring_overrides,
                    chronos_job_config.service,
                    soa_dir=chronos_job_config.soa_dir,
                    monitoring_defaults=lambda x:
                    {'realert_every': guessed_realert_every}.get(x),
                )
        else:
            monitoring_overrides[
                'realert_every'] = monitoring_tools.get_realert_every(
                    monitoring_overrides,
                    chronos_job_config.service,
                    soa_dir=chronos_job_config.soa_dir,
                )
    return monitoring_overrides
예제 #6
0
def send_event(service, namespace, cluster, soa_dir, status, output):
    """Send an event to sensu via pysensu_yelp with the given information.

    :param service: The service name the event is about
    :param namespace: The namespace of the service the event is about
    :param soa_dir: The service directory to read monitoring information from
    :param status: The status to emit for this event
    :param output: The output to emit for this event"""
    # This function assumes the input is a string like "mumble.main"
    monitoring_overrides = marathon_tools.load_marathon_service_config(
        service, namespace, cluster).get_monitoring()
    if 'alert_after' not in monitoring_overrides:
        monitoring_overrides['alert_after'] = '2m'
    monitoring_overrides['check_every'] = '1m'
    monitoring_overrides['runbook'] = monitoring_tools.get_runbook(monitoring_overrides, service, soa_dir=soa_dir)

    check_name = 'check_marathon_services_replication.%s' % compose_job_id(service, namespace)
    monitoring_tools.send_event(service, check_name, monitoring_overrides, status, output, soa_dir)
    _log(
        service=service,
        line='Replication: %s' % output,
        component='monitoring',
        level='debug',
        cluster=cluster,
        instance=namespace,
    )
예제 #7
0
파일: info.py 프로젝트: kkellyy/paasta
def get_service_info(service, soa_dir):
    service_configuration = read_service_configuration(service, soa_dir)
    description = service_configuration.get('description',
                                            NO_DESCRIPTION_MESSAGE)
    external_link = service_configuration.get('external_link',
                                              NO_EXTERNAL_LINK_MESSAGE)
    smartstack_endpoints = get_smartstack_endpoints(service, soa_dir)
    git_url = get_git_url(service, soa_dir)

    output = []
    output.append('Service Name: %s' % service)
    output.append('Description: %s' % description)
    output.append('External Link: %s' % PaastaColors.cyan(external_link))
    output.append('Monitored By: team %s' %
                  get_team(service=service, overrides={}))
    output.append(
        'Runbook: %s' %
        PaastaColors.cyan(get_runbook(service=service, overrides={})))
    output.append('Git Repo: %s' % git_url)
    output.append('Deployed to the following clusters:')
    output.extend(get_deployments_strings(service, soa_dir))
    if smartstack_endpoints:
        output.append('Smartstack endpoint(s):')
        for endpoint in smartstack_endpoints:
            output.append(' - %s' % endpoint)
    output.append('Dashboard(s):')
    output.extend(get_dashboard_urls(service))

    return '\n'.join(output)
예제 #8
0
파일: info.py 프로젝트: ashwinaj/paasta
def get_service_info(service):
    service_configuration = read_service_configuration(service)
    description = service_configuration.get('description', NO_DESCRIPTION_MESSAGE)
    external_link = service_configuration.get('external_link', NO_EXTERNAL_LINK_MESSAGE)
    pipeline_url = get_pipeline_url(service)
    smartstack_endpoints = get_smartstack_endpoints(service)
    git_url = get_git_url(service)

    output = []
    output.append('Service Name: %s' % service)
    output.append('Description: %s' % description)
    output.append('External Link: %s' % PaastaColors.cyan(external_link))
    output.append('Monitored By: team %s' % get_team(service=service, overrides={}))
    output.append('Runbook: %s' % PaastaColors.cyan(get_runbook(service=service, overrides={})))
    output.append('Git Repo: %s' % git_url)
    output.append('Jenkins Pipeline: %s' % pipeline_url)
    output.append('Deployed to the following clusters:')
    output.extend(get_deployments_strings(service))
    if smartstack_endpoints:
        output.append('Smartstack endpoint(s):')
        for endpoint in smartstack_endpoints:
            output.append(' - %s' % endpoint)
    output.append('Dashboard(s):')
    output.extend(get_dashboard_urls(service))

    return '\n'.join(output)
예제 #9
0
def get_service_info(service, soa_dir):
    service_configuration = read_service_configuration(service, soa_dir)
    description = service_configuration.get("description",
                                            NO_DESCRIPTION_MESSAGE)
    external_link = service_configuration.get("external_link",
                                              NO_EXTERNAL_LINK_MESSAGE)
    smartstack_endpoints = get_smartstack_endpoints(service, soa_dir)
    git_url = get_git_url(service, soa_dir)

    output = []
    output.append("Service Name: %s" % service)
    output.append("Description: %s" % description)
    output.append("External Link: %s" % PaastaColors.cyan(external_link))
    output.append("Monitored By: team %s" %
                  get_team(service=service, overrides={}, soa_dir=soa_dir))
    output.append("Runbook: %s" % PaastaColors.cyan(
        get_runbook(service=service, overrides={}, soa_dir=soa_dir)))
    output.append("Git Repo: %s" % git_url)
    output.append("Deployed to the following clusters:")
    output.extend(get_deployments_strings(service, soa_dir))
    if smartstack_endpoints:
        output.append("Smartstack endpoint(s):")
        for endpoint in smartstack_endpoints:
            output.append(" - %s" % endpoint)
    output.append("Dashboard(s):")
    output.extend(get_dashboard_urls(service))

    return "\n".join(output)
예제 #10
0
def compose_monitoring_overrides_for_service(chronos_job_config):
    """ Compose a group of monitoring overrides """
    monitoring_overrides = chronos_job_config.get_monitoring()
    if "alert_after" not in monitoring_overrides:
        monitoring_overrides["alert_after"] = "15m"
    monitoring_overrides["check_every"] = "1m"
    monitoring_overrides["runbook"] = monitoring_tools.get_runbook(
        monitoring_overrides,
        chronos_job_config.service,
        soa_dir=chronos_job_config.soa_dir,
    )

    if "realert_every" not in monitoring_overrides:
        guessed_realert_every = guess_realert_every(chronos_job_config)
        if guessed_realert_every is not None:
            monitoring_overrides[
                "realert_every"] = monitoring_tools.get_realert_every(
                    monitoring_overrides,
                    chronos_job_config.service,
                    soa_dir=chronos_job_config.soa_dir,
                    monitoring_defaults=lambda x:
                    {"realert_every": guessed_realert_every}.get(x),
                )
        else:
            monitoring_overrides[
                "realert_every"] = monitoring_tools.get_realert_every(
                    monitoring_overrides,
                    chronos_job_config.service,
                    soa_dir=chronos_job_config.soa_dir,
                )
    return monitoring_overrides
def send_event(service, namespace, cluster, soa_dir, status, output):
    """Send an event to sensu via pysensu_yelp with the given information.

    :param service: The service name the event is about
    :param namespace: The namespace of the service the event is about
    :param soa_dir: The service directory to read monitoring information from
    :param status: The status to emit for this event
    :param output: The output to emit for this event"""
    # This function assumes the input is a string like "mumble.main"
    monitoring_overrides = marathon_tools.load_marathon_service_config(
        service=service,
        instance=namespace,
        cluster=cluster,
        soa_dir=soa_dir,
        load_deployments=False,
    ).get_monitoring()
    if 'alert_after' not in monitoring_overrides:
        monitoring_overrides['alert_after'] = '2m'
    monitoring_overrides['check_every'] = '1m'
    monitoring_overrides['runbook'] = monitoring_tools.get_runbook(monitoring_overrides, service, soa_dir=soa_dir)

    check_name = 'check_marathon_services_replication.%s' % compose_job_id(service, namespace)
    monitoring_tools.send_event(service, check_name, monitoring_overrides, status, output, soa_dir)
    _log(
        service=service,
        line='Replication: %s' % output,
        component='monitoring',
        level='debug',
        cluster=cluster,
        instance=namespace,
    )
예제 #12
0
def compose_monitoring_overrides_for_service(chronos_job_config, soa_dir):
    """ Compose a group of monitoring overrides """
    monitoring_overrides = chronos_job_config.get_monitoring()
    if 'alert_after' not in monitoring_overrides:
        monitoring_overrides['alert_after'] = '2m'
    monitoring_overrides['check_every'] = '1m'
    monitoring_overrides['runbook'] = monitoring_tools.get_runbook(
        monitoring_overrides, chronos_job_config.service, soa_dir=soa_dir)
    return monitoring_overrides
예제 #13
0
def compose_monitoring_overrides_for_service(chronos_job_config, soa_dir):
    """ Compose a group of monitoring overrides """
    monitoring_overrides = chronos_job_config.get_monitoring()
    if 'alert_after' not in monitoring_overrides:
        monitoring_overrides['alert_after'] = '2m'
    monitoring_overrides['check_every'] = '1m'
    monitoring_overrides['runbook'] = monitoring_tools.get_runbook(
        monitoring_overrides, chronos_job_config.service, soa_dir=soa_dir)
    return monitoring_overrides
예제 #14
0
def compose_monitoring_overrides_for_service(cluster, service, instance,
                                             soa_dir):
    """ Compose a group of monitoring overrides """
    monitoring_overrides = chronos_tools.load_chronos_job_config(
        service=service, instance=instance, cluster=cluster,
        soa_dir=soa_dir).get_monitoring()
    monitoring_overrides['alert_after'] = '2m'
    monitoring_overrides['check_every'] = '1m'
    monitoring_overrides['runbook'] = monitoring_tools.get_runbook(
        monitoring_overrides, service, soa_dir=soa_dir)
    return monitoring_overrides
def send_event(instance_config, status, output):
    """Send an event to sensu via pysensu_yelp with the given information.

    :param instance_config: an instance of MarathonServiceConfig
    :param status: The status to emit for this event
    :param output: The output to emit for this event"""
    # This function assumes the input is a string like "mumble.main"
    monitoring_overrides = instance_config.get_monitoring()
    if 'alert_after' not in monitoring_overrides:
        monitoring_overrides['alert_after'] = '2m'
    monitoring_overrides['check_every'] = '1m'
    monitoring_overrides['runbook'] = monitoring_tools.get_runbook(
        monitoring_overrides,
        instance_config.service, soa_dir=instance_config.soa_dir,
    )

    check_name = (
        'check_marathon_services_replication.%s' %
        instance_config.job_id
    )
    monitoring_tools.send_event(
        service=instance_config.service,
        check_name=check_name,
        overrides=monitoring_overrides,
        status=status,
        output=output,
        soa_dir=instance_config.soa_dir,
        cluster=instance_config.cluster,
    )
    _log(
        service=instance_config.service,
        line='Replication: %s' % output,
        component='monitoring',
        level='debug',
        cluster=instance_config.cluster,
        instance=instance_config.instance,
    )