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
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)
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
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) ])