summaryrefslogtreecommitdiff
path: root/ambari-metrics/ambari-metrics-host-monitoring
diff options
context:
space:
mode:
authorDmytro Sen <dsen@apache.org>2014-12-04 15:24:04 +0200
committerDmytro Sen <dsen@apache.org>2014-12-04 15:24:04 +0200
commit61687ead92f7bc638d6d5c50dd5aed047344e087 (patch)
tree609065241bed01907ed64c6be0ab63e2d510b830 /ambari-metrics/ambari-metrics-host-monitoring
parent3a8e1c5e121d5bf532271c7b123e98338f274010 (diff)
AMBARI-8528 Investigate and fix missing graphs (dsen)
Diffstat (limited to 'ambari-metrics/ambari-metrics-host-monitoring')
-rw-r--r--ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/host_info.py23
-rw-r--r--ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/metric_collector.py4
-rw-r--r--ambari-metrics/ambari-metrics-host-monitoring/src/test/python/core/TestHostInfo.py29
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):