diff options
author | Dmytro Sen <dsen@apache.org> | 2014-12-04 15:24:04 +0200 |
---|---|---|
committer | Dmytro Sen <dsen@apache.org> | 2014-12-04 15:24:04 +0200 |
commit | 61687ead92f7bc638d6d5c50dd5aed047344e087 (patch) | |
tree | 609065241bed01907ed64c6be0ab63e2d510b830 /ambari-metrics/ambari-metrics-host-monitoring | |
parent | 3a8e1c5e121d5bf532271c7b123e98338f274010 (diff) |
AMBARI-8528 Investigate and fix missing graphs (dsen)
Diffstat (limited to 'ambari-metrics/ambari-metrics-host-monitoring')
3 files changed, 56 insertions, 0 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): |