예제 #1
0
    def GET(self):
        try:
            url_param = [
                i for i in web.ctx['path'].split('/')
                if i not in ['', 'api', 'config']
            ]
        except:
            error_msg = "URl not Found"
            raise web.notfound(error_msg)
        result = {}

        if len(url_param) == 0:
            result[METRICS] = configurator.get_collectd_config()
            result[LOGGING] = configurator.get_fluentd_config()
        elif url_param[0] == SUPPORTED_PLUGINS:
            result[METRICS] = configurator.get_supported_metrics_plugins()
            result[LOGGING] = configurator.get_supported_logging_plugins()
        elif url_param[0] == SUPPORTED_TARGETS:
            result = configurator.get_supported_targets()
        elif url_param[0] == "mapping":
            result[METRICS] = configurator.get_collectd_plugins_mapping()
            result[LOGGING] = configurator.get_fluentd_plugins_mapping()
            result[TARGETS] = configurator.get_supported_targets_mapping()
        elif url_param[0] == "params":
            user_data = web.input(metrics_plugins="",
                                  logging_plugins="",
                                  targets="")
            metric_plugin_instances = []
            target_instances = []
            logging_plugin_instances = []
            # print user_data
            if user_data.metrics_plugins:
                metric_plugin_instances = user_data.metrics_plugins.split(",")
                result[METRICS] = configurator.get_metrics_plugins_params(
                    metric_plugin_instances)
            if user_data.targets:
                target_instances = user_data.targets.split(",")
                result[TARGETS] = configurator.get_targets_params(
                    target_instances)
            if user_data.logging_plugins:
                logging_plugin_instances = user_data.logging_plugins.split(",")
                result[LOGGING] = configurator.get_logging_plugins_params(
                    logging_plugin_instances)
            if not (user_data.metrics_plugins or user_data.targets
                    or user_data.logging_plugins):
                result[METRICS] = configurator.get_metrics_plugins_params(
                    metric_plugin_instances)
                result[LOGGING] = configurator.get_logging_plugins_params(
                    logging_plugin_instances)
                result[TARGETS] = configurator.get_targets_params(
                    target_instances)
        else:
            error_msg = "URl not Found"
            raise web.notfound(error_msg)

        return json.dumps(result)
예제 #2
0
    def GET(self):
        try:
            url_param = [i for i in web.ctx['path'].split('/') if i not in ['', 'api', 'config']]
        except:
            error_msg = "URl not Found"
            raise web.notfound(error_msg)

        result = {}
        try:
            import platform
            if float(".".join([platform.python_version_tuple()[0], platform.python_version_tuple()[1]])) < 2.6:
                result["distro"] = " ".join(platform.dist())
            else:
                result["distro"] = " ".join(platform.linux_distribution())
        except:
            result["distro"] = None

        if len(url_param) == 0:
            result[METRICS] = configurator.get_collectd_config()
            result[LOGGING] = configurator.get_fluentd_config()
        elif url_param[0] == SUPPORTED_PLUGINS:
            result[METRICS] = configurator.get_supported_metrics_plugins()
            result[LOGGING] = configurator.get_supported_logging_plugins()
        elif url_param[0] == SUPPORTED_TARGETS:
            result = configurator.get_supported_targets()
        elif url_param[0] == "mapping":
            result[METRICS] = configurator.get_collectd_plugins_mapping()
            result[LOGGING] = configurator.get_fluentd_plugins_mapping()
            result[TARGETS] = configurator.get_supported_targets_mapping()
        elif url_param[0] == "params":
            user_data = web.input(metrics_plugins="", logging_plugins="", targets="")
            metric_plugin_instances = []
            target_instances = []
            logging_plugin_instances = []
            # print user_data
            if user_data.metrics_plugins:
                metric_plugin_instances = user_data.metrics_plugins.split(",")
                result[METRICS] = configurator.get_metrics_plugins_params(metric_plugin_instances)
            if user_data.targets:
                target_instances = user_data.targets.split(",")
                result[TARGETS] = configurator.get_targets_params(target_instances)
            if user_data.logging_plugins:
                logging_plugin_instances = user_data.logging_plugins.split(",")
                result[LOGGING] = configurator.get_logging_plugins_params(logging_plugin_instances)
            if not (user_data.metrics_plugins or user_data.targets or user_data.logging_plugins):
                result[METRICS] = configurator.get_metrics_plugins_params(metric_plugin_instances)
                result[LOGGING] = configurator.get_logging_plugins_params(logging_plugin_instances)
                result[TARGETS] = configurator.get_targets_params(target_instances)
        else:
            error_msg = "URl not Found"
            raise web.notfound(error_msg)

        return json.dumps(result)
예제 #3
0
def add_agent_config(service, dict):
    '''
    Find the input config for the plugin fieldname:defaultvalue
    :param service: name of the service
    :param dict: poller_dict as the input
    :return:
    '''
    dict["agentConfig"] = {}
    agentConfig = {}
    agentConfig["config"] = {}
    for key, value in service_plugin_mapping.items():
        if(key == service):
            agentConfig["name"] = value
            break
    config = configurator.get_metrics_plugins_params(agentConfig["name"])
    for item in config["plugins"]:
        if(item.get("config") and item.get("name") == agentConfig["name"]):
            #Config specific to jvm plugin
            if(agentConfig["name"] == "jvm" or agentConfig["name"] == "kafka_jmx"):
                agentConfig["config"]["process"] = service
                break
            for item1 in item["config"]:
                agentConfig["config"][item1["fieldName"]] = item1["defaultValue"]

    #In apache plugin replace the port default value with the listening ports for apache/httpd,
    #if there are multiple listening ports for the PID assosciate the first port with the PID
    if(service == "apache"):
        if(len(dict["ports"]) != 0):
            agentConfig["config"]["port"] = dict["ports"][0]
            if(agentConfig["config"]["port"] == "443"):
                agentConfig["config"]["secure"] = "true"

    dict["agentConfig"].update(agentConfig)
    return dict
