@cryptotaxi247 / netdata-1 / commits / eae6659e8

postgres.chart.py: Fix superuser bug.

Resolve issue raised in #2520 that led to non superuser instances attempting to execute queries that require superuser privs.

Facetoe committed Jul 30, 2017 at 23:47 UTC eae6659e8a5e585a6f7f9a41c1b82ed963e4a287
1 file changed +6 -16
python.d/postgres.chart.py
+6 -16
@@ -244,10 +244,10 @@ class Service(SimpleService):
244 self.database_poll = configuration.pop('database_poll', None)
245 self.configuration = configuration
246 self.connection = False
247 - self.is_superuser = False
247 self.data = dict()
248 self.locks_zeroed = dict()
249 self.databases = list()
250 + self.queries = QUERY_STATS.copy()
251
252 def _connect(self):
253 params = dict(user='postgres',
@@ -294,12 +294,12 @@ class Service(SimpleService):
294
295 def add_additional_queries_(self, is_superuser):
296 if self.index_stats:
297 - QUERY_STATS[QUERIES['INDEX_STATS']] = METRICS['INDEX_STATS']
297 + self.queries[QUERIES['INDEX_STATS']] = METRICS['INDEX_STATS']
298 if self.table_stats:
299 - QUERY_STATS[QUERIES['TABLE_STATS']] = METRICS['TABLE_STATS']
299 + self.queries[QUERIES['TABLE_STATS']] = METRICS['TABLE_STATS']
300 if is_superuser:
301 - QUERY_STATS[QUERIES['BGWRITER']] = METRICS['BGWRITER']
302 - QUERY_STATS[QUERIES['ARCHIVE']] = METRICS['ARCHIVE']
301 + self.queries[QUERIES['BGWRITER']] = METRICS['BGWRITER']
302 + self.queries[QUERIES['ARCHIVE']] = METRICS['ARCHIVE']
303
304 def create_dynamic_charts_(self):
305
@@ -318,7 +318,7 @@ class Service(SimpleService):
318 cursor = self.connection.cursor(cursor_factory=DictCursor)
319 try:
320 self.data.update(self.locks_zeroed)
321 - for query, metrics in QUERY_STATS.items():
321 + for query, metrics in self.queries.items():
322 self.query_stats_(cursor, query, metrics)
323
324 except OperationalError:
@@ -398,13 +398,3 @@ def add_database_stat_chart_(order, definitions, name, database_name):
398 definitions[chart_name] = {
399 'options': [name, title + ': ' + database_name, units, 'db ' + database_name, context, chart_type],
400 'lines': create_lines(database_name, chart_template['lines'])}
401 -
402 -
403 -#
404 -# def add_replication_stats(self, cursor):
405 -# cursor.execute(REPLICATION)
406 -# temp = cursor.fetchall()
407 -# for row in temp:
408 -# self.add_gauge_value('Replication/%s' % row.get('client_addr', 'Unknown'),
409 -# 'byte_lag',
410 -# int(row.get('byte_lag', 0)))