diff --git a/sensors/host1_config.json b/sensors/host1_config.json
index 7e81125..450db06 100644
--- a/sensors/host1_config.json
+++ b/sensors/host1_config.json
@@ -4,5 +4,10 @@
 	},
 	"net-io": {
 		"allowed_prefixes": ["eth0"]
-	}
-}
\ No newline at end of file
+	},
+    "system-cpu": {
+        "allowed_prefixes": ["cpu"]
+    },
+    "system-ram": {
+    }
+}
diff --git a/sensors/main.py b/sensors/main.py
index 07a1dce..6263a9a 100644
--- a/sensors/main.py
+++ b/sensors/main.py
@@ -8,6 +8,7 @@
 
 import io_sensors
 import net_sensors
+import syscpu_sensors
 
 from utils import SensorInfo
 from daemonize import Daemonize
diff --git a/sensors/syscpu_sensors.py b/sensors/syscpu_sensors.py
new file mode 100644
index 0000000..e2f53b7
--- /dev/null
+++ b/sensors/syscpu_sensors.py
@@ -0,0 +1,67 @@
+import time
+
+from discover import provides
+from utils import SensorInfo, is_dev_accepted
+
+# 0 - cpu name
+# 1 - user: normal processes executing in user mode
+# 2 - nice: niced processes executing in user mode
+# 3 - system: processes executing in kernel mode
+# 4 - idle: twiddling thumbs
+# 5 - iowait: waiting for I/O to complete
+# 6 - irq: servicing interrupts
+# 7 - softirq: servicing softirqs
+
+io_values_pos = [
+    (1, 'user_processes', False),
+    (2, 'nice_processes', False),
+    (3, 'system_processes', False),
+    (4, 'idle_time', True),
+]
+
+
+@provides("system-cpu")
+def syscpu_stat(disallowed_prefixes=('intr', 'ctxt', 'btime', 'processes',
+                                 'procs_running', 'procs_blocked', 'softirq'),
+            allowed_prefixes=None):
+    results = {}
+    usage_sum = {}
+    usage_with_idle = {}
+    for line in open('/proc/stat'):
+        vals = line.split()
+        dev_name = vals[0]
+
+        dev_ok = is_dev_accepted(dev_name,
+                                 disallowed_prefixes,
+                                 allowed_prefixes)
+
+        if dev_ok:
+            usage_sum[dev_name] = float(int(vals[1]) + int(vals[2]) + int(vals[3]))
+            usage_with_idle[dev_name] = usage_sum[dev_name] + int(vals[4])
+    # wait for average CPU utilization calc
+    time.sleep(1)
+
+    for line in open('/proc/stat'):
+        vals = line.split()
+        dev_name = vals[0]
+
+        dev_ok = is_dev_accepted(dev_name,
+                                 disallowed_prefixes,
+                                 allowed_prefixes)
+
+        if dev_ok:
+            for pos, name, accum_val in io_values_pos:
+                sensor_name = "{0}.{1}".format(dev_name, name)
+                results[sensor_name] = SensorInfo(int(vals[pos]), accum_val)
+            # utilization calc
+            sensor_name = "{0}.{1}".format(dev_name, "usage_percent")
+
+            usage_sum_last = float(int(vals[1]) + int(vals[2]) + int(vals[3]))
+            usage_with_idle_last = usage_sum_last + int(vals[4])
+            proc = usage_sum_last - usage_sum[dev_name]
+            idle = usage_with_idle_last - usage_with_idle[dev_name]
+            usage = proc / idle
+
+            results[sensor_name] = SensorInfo(usage*100, False)
+    return results
+
