@cryptotaxi247 / netdata-1 / commits / a874b2ef9

mongo plugin: fix "locks_oplog" chart dimension ids

Ilya committed Jul 13, 2017 at 16:00 UTC a874b2ef9fbd18f901f691fc9ce19eb2ca67b133
1 file changed +25 -31
python.d/mongodb.chart.py
+25 -31
@@ -19,7 +19,7 @@ except ImportError:
19 priority = 60000
20 retries = 60
21
22 -REPLSET_STATES = [
22 +REPL_SET_STATES = [
23 ('1', 'primary'),
24 ('8', 'down'),
25 ('2', 'secondary'),
@@ -358,8 +358,8 @@ CHARTS = {
358 'options': [None, 'Lock on the oplog. Number of times the lock was acquired in the specified mode',
359 'locks', 'locks metrics', 'mongodb.locks_oplog', 'stacked'],
360 'lines': [
361 - ['Metadata_r', 'intent_shared', 'incremental'],
362 - ['Metadata_w', 'intent_exclusive', 'incremental']
361 + ['oplog_r', 'intent_shared', 'incremental'],
362 + ['oplog_w', 'intent_exclusive', 'incremental']
363 ]}
364 }
365
@@ -395,14 +395,12 @@ class Service(SimpleService):
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 - 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
398 + if isinstance(data, dict) and data:
399 + self._data_from_check = data
400 + self.create_charts_(server_status)
401 + return True
402 + self.error('_get_data() returned no data or type is not <dict>')
403 + return False
404
405 def build_metrics_to_collect_(self, server_status):
406
@@ -508,19 +506,19 @@ class Service(SimpleService):
506 self.definitions[chart_name] = {
507 'options': [None, 'Replica set member (%s) current state' % host, 'state',
508 'replication and oplog', 'mongodb.replication_state', 'line'],
511 - 'lines': create_state_lines(REPLSET_STATES)}
509 + 'lines': create_state_lines(REPL_SET_STATES)}
510
511 def _get_raw_data(self):
512 raw_data = dict()
513
516 - raw_data.update(self.get_serverstatus_() or dict())
517 - raw_data.update(self.get_dbstats_() or dict())
518 - raw_data.update(self.get_replsetgetstatus_() or dict())
519 - raw_data.update(self.get_getreplicationinfo_() or dict())
514 + raw_data.update(self.get_server_status() or dict())
515 + raw_data.update(self.get_db_stats() or dict())
516 + raw_data.update(self.get_repl_set_get_status() or dict())
517 + raw_data.update(self.get_get_replication_info() or dict())
518
519 return raw_data or None
520
523 - def get_serverstatus_(self):
521 + def get_server_status(self):
522 raw_data = dict()
523 try:
524 raw_data['serverStatus'] = self.connection.admin.command('serverStatus')
@@ -529,7 +527,7 @@ class Service(SimpleService):
527 else:
528 return raw_data
529
532 - def get_dbstats_(self):
530 + def get_db_stats(self):
531 if not self.databases:
532 return None
533
@@ -538,24 +536,22 @@ class Service(SimpleService):
536 try:
537 for dbase in self.databases:
538 raw_data['dbStats'][dbase] = self.connection[dbase].command('dbStats')
539 + return raw_data
540 except PyMongoError:
541 return None
543 - else:
544 - return raw_data
542
546 - def get_replsetgetstatus_(self):
543 + def get_repl_set_get_status(self):
544 if not self.do_replica:
545 return None
546
547 raw_data = dict()
548 try:
549 raw_data['replSetGetStatus'] = self.connection.admin.command('replSetGetStatus')
550 + return raw_data
551 except PyMongoError:
552 return None
555 - else:
556 - return raw_data
553
558 - def get_getreplicationinfo_(self):
554 + def get_get_replication_info(self):
555 if not (self.do_replica and 'local' in self.databases):
556 return None
557
@@ -566,10 +562,9 @@ class Service(SimpleService):
562 "$natural", ASCENDING).limit(1)[0]
563 raw_data['getReplicationInfo']['DESCENDING'] = self.connection.local.oplog.rs.find().sort(
564 "$natural", DESCENDING).limit(1)[0]
565 + return raw_data
566 except PyMongoError:
567 return None
571 - else:
572 - return raw_data
568
569 def _get_data(self):
570 """
@@ -588,7 +583,7 @@ class Service(SimpleService):
583 utc_now = datetime.utcnow()
584
585 # serverStatus
591 - for metric, new_name, function in self.metrics_to_collect:
586 + for metric, new_name, func in self.metrics_to_collect:
587 value = serverStatus
588 for key in metric.split('.'):
589 try:
@@ -597,7 +592,7 @@ class Service(SimpleService):
592 break
593
594 if not isinstance(value, dict) and key:
600 - to_netdata[new_name or key] = value if not function else function(value)
595 + to_netdata[new_name or key] = value if not func else func(value)
596
597 to_netdata['nonmapped'] = to_netdata['virtual'] - serverStatus['mem'].get('mappedWithJournal',
598 to_netdata['mapped'])
@@ -631,7 +626,7 @@ class Service(SimpleService):
626 multiplier=1000))})
627 # Replica set members state
628 member_state = member['name'] + '_state'
634 - for elem in REPLSET_STATES:
629 + for elem in REPL_SET_STATES:
630 state = elem[0]
631 to_netdata.update({'_'.join([member_state, state]): 0})
632 to_netdata.update({'_'.join([member_state, str(member['state'])]): member['state']})
@@ -673,5 +668,4 @@ class Service(SimpleService):
668 def delta_calculation(delta, multiplier=1):
669 if hasattr(delta, 'total_seconds'):
670 return delta.total_seconds() * multiplier
676 - else:
677 - return (delta.microseconds + (delta.seconds + delta.days * 24 * 3600) * 10 ** 6) / 10.0 ** 6 * multiplier
671 + return (delta.microseconds + (delta.seconds + delta.days * 24 * 3600) * 10 ** 6) / 10.0 ** 6 * multiplier