diff --git a/roofline_data/gather_benchmarks.sh b/roofline_data/gather_benchmarks.sh
index f3536289a49f65fca2a1b6da46b486c6da3fbc5d..2cb107eed2cbf3dfacf742b4fb08cc715d02db83 100755
--- a/roofline_data/gather_benchmarks.sh
+++ b/roofline_data/gather_benchmarks.sh
@@ -20,6 +20,7 @@ MEM_BENCHMARKS+=$(likwid-bench -a | awk -F "-" '{print $1}' | grep "stream" | aw
 current_date=$(date)
 mkdir -p ${HOSTNAME}
 SUMMARY_FILE="${HOSTNAME}/summary.txt"
+rm ${SUMMARY_FILE}
 
 module load python
 machinestate -a -o "${HOSTNAME}/machinestate_${HOSTNAME}.json"
diff --git a/roofline_data/upload_to_influx.py b/roofline_data/upload_to_influx.py
new file mode 100644
index 0000000000000000000000000000000000000000..5215cc36bb4d4d9dfce66d47eb256aaf907555a8
--- /dev/null
+++ b/roofline_data/upload_to_influx.py
@@ -0,0 +1,58 @@
+import argparse
+import cbutil as cb
+import logging
+logger = logging.getLogger(__file__)
+logging.basicConfig(level=logging.INFO)
+
+
+def data2dp(host, measurement):
+    fields = dict()
+    for typ in ["bw", "perf"]:
+        fields.update({f"{typ}_{key}": value for key, value in host[typ].items()})
+
+    return cb.DataPoint(
+        time=host["date"],
+        tags={"host": host["hostname"]},
+        fields=fields,
+        measurement=measurement,
+    )
+
+
+def parse_data(input_file, measurement):
+    data = cb.json2dict(input_file)
+    dps = [data2dp(d, measurement) for d in data.values()]
+    logger.info(dps)
+    return dps
+
+
+def main():
+    parser = argparse.ArgumentParser()
+    parser.add_argument("input_file")
+    parser.add_argument("-m", "--measurement", required=True)
+
+    parser.add_argument(
+        '-log',
+        '--loglevel',
+        default='warning',
+        help=('Provide logging level. '
+              'Example --loglevel debug, default=warning')
+    )
+
+    parser.add_argument(
+        '-d',
+        '--dryrun',
+        help='proccess but do not upload data, default=false',
+        action='store_true',
+        default=False,
+    )
+
+    args = parser.parse_args()
+    logging.basicConfig(level=args.loglevel.upper())
+    dps = parse_data(args.input_file, args.measurement)
+    if not args.dryrun:
+        up = cb.Uploader()
+        up.upload(dps)
+
+
+if __name__ == "__main__":
+    main()