sysmon: Count gs_offloader processes

Add metric to track recovery of linked bug.

BUG=chromium:853842
TEST=Unittests

Change-Id: Iead85fd91a3acddd4b140cd92cbeb5ac36001fed
Reviewed-on: https://chromium-review.googlesource.com/1117701
Commit-Ready: Allen Li <ayatane@chromium.org>
Tested-by: Allen Li <ayatane@chromium.org>
Reviewed-by: Richard Barnette <jrbarnette@google.com>
diff --git a/scripts/sysmon/proc_metrics.py b/scripts/sysmon/proc_metrics.py
index 84f8bdf..fde8909 100644
--- a/scripts/sysmon/proc_metrics.py
+++ b/scripts/sysmon/proc_metrics.py
@@ -35,11 +35,12 @@
 
   def __init__(self):
     self._metrics = [
+        _ProcessMetric('apache',
+                       test_func=partial(_is_process_name, 'apache2')),
         _ProcessMetric('autoserv',
                        test_func=_is_parent_autoserv),
-        _ProcessMetric('sysmon',
-                       test_func=partial(_is_python_module,
-                                         'chromite.scripts.sysmon')),
+        _ProcessMetric('gs_offloader',
+                       test_func=_is_gs_offloader),
         _ProcessMetric('job_aborter',
                        test_func=partial(_is_python_module,
                                          'lucifer.cmd.job_aborter')),
@@ -48,12 +49,13 @@
                                          'lucifer.cmd.job_reporter')),
         _ProcessMetric('lucifer_run_job',
                        test_func=partial(_is_process_name, 'lucifer_run_job')),
-        _ProcessMetric('apache',
-                       test_func=partial(_is_process_name, 'apache2')),
         _ProcessMetric('lxc-start',
                        test_func=partial(_is_process_name, 'lxc-start')),
         _ProcessMetric('lxc-attach',
                        test_func=partial(_is_process_name, 'lxc-attach')),
+        _ProcessMetric('sysmon',
+                       test_func=partial(_is_python_module,
+                                         'chromite.scripts.sysmon')),
     ]
     self._other_metric = _ProcessMetric('other')
 
@@ -126,6 +128,14 @@
   return _is_process_name('autoserv', proc)
 
 
+def _is_gs_offloader(proc):
+  """Return whether proc is a gs_offloader process."""
+  cmdline = proc.cmdline()
+  return (len(cmdline) >= 2
+          and cmdline[0].endswith('python')
+          and cmdline[1].endswith('gs_offloader.py'))
+
+
 def _is_python_module(module, proc):
   """Return whether proc is a process running a Python module."""
   cmdline = proc.cmdline()