@cryptotaxi247 / netdata-1 / commits / ebe6af921

python.d/ceph: fix get_osd_perf() for 14.2+ (#8248)

* ceph:fix get_osd_perf() for 14.2+ * ceph: fix get_osd_perf() for 14.2+ v2

Austin S. Hemmelgarn committed Mar 4, 2020 at 13:11 UTC ebe6af9215e3f849139b1a439e0927f6a2824ba4
1 file changed +14 -4
collectors/python.d.plugin/ceph/ceph.chart.py
+14 -4
@@ -206,8 +206,10 @@ class Service(SimpleService):
206 df = self._get_df()
207 osd_df = self._get_osd_df()
208 osd_perf = self._get_osd_perf()
209 + osd_perf_infos = get_osd_perf_infos(osd_perf)
210 pool_stats = self._get_osd_pool_stats()
210 - data.update(self._get_general(osd_perf, pool_stats))
211 +
212 + data.update(self._get_general(osd_perf_infos, pool_stats))
213 for pool in df['pools']:
214 data.update(self._get_pool_usage(pool))
215 data.update(self._get_pool_objects(pool))
@@ -215,14 +217,14 @@ class Service(SimpleService):
217 data.update(self._get_pool_rw(pool_io))
218 for osd in osd_df['nodes']:
219 data.update(self._get_osd_usage(osd))
218 - for osd_apply_commit in osd_perf['osd_perf_infos']:
220 + for osd_apply_commit in osd_perf_infos:
221 data.update(self._get_osd_latency(osd_apply_commit))
222 return data
223 except (ValueError, AttributeError) as error:
224 self.error(error)
225 return None
226
225 - def _get_general(self, osd_perf, pool_stats):
227 + def _get_general(self, osd_perf_infos, pool_stats):
228 """
229 Get ceph's general usage
230 :return: dict
@@ -240,7 +242,7 @@ class Service(SimpleService):
242 write_bytes_sec += pool_rw_io_b['client_io_rate'].get('write_bytes_sec', 0)
243 read_op_per_sec += pool_rw_io_b['client_io_rate'].get('read_op_per_sec', 0)
244 write_op_per_sec += pool_rw_io_b['client_io_rate'].get('write_op_per_sec', 0)
243 - for perf in osd_perf['osd_perf_infos']:
245 + for perf in osd_perf_infos:
246 apply_latency += perf['perf_stats']['apply_latency_ms']
247 commit_latency += perf['perf_stats']['commit_latency_ms']
248
@@ -345,3 +347,11 @@ class Service(SimpleService):
347 'prefix': 'osd pool stats',
348 'format': 'json'
349 }), '')[1].decode('utf-8'))
350 +
351 +
352 +def get_osd_perf_infos(osd_perf):
353 + # https://github.com/netdata/netdata/issues/8247
354 + # module uses 'osd_perf_infos' data, its been moved under 'osdstats` since Ceph v14.2
355 + if 'osd_perf_infos' in osd_perf:
356 + return osd_perf['osd_perf_infos']
357 + return osd_perf['osdstats']['osd_perf_infos']