def _on_stats_callback(self, data): results = {} datapoints = {} for result in data.get('results', []): for series in result.get('series', []): # Get machine_id in order to groub results by it. cpu = series.get('tags', {}).get('cpu') if not cpu: log.error('%s: no cpu', self.__class__.__name__) continue machine_id = series.get('tags', {}).get('machine_id') if not machine_id: log.error('%s: no machine_id', self.__class__.__name__) continue # Get datapoints. if not datapoints.get(machine_id): datapoints[machine_id] = {} for value in series.get('values', []): if value[1]: timestamp = iso_to_seconds(value[0]) if not datapoints[machine_id].get(timestamp): datapoints[machine_id][timestamp] = set() datapoints[machine_id][timestamp].add(cpu) for machine_id, points in datapoints.items(): if not results.get(machine_id): results[machine_id] = {'datapoints': []} for timestamp, cpus in points.items(): results[machine_id]['datapoints'].append(((len(cpus), int(timestamp)))) return results
def _on_stats_callback(self, data): """Process series returned by InfluxDB.""" results = {} for result in data.get('results', []): if result.get('error'): raise BadRequestError(result['error']) for series in result.get('series', []): # Get series name and columns. measurement = series.get('name', self.measurement) columns = series.get('columns', []) # Get tags, if exist. tags = '.'.join([ '%s=%s' % (key, val) for key, val in series.get('tags', {}).items() ]) for value in series.get('values', []): timestamp = iso_to_seconds(value[0]) for index, point in enumerate(value): if index == 0: # Skip the "time" column. continue if isinstance(point, string_types): # Skip tags. continue name = measurement.upper() column = columns[index] if tags: id = '%s.%s.%s' % (measurement, tags, column) name += ' %s' % ' '.join( list(series['tags'].values())) else: id = '%s.%s' % (measurement, column) name += ' %s' % column.replace('_', ' ') if id not in results: results[id] = { 'name': name, 'column': column, 'measurement': measurement, 'datapoints': [], 'max_value': None, 'min_value': None, 'priority': 0, 'unit': '', } results[id]['datapoints'].append(((point, timestamp))) return results
def _on_stats_callback(self, data): results = {} for result in data.get('results', []): for series in result.get('series', []): # Get series name and columns. measurement = series.get('name', self.measurement) columns = series.get('columns', []) # Get machine_id in order to groub results by it. machine_id = series.get('tags', {}).get('machine_id') if not machine_id: log.error('%s: no machine_id', self.__class__.__name__) continue # Get datapoints. for value in series.get('values', []): timestamp = iso_to_seconds(value[0]) for index, point in enumerate(value): if index == 0: continue column = columns[index] name = measurement.upper() name += ' %s' % column.replace('_', ' ') if machine_id not in results: results[machine_id] = { 'id': '%s.%s' % (measurement, column), 'name': machine_id, 'column': column, 'measurement': measurement, 'datapoints': [], 'max_value': None, 'min_value': None, 'priority': 0, 'unit': '', } results[machine_id]['datapoints'].append(( (point, int(timestamp)))) return results