@cryptotaxi247 / netdata-1 / commits / 0707208c1

mongodb_plugin: take "arbiter" replica set member into account

Ilya committed Mar 21, 2017 at 16:28 UTC 0707208c1797d51cc9f650c83857742e18b3e4fb
1 file changed +10 -5
python.d/mongodb.chart.py
+10 -5
@@ -391,13 +391,18 @@ class Service(SimpleService):
391 self.build_metrics_to_collect_(server_status)
392
393 try:
394 - self._get_data()
394 + data = self._get_data()
395 except (LookupError, SyntaxError, AttributeError):
396 self.error('Type: %s, error: %s' % (str(exc_info()[0]), str(exc_info()[1])))
397 return False
398 else:
399 - self.create_charts_(server_status)
400 - return True
399 + if isinstance(data, dict) and data:
400 + self._data_from_check = data
401 + self.create_charts_(server_status)
402 + return True
403 + else:
404 + self.error('_get_data() returned no data or type is not <dict>')
405 + return False
406
407 def build_metrics_to_collect_(self, server_status):
408
@@ -473,7 +478,7 @@ class Service(SimpleService):
478 lines.append([dim_id, description, 'absolute', 1, 1])
479 return lines
480
476 - all_hosts = server_status['repl']['hosts']
481 + all_hosts = server_status['repl']['hosts'] + server_status['repl'].get('arbiters', list())
482 this_host = server_status['repl']['me']
483 other_hosts = [host for host in all_hosts if host != this_host]
484
@@ -620,7 +625,7 @@ class Service(SimpleService):
625 if not member.get('self'):
626 other_hosts.append(member)
627 # Replica set time diff between current time and time when last entry from the oplog was applied
623 - if member['optimeDate'] != unix_epoch:
628 + if member.get('optimeDate', unix_epoch) != unix_epoch:
629 member_optimedate = member['name'] + '_optimedate'
630 to_netdata.update({member_optimedate: int(delta_calculation(delta=utc_now - member['optimeDate'],
631 multiplier=1000))})