@cryptotaxi247 / netdata-1 / commits / 385648109

Add read/write pool IO operations chart

lets00 committed Jan 12, 2018 at 16:15 UTC 385648109983e5e818e32a0f5b7e1e6be56e20b6
2 files changed +37 -3
python.d/ceph.chart.py
+28 -1
@@ -16,7 +16,7 @@ update_every = 10
16 priority = 60000
17 retries = 60
18
19 -ORDER = ['general', 'pool_usage', 'pool_objects', 'osd_usage']
19 +ORDER = ['general', 'pool_usage', 'pool_objects', 'pool_write_iops', 'pool_read_iops', 'osd_usage']
20
21 CHARTS = {
22 'general': {
@@ -34,6 +34,14 @@ CHARTS = {
34 'options': [None, 'Ceph Pools', 'objects', 'pool', 'ceph.pool_objects', 'line'],
35 'lines': []
36 },
37 + 'pool_write_iops': {
38 + 'options': [None, 'Ceph Write Pool IOPS', 'KB', 'pool', 'ceph.pool_wio', 'line'],
39 + 'lines': []
40 + },
41 + 'pool_read_iops': {
42 + 'options': [None, 'Ceph Read Pool IOPS', 'KB', 'pool', 'ceph.pool_rio', 'line'],
43 + 'lines': []
44 + },
45 'osd_usage': {
46 'options': [None, 'Ceph OSDs', 'KB', 'osd', 'ceph.osd_usage', 'line'],
47 'lines': []
@@ -83,6 +91,13 @@ class Service(SimpleService):
91 self.definitions['pool_objects']['lines'].append(["obj_{0}".format(pool['name']),
92 pool['name'],
93 'absolute'])
94 + self.definitions['pool_write_iops']['lines'].append(['write_{0}'.format(pool['name']),
95 + pool['name'],
96 + 'incremental'])
97 + self.definitions['pool_read_iops']['lines'].append(['read_{0}'.format(pool['name']),
98 + pool['name'],
99 + 'incremental'])
100 +
101 for osd in sorted(self._get_osd_df()['nodes']):
102 self.definitions['osd_usage']['lines'].append([osd['name'],
103 osd['name'],
@@ -99,6 +114,7 @@ class Service(SimpleService):
114 for pool in self._get_df()['pools']:
115 data.update(self._get_pool_usage(pool))
116 data.update(self._get_pool_objects(pool))
117 + data.update(self._get_pool_rw_io(pool))
118 for osd in self._get_osd_df()['nodes']:
119 data.update(self._get_osd_usage(osd))
120 return data
@@ -130,6 +146,17 @@ class Service(SimpleService):
146 """
147 return {'obj_{0}'.format(pool['name']): pool['stats']['objects']}
148
149 + def _get_pool_rw_io(self, pool):
150 + """
151 + Get read/write kb operations in a pool
152 + :return: dict
153 + """
154 + ioctx = self.cluster.open_ioctx(pool['name'])
155 + pool_status = ioctx.get_stats()
156 + ioctx.close()
157 + return {'read_{0}'.format(pool['name']): pool_status['num_rd_kb'],
158 + 'write_{0}'.format(pool['name']): pool_status['num_wr_kb']}
159 +
160 def _get_osd_usage(self, osd):
161 """
162 Process raw data into osd dict information to get osd usage
web/dashboard_info.js
+9 -2
@@ -1330,9 +1330,16 @@ netdataDashboard.context = {
1330 info: 'Shows info about number of objects presents on a pool.'
1331 },
1332
1333 + 'ceph.pool_wio': {
1334 + info: 'Shows info about write operations on a pool.'
1335 + },
1336 +
1337 + 'ceph.pool_rio': {
1338 + info: 'Shows info about read operations on a pool.'
1339 + },
1340 'ceph.osd_usage': {
1334 - info: 'Shows info about osd usage'
1335 - },
1341 + info: 'Shows info about osd usage.'
1342 + },
1343
1344 // ------------------------------------------------------------------------
1345 // web_log