def get_raw_data(args): # find raw points in database client = InfluxDBClient.from_DSN(args.influx_dsn) # get series to query check_series = {} for list_spec in data_spec: series = InfluxResult08.query(client, "list series %s" % list_spec) check_series[list_spec] = [] for s in series: check_series[list_spec].extend(s.fields.values()) # query the series and record the results according to the data spec # and command line arguments data_points = {} for list_spec in check_series: for series in check_series[list_spec]: query = """SELECT mean("%s") AS "used", mean("%s") AS "capacity" FROM %s WHERE time > now() - %sd GROUP BY time(%sd) ORDER ASC""" % \ (data_spec[list_spec]['used'], data_spec[list_spec]['capacity'], series, args.range, args.interval) res = InfluxResult08.query(client, query) for ts in res: ts.tags['bytes_factor'] = data_spec[list_spec]['bytes_factor'] data_points[series] = res return data_points
def find_first_point(dsn, search, interval=None): """Connect to an InfluxDB instance and find the first point in each series optionally within the given intervala Arguments: dsn: an InflxDBClient DSN, for example: influxdb://username:password@localhost:8086/database search: series name or regex to search against interval: length of history to search Return: A list of InfluxResult objects representing the points """ client = InfluxDBClient.from_DSN(dsn) if interval is not None: where = "WHERE time > now() - %s" % (interval) else: where = "" query = "SELECT * FROM %s %s LIMIT 1 ORDER ASC" % \ (search, where) query_res = client.query(query) result_objs = InfluxResult08.from_query(query_res) return result_objs