diff options
4 files changed, 60 insertions, 2 deletions
diff --git a/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/host_info.py b/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/host_info.py index 6d47485187..5bc4afbdb1 100644 --- a/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/host_info.py +++ b/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/host_info.py @@ -58,6 +58,29 @@ class HostInfo(): } pass + def get_process_info(self): + """ + Return processes statistics at current time + """ + + STATUS_RUNNING = "running" + + proc_stats = psutil.process_iter() + + proc_run = 0 + proc_total = 0 + for proc in proc_stats: + proc_total += 1 + if STATUS_RUNNING == proc.status(): + proc_run += 1 + pass + + return { + 'proc_run': proc_run, + 'proc_total': proc_total + } + pass + def get_mem_info(self): """ Return memory statistics at current time diff --git a/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/metric_collector.py b/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/metric_collector.py index 8b82e20840..05e94be611 100644 --- a/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/metric_collector.py +++ b/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/metric_collector.py @@ -65,12 +65,16 @@ class MetricsCollector(): elif 'mem' in event.get_group_name(): metrics = self.host_info.get_mem_info() + elif 'process' in event.get_group_name(): + metrics = self.host_info.get_process_info() + elif 'all' in event.get_group_name(): metrics = {} metrics.update(self.host_info.get_cpu_times()) metrics.update(self.host_info.get_combined_disk_usage()) metrics.update(self.host_info.get_network_info()) metrics.update(self.host_info.get_mem_info()) + metrics.update(self.host_info.get_process_info()) else: logger.warn('Unknown metric group.') diff --git a/ambari-metrics/ambari-metrics-host-monitoring/src/test/python/core/TestHostInfo.py b/ambari-metrics/ambari-metrics-host-monitoring/src/test/python/core/TestHostInfo.py index e1baabf280..757edbe8b2 100644 --- a/ambari-metrics/ambari-metrics-host-monitoring/src/test/python/core/TestHostInfo.py +++ b/ambari-metrics/ambari-metrics-host-monitoring/src/test/python/core/TestHostInfo.py @@ -82,6 +82,35 @@ class TestHostInfo(TestCase): self.assertEqual(cpu['mem_cached'], 'cached') self.assertEqual(cpu['swap_free'], 'free') + + @patch("psutil.process_iter") + def testProcessInfo(self, process_iter_mock): + + def side_effect_running(): + return 'running' + + class Proc: + def status(self): + return 'some_status' + + p1 = Proc() + p1.status = side_effect_running + p2 = Proc() + p2.status = side_effect_running + p3 = Proc() + p4 = Proc() + + processes = [p1, p2, p3, p4] + + process_iter_mock.return_value = processes + + hostinfo = HostInfo() + + procs = hostinfo.get_process_info() + + self.assertEqual(procs['proc_run'], 2) + self.assertEqual(procs['proc_total'], len(processes)) + @patch("psutil.disk_usage") @patch("psutil.disk_partitions") def testCombinedDiskUsage(self, dp_mock, du_mock): diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixTransactSQL.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixTransactSQL.java index 0d53f5fb8e..aef71e19a0 100644 --- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixTransactSQL.java +++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixTransactSQL.java @@ -297,8 +297,10 @@ public class PhoenixTransactSQL { } LOG.debug("SQL => " + sb.toString() + ", condition => " + condition); - PreparedStatement stmt = connection.prepareStatement(sb.toString()); - int pos = 1; + String query = String.format(sb.toString(), + PhoenixTransactSQL.getNaiveTimeRangeHint(condition.getStartTime(), + NATIVE_TIME_RANGE_DELTA)); + PreparedStatement stmt = connection.prepareStatement(query); int pos = 1; if (condition.getMetricNames() != null) { for (; pos <= condition.getMetricNames().size(); pos++) { stmt.setString(pos, condition.getMetricNames().get(pos - 1)); |