Пример #1
0
 def test_sets_options_for_java_9_or_above(self):
     gc = telemetry.Gc("/var/log", java_major_version=random.randint(9, 999))
     env = gc.java_opts("/var/log/defaults-node-0.gc.log")
     self.assertEqual(1, len(env))
     self.assertEqual(
         "-Xlog:gc*=info,safepoint=info,age*=trace:file=/var/log/defaults-node-0.gc.log:utctime,uptimemillis,level,tags:filecount=0",
         env["ES_JAVA_OPTS"])
Пример #2
0
    def _start_node(self, node_configuration, node_count_on_host, java_major_version):
        host_name = node_configuration.ip
        node_name = node_configuration.node_name
        car = node_configuration.car
        binary_path = node_configuration.binary_path
        data_paths = node_configuration.data_paths
        node_telemetry_dir = "%s/telemetry" % node_configuration.node_root_path

        self.logger.info("Starting node [%s] based on car [%s].", node_name, car)

        enabled_devices = self.cfg.opts("mechanic", "telemetry.devices")
        telemetry_params = self.cfg.opts("mechanic", "telemetry.params")
        node_telemetry = [
            telemetry.FlightRecorder(telemetry_params, node_telemetry_dir, java_major_version),
            telemetry.JitCompiler(node_telemetry_dir),
            telemetry.Gc(node_telemetry_dir, java_major_version),
            telemetry.PerfStat(node_telemetry_dir),
            telemetry.DiskIo(self.metrics_store, node_count_on_host),
            telemetry.CpuUsage(self.metrics_store),
            telemetry.NodeEnvironmentInfo(self.metrics_store),
            telemetry.IndexSize(data_paths, self.metrics_store),
            telemetry.MergeParts(self.metrics_store, node_configuration.log_path),
            telemetry.StartupTime(self.metrics_store),
        ]

        t = telemetry.Telemetry(enabled_devices, devices=node_telemetry)
        env = self._prepare_env(car, node_name, t)
        t.on_pre_node_start(node_name)
        node_process = self._start_process(env, node_name, binary_path)
        node = cluster.Node(node_process, host_name, node_name, t)
        self.logger.info("Node [%s] has successfully started. Attaching telemetry devices.", node_name)
        t.attach_to_node(node)
        self.logger.info("Telemetry devices are now attached to node [%s].", node_name)

        return node
Пример #3
0
 def test_sets_options_for_pre_java_9(self):
     gc = telemetry.Gc("/var/log", java_major_version=random.randint(0, 8))
     env = gc.java_opts("/var/log/defaults-node-0.gc.log")
     self.assertEqual(1, len(env))
     self.assertEqual("-Xloggc:/var/log/defaults-node-0.gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps "
                      "-XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -XX:+PrintTenuringDistribution",
                      env["ES_JAVA_OPTS"])
Пример #4
0
    def _start_node(self, node_configuration, node_count_on_host):
        host_name = node_configuration.ip
        node_name = node_configuration.node_name
        car = node_configuration.car
        binary_path = node_configuration.binary_path
        data_paths = node_configuration.data_paths
        node_telemetry_dir = os.path.join(node_configuration.node_root_path, "telemetry")

        java_major_version, java_home = java_resolver.java_home(car, self.cfg)

        self.logger.info("Starting node [%s] based on car [%s].", node_name, car)

        enabled_devices = self.cfg.opts("mechanic", "telemetry.devices")
        telemetry_params = self.cfg.opts("mechanic", "telemetry.params")
        node_telemetry = [
            telemetry.FlightRecorder(telemetry_params, node_telemetry_dir, java_major_version),
            telemetry.JitCompiler(node_telemetry_dir),
            telemetry.Gc(node_telemetry_dir, java_major_version),
            telemetry.DiskIo(self.metrics_store, node_count_on_host, node_telemetry_dir, node_name),
            telemetry.NodeEnvironmentInfo(self.metrics_store),
            telemetry.IndexSize(data_paths, self.metrics_store),
            telemetry.StartupTime(self.metrics_store),
        ]

        t = telemetry.Telemetry(enabled_devices, devices=node_telemetry)
        env = self._prepare_env(car, node_name, java_home, t)
        t.on_pre_node_start(node_name)
        node_pid = self._start_process(binary_path, env)
        node = cluster.Node(node_pid, host_name, node_name, t)
        self.logger.info("Attaching telemetry devices to node [%s].", node_name)
        t.attach_to_node(node)

        return node
