]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
prometheus: Handle the TIME perf counter type metrics 21749/head
authorBoris Ranto <branto@redhat.com>
Mon, 30 Apr 2018 23:12:02 +0000 (01:12 +0200)
committerBoris Ranto <branto@redhat.com>
Mon, 30 Apr 2018 23:20:44 +0000 (01:20 +0200)
This patch correctly sets the PERFCOUNTER_MASK to 3 so that the
PERFCOUNTER_TIME metrics are not ignored by the mgr_module code. It also
converts the TIME metrics from nanoseconds to seconds just like the ceph
perf dump does and exposes the metrics via prometheus module.

Signed-off-by: Boris Ranto <branto@redhat.com>
src/pybind/mgr/mgr_module.py
src/pybind/mgr/prometheus/module.py

index b51952ebd18e08b5220284e7a44020c5176476dc..ea79771fbabe64f5dd2f79492598f1809f4c46f8 100644 (file)
@@ -229,7 +229,7 @@ class MgrModule(ceph_module.BaseMgrModule):
     PERFCOUNTER_LONGRUNAVG = 4
     PERFCOUNTER_COUNTER = 8
     PERFCOUNTER_HISTOGRAM = 0x10
-    PERFCOUNTER_TYPE_MASK = ~2
+    PERFCOUNTER_TYPE_MASK = ~3
 
     # units supported
     BYTES = 0
@@ -337,6 +337,13 @@ class MgrModule(ceph_module.BaseMgrModule):
         
         return ''
 
+    def _perfvalue_to_value(self, stattype, value):
+        if stattype & self.PERFCOUNTER_TIME:
+            # Convert from ns to seconds
+            return value / 1000000000.0
+        else:
+            return value
+
     def _unit_to_str(self, unit):
         if unit == self.NONE:
             return "/s"
index c7daa128dd8af16fee1ae408895653f2684d8d18..dea9b5971788088c0368fcda6c680fdc556c40fe 100644 (file)
@@ -554,7 +554,8 @@ class Module(MgrModule):
                         ("ceph_daemon",),
                     ))
 
-                self.metrics.append(path, counter_info['value'], (daemon,))
+                value = self._perfvalue_to_value(counter_info['type'], counter_info['value'])
+                self.metrics.append(path, value, (daemon,))
         # It is sufficient to reset the pending metrics once per scrape
         self.metrics.reset()