Exemple #1
0
    def start(self, track, setup, metrics_store):
        configured_host_list = self.cfg.opts("launcher",
                                             "external.target.hosts")
        hosts = []
        try:
            for authority in configured_host_list:
                host, port = authority.split(":")
                hosts.append({"host": host, "port": port})
        except ValueError:
            msg = "Could not initialize external cluster. Invalid format for %s. Expected a comma-separated list of host:port pairs, " \
                  "e.g. host1:9200,host2:9200." % configured_host_list
            logger.exception(msg)
            raise exceptions.SystemSetupError(msg)

        t = telemetry.Telemetry(
            self.cfg,
            metrics_store,
            devices=[
                telemetry.ExternalEnvironmentInfo(self.cfg, metrics_store),
                telemetry.NodeStats(self.cfg, metrics_store),
                telemetry.IndexStats(self.cfg, metrics_store)
            ])
        c = self.cluster_factory.create(hosts, [], metrics_store, t)
        t.attach_to_cluster(c)
        self.setup_index(c, track, setup)
        return c
Exemple #2
0
    def test_stores_cluster_level_metrics_on_attach(self, metrics_store_add_meta_info):
        nodes_stats = {
            "nodes": {
                "FCFjozkeTiOpN-SI88YEcg": {
                    "name": "rally0",
                    "host": "127.0.0.1"
                }
            }
        }

        nodes_info = {
            "nodes": {
                "FCFjozkeTiOpN-SI88YEcg": {
                    "name": "rally0",
                    "host": "127.0.0.1",
                    "os": {
                        "name": "Mac OS X",
                        "version": "10.11.4",
                        "available_processors": 8
                    },
                    "jvm": {
                        "version": "1.8.0_74",
                        "vm_vendor": "Oracle Corporation"
                    }
                }
            }
        }
        cluster_info = {
            "version":
                {
                    "build_hash": "abc123"
                }
        }
        client = Client(SubClient(nodes_stats), SubClient(nodes_info), cluster_info)
        cfg = self.create_config()
        metrics_store = metrics.EsMetricsStore(cfg)
        env_device = telemetry.ExternalEnvironmentInfo(cfg, client, metrics_store)
        t = telemetry.Telemetry(cfg, metrics_store, devices=[env_device])
        t.attach_to_cluster(cluster.Cluster([], t))

        calls = [
            mock.call(metrics.MetaInfoScope.cluster, None, "source_revision", "abc123"),
            mock.call(metrics.MetaInfoScope.node, "rally0", "node_name", "rally0"),
            mock.call(metrics.MetaInfoScope.node, "rally0", "host_name", "127.0.0.1"),
            mock.call(metrics.MetaInfoScope.node, "rally0", "os_name", "Mac OS X"),
            mock.call(metrics.MetaInfoScope.node, "rally0", "os_version", "10.11.4"),
            mock.call(metrics.MetaInfoScope.node, "rally0", "cpu_logical_cores", 8),
            mock.call(metrics.MetaInfoScope.node, "rally0", "jvm_vendor", "Oracle Corporation"),
            mock.call(metrics.MetaInfoScope.node, "rally0", "jvm_version", "1.8.0_74")
        ]
        metrics_store_add_meta_info.assert_has_calls(calls)
Exemple #3
0
    def start(self, metrics_store):
        configured_host_list = self.cfg.opts("launcher",
                                             "external.target.hosts")
        hosts = []
        try:
            for authority in configured_host_list:
                host, port = authority.split(":")
                hosts.append({"host": host, "port": port})
        except ValueError:
            msg = "Could not initialize external cluster. Invalid format for %s. Expected a comma-separated list of host:port pairs, " \
                  "e.g. host1:9200,host2:9200." % configured_host_list
            logger.exception(msg)
            raise exceptions.SystemSetupError(msg)

        t = telemetry.Telemetry(
            self.cfg,
            metrics_store,
            devices=[
                telemetry.ExternalEnvironmentInfo(self.cfg, metrics_store),
                telemetry.NodeStats(self.cfg, metrics_store),
                telemetry.IndexStats(self.cfg, metrics_store)
            ])
        c = self.cluster_factory.create(
            hosts, [], self.cfg.opts("launcher", "client.options"),
            metrics_store, t)
        user_defined_version = self.cfg.opts("source",
                                             "distribution.version",
                                             mandatory=False)
        distribution_version = c.info()["version"]["number"]
        if not user_defined_version or user_defined_version.strip() == "":
            logger.info(
                "Distribution version was not specified by user. Rally-determined version is [%s]"
                % distribution_version)
            self.cfg.add(config.Scope.benchmark, "source",
                         "distribution.version", distribution_version)
        elif user_defined_version != distribution_version:
            logger.warn(
                "User specified version [%s] but cluster reports version [%s]."
                % (user_defined_version, distribution_version))
            print(
                "Warning: Specified distribution version '%s' on the command line differs from version '%s' reported by the cluster."
                % (user_defined_version, distribution_version))
        t.attach_to_cluster(c)
        return c
Exemple #4
0
    def prepare_telemetry(self):
        enabled_devices = self.config.opts("telemetry", "devices")
        telemetry_params = self.config.opts("telemetry", "params")

        es = self.es_clients
        es_default = self.es_clients["default"]
        self.telemetry = telemetry.Telemetry(
            enabled_devices,
            devices=[
                telemetry.NodeStats(telemetry_params, es, self.metrics_store),
                telemetry.ExternalEnvironmentInfo(es_default,
                                                  self.metrics_store),
                telemetry.ClusterEnvironmentInfo(es_default,
                                                 self.metrics_store),
                telemetry.JvmStatsSummary(es_default, self.metrics_store),
                telemetry.IndexStats(es_default, self.metrics_store),
                telemetry.MlBucketProcessingTime(es_default,
                                                 self.metrics_store),
                telemetry.CcrStats(telemetry_params, es, self.metrics_store),
                telemetry.RecoveryStats(telemetry_params, es,
                                        self.metrics_store)
            ])