Improve ceph general call
Luis Eduardo committed
Jan 26, 2018 at 14:38 UTC
52bdf07f176ae23ab255610d6edce62b0ad3e8d1
1 file changed
+11
-15
python.d/ceph.chart.py
+11
-15
@@ -177,7 +177,7 @@ class Service(SimpleService):
177
osd_df = self._get_osd_df()
178
osd_perf = self._get_osd_perf()
179
pool_stats = self._get_osd_pool_stats()
180
- data.update(self._get_general(df, osd_perf, pool_stats))
180
+ data.update(self._get_general(osd_perf, pool_stats))
181
for pool in df['pools']:
182
data.update(self._get_pool_usage(pool))
183
data.update(self._get_pool_objects(pool))
@@ -185,18 +185,19 @@ class Service(SimpleService):
185
data.update(self._get_pool_rw(pool_io))
186
for osd in osd_df['nodes']:
187
data.update(self._get_osd_usage(osd))
188
- data.update(self._get_osd_latency())
188
+ for osd_apply_commit in osd_perf['osd_perf_infos']:
189
+ data.update(self._get_osd_latency(osd_apply_commit))
190
return data
191
except (ValueError, AttributeError) as error:
192
self.error(error)
193
return None
194
194
- def _get_general(self, df, osd_perf, pool_stats):
195
+ def _get_general(self, osd_perf, pool_stats):
196
"""
197
Get ceph's general usage
198
:return: dict
199
"""
199
- general_objects = 0
200
+ status = self.cluster.get_cluster_stats()
201
read_bytes_sec = 0
202
write_bytes_sec = 0
203
read_op_per_sec = 0
@@ -204,8 +205,6 @@ class Service(SimpleService):
205
apply_latency = 0
206
commit_latency = 0
207
207
- for pool in df['pools']:
208
- general_objects = general_objects + pool['stats']['objects']
208
for pool_rw_io_b in pool_stats:
209
read_bytes_sec = read_bytes_sec + pool_rw_io_b['client_io_rate'].get('read_bytes_sec', 0)
210
write_bytes_sec = write_bytes_sec + pool_rw_io_b['client_io_rate'].get('write_bytes_sec', 0)
@@ -215,9 +214,9 @@ class Service(SimpleService):
214
apply_latency = apply_latency + perf['perf_stats']['apply_latency_ms']
215
commit_latency = commit_latency + perf['perf_stats']['commit_latency_ms']
216
218
- return {'general_usage': df['stats']['total_used_bytes'],
219
- 'general_available': df['stats']['total_avail_bytes'],
220
- 'general_objects': general_objects,
217
+ return {'general_usage': int(status['kb_used']),
218
+ 'general_available': int(status['kb_avail']),
219
+ 'general_objects': int(status['num_objects']),
220
'general_read_bytes': read_bytes_sec,
221
'general_write_bytes': write_bytes_sec,
222
'general_read_operations': read_op_per_sec,
@@ -258,16 +257,13 @@ class Service(SimpleService):
257
"""
258
return {osd['name']: float(osd['kb_used'])}
259
261
- def _get_osd_latency(self):
260
+ def _get_osd_latency(self, osd):
261
"""
262
Get ceph osd apply and commit latency
263
:return: A osd dict with osd name's key with both apply and commit latency values
264
"""
266
- osd_latency = {}
267
- for osd in self._get_osd_perf()['osd_perf_infos']:
268
- osd_latency.update({'apply_latency_osd.{0}'.format(osd['id']): osd['perf_stats']['apply_latency_ms'],
269
- 'commit_latency_osd.{0}'.format(osd['id']): osd['perf_stats']['commit_latency_ms']})
270
- return osd_latency
265
+ return {'apply_latency_osd.{0}'.format(osd['id']): osd['perf_stats']['apply_latency_ms'],
266
+ 'commit_latency_osd.{0}'.format(osd['id']): osd['perf_stats']['commit_latency_ms']}
267
268
def _get_df(self):
269
"""