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