예제 #4
0
def add_agent_config(service, service_dict=None):
    '''
    Find the input config for the plugin fieldname:defaultvalue
    :param service: name of the service
    :param dict: poller_dict as the input
    :return:
    '''
    if not service_dict:
        service_dict = dict()
    service_dict["agentConfig"] = {}
    agent_config = {}
    agent_config["config"] = {}
    for key, value in SERVICE_PLUGIN_MAPPING.items():
        if key == service:
            agent_config["name"] = value
            break
    config = configurator.get_metrics_plugins_params(agent_config["name"])
    for item in config["plugins"]:
        if item.get("config") and item.get("name") == agent_config["name"]:
            if agent_config["name"] == "kafkatopic":
                agent_config["config"]["process"] = service
                for parameter in item["config"]:
                    agent_config["config"][
                        parameter["fieldName"]] = parameter["defaultValue"]
                break
            for parameter in item["config"]:
                agent_config["config"][
                    parameter["fieldName"]] = parameter["defaultValue"]

    # In apache plugin replace the port default value with the listening ports for apache/httpd,
    # if there are multiple listening ports for the PID assosciate the first
    # port with the PID
    if service == "apache":
        if service_dict["ports"]:
            agent_config["config"]["port"] = service_dict["ports"][0]
            if agent_config["config"]["port"] == "443":
                agent_config["config"]["secure"] = "true"
    # topstats agent plugin is on demand (only explicit operations i.e. start/stop is allowed)
    # topstats plugin start/stop is not part of bulk operation
    elif service == "topstats":
        service_dict["agentConfig"]["on_demand"] = True
    else:
        service_dict["agentConfig"]["on_demand"] = False

    service_dict["agentConfig"].update(agent_config)
    logger.debug("Returning add_agent_config with {0}".format(service_dict))
    return service_dict
예제 #5
0
def add_poller_config(service, dict):
    dict["pollerConfig"] = {}
    pollerConfig = {}
    pollerConfig["config"] = {}

    for key, value in service_plugin_mapping.items():
        if (key == service):
            pollerConfig["name"] = value
            break

    config = configurator.get_metrics_plugins_params(pollerConfig["name"])
    for item in config["plugins"]:
        if(item.get("config") and item.get("name") == pollerConfig["name"]):
            for item1 in item["config"]:
                pollerConfig["config"][item1["fieldName"]] = item1["defaultValue"]
    dict["pollerConfig"].update(pollerConfig)

    return dict
예제 #6
0
def add_agent_config(service, service_dict):
    '''
    Find the input config for the plugin fieldname:defaultvalue
    :param service: name of the service
    :param dict: poller_dict as the input
    :return:
    '''
    service_dict["agentConfig"] = {}
    agent_config = {}
    agent_config["config"] = {}
    for key, value in SERVICE_PLUGIN_MAPPING.items():
        if key == service:
            agent_config["name"] = value
            break
    #print service
    #print SERVICE_PLUGIN_MAPPING.keys()
    config = configurator.get_metrics_plugins_params(agent_config["name"])
    for item in config["plugins"]:
        if item.get("config") and item.get("name") == agent_config["name"]:
            # Config specific to jvm plugin
            if agent_config["name"] == "jvm":
                agent_config["config"]["process"] = service
                break
            if agent_config["name"] == "kafkatopic":
                agent_config["config"]["process"] = service
                for parameter in item["config"]:
                    agent_config["config"][
                        parameter["fieldName"]] = parameter["defaultValue"]
                break
            for parameter in item["config"]:
                agent_config["config"][
                    parameter["fieldName"]] = parameter["defaultValue"]

    # In apache plugin replace the port default value with the listening ports for apache/httpd,
    # if there are multiple listening ports for the PID assosciate the first
    # port with the PID
    if service == "apache":
        if len(service_dict["ports"]) != 0:
            agent_config["config"]["port"] = service_dict["ports"][0]
            if agent_config["config"]["port"] == "443":
                agent_config["config"]["secure"] = "true"

    service_dict["agentConfig"].update(agent_config)
    return service_dict
def add_poller_config(service, service_dict):
    '''
    Add poller config
    '''
    service_dict["pollerConfig"] = {}
    poller_config = {}
    poller_config["config"] = {}

    for key, value in SERVICE_PLUGIN_MAPPING.items():
        if key == service:
            poller_config["name"] = value
            break

    config = configurator.get_metrics_plugins_params(poller_config["name"])
    for item in config["plugins"]:
        if item.get("config") and item.get("name") == poller_config["name"]:
            for item1 in item["config"]:
                poller_config["config"][item1["fieldName"]] = item1["defaultValue"]
    service_dict["pollerConfig"].update(poller_config)

    return service_dict