From 3054b57f3fddfc5108a5b804e3568a46a9e70002 Mon Sep 17 00:00:00 2001 From: Bruce Flynn <brucef@ssec.wisc.edu> Date: Fri, 22 Apr 2016 18:13:43 +0000 Subject: [PATCH] Example influx insert script --- scripts/insert_influx.py | 56 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 scripts/insert_influx.py diff --git a/scripts/insert_influx.py b/scripts/insert_influx.py new file mode 100644 index 0000000..d36e146 --- /dev/null +++ b/scripts/insert_influx.py @@ -0,0 +1,56 @@ +import logging +from datetime import datetime + +import requests + +from metobs.data import wind_vector_components +from aosstower.l00.parser import read_frames + +LOG = logging.getLogger(__name__) + + +def _mktime(frame): + return int((frame['stamp'] - datetime(1970, 1, 1)).total_seconds() * 10**9) + + +def frame_records(frame): + nanos = _mktime(frame) + if 'wind_speed' in frame and 'wind_dir' in frame: + spd = frame.pop('wind_speed') + dr = frame.pop('wind_dir') + e, n, _ = wind_vector_components(spd, dr) + frame['wind_east'] = e + frame['wind_north'] = n + for name, value in frame.items(): + if name == 'stamp': + continue + valstr = '{}i'.format(value) if isinstance(value, int) else str(value) + yield '{},inst=tower,site=aoss value={} {}'.format(name, valstr, nanos) + + +def file_records(filepath): + lines = [] + for frame in read_frames(filepath): + lines += frame_records(frame) + return lines + + +def insert(filepath): + LOG.info('reading %s', filepath) + lines = file_records(filepath) + LOG.info("posting %d record from %s...", len(lines), filepath) + resp = requests.post( + 'http://bikini.ssec.wisc.edu:8086/write?db=metobs', + data='\n'.join(lines)) + resp.raise_for_status() + + +if __name__ == '__main__': + import argparse + parser = argparse.ArgumentParser() + parser.add_argument('asciifile') + args = parser.parse_args() + + logging.basicConfig(level=logging.DEBUG, format='%(asctime)s -- %(message)s') + logging.getLogger('requests').setLevel(logging.WARN) + insert(args.asciifile) -- GitLab