Пример #5
0
    def _start_node(self, node, car, es, binary_path):
        node_name = self._node_name(node)
        host_name = socket.gethostname()

        enabled_devices = self.cfg.opts("mechanic", "telemetry.devices")

        node_telemetry = [
            telemetry.FlightRecorder(self.node_telemetry_dir),
            telemetry.JitCompiler(self.node_telemetry_dir),
            telemetry.Gc(self.node_telemetry_dir),
            telemetry.PerfStat(self.node_telemetry_dir),
            telemetry.DiskIo(self.metrics_store),
            telemetry.CpuUsage(self.metrics_store),
            telemetry.EnvironmentInfo(es, self.metrics_store),
        ]

        t = telemetry.Telemetry(enabled_devices, devices=node_telemetry)

        env = self._prepare_env(car, node_name, t)
        cmd = self.prepare_cmd(car, node_name)
        process = self._start_process(cmd, env, node_name, binary_path)
        node = cluster.Node(process, host_name, node_name, t)
        logger.info("Cluster node [%s] has successfully started. Attaching telemetry devices to node." % node_name)
        t.attach_to_node(node)
        logger.info("Telemetry devices are now attached to node [%s]." % node_name)

        return node
Пример #6
0
def local_provisioner(cfg, car, plugins, cluster_settings, all_node_ips,
                      target_root, node_id):
    distribution_version = cfg.opts("mechanic",
                                    "distribution.version",
                                    mandatory=False)
    ip = cfg.opts("provisioning", "node.ip")
    http_port = cfg.opts("provisioning", "node.http.port")
    node_name_prefix = cfg.opts("provisioning", "node.name.prefix")
    preserve = cfg.opts("mechanic", "preserve.install")

    node_name = "%s-%d" % (node_name_prefix, node_id)
    node_root_dir = "%s/%s" % (target_root, node_name)

    _, java_home = java_resolver.java_home(car, cfg)

    node_telemetry_dir = os.path.join(node_root_dir, "telemetry")
    java_major_version, java_home = java_resolver.java_home(car, cfg)
    enabled_devices = cfg.opts("mechanic", "telemetry.devices")
    telemetry_params = cfg.opts("mechanic", "telemetry.params")
    node_telemetry = [
        telemetry.FlightRecorder(telemetry_params, node_telemetry_dir,
                                 java_major_version),
        telemetry.JitCompiler(node_telemetry_dir),
        telemetry.Gc(node_telemetry_dir, java_major_version)
    ]
    t = telemetry.Telemetry(enabled_devices, devices=node_telemetry)

    es_installer = ElasticsearchInstaller(car, java_home, node_name,
                                          node_root_dir, all_node_ips, ip,
                                          http_port)
    plugin_installers = [
        PluginInstaller(plugin, java_home) for plugin in plugins
    ]

    return BareProvisioner(cluster_settings,
                           es_installer,
                           plugin_installers,
                           preserve,
                           t,
                           distribution_version=distribution_version)
Пример #7
0
    def _start_node(self, node, car, es):
        node_name = self._node_name(node)
        host_name = socket.gethostname()

        node_telemetry = [
            telemetry.FlightRecorder(self.cfg, self.metrics_store),
            telemetry.JitCompiler(self.cfg, self.metrics_store),
            telemetry.Gc(self.cfg, self.metrics_store),
            telemetry.PerfStat(self.cfg, self.metrics_store),
            telemetry.DiskIo(self.cfg, self.metrics_store),
            telemetry.CpuUsage(self.cfg, self.metrics_store),
            telemetry.EnvironmentInfo(self.cfg, es, self.metrics_store),
        ]

        t = telemetry.Telemetry(self.cfg, devices=node_telemetry)

        env = self._prepare_env(car, node_name, t)
        cmd = self.prepare_cmd(car, node_name)
        process = self._start_process(cmd, env, node_name)
        node = cluster.Node(process, host_name, node_name, t)
        t.attach_to_node(node)

        return node