Commit f709c0fa authored by Rousseau Vincent's avatar Rousseau Vincent
Browse files

Add influx to csv

parent 3a19e05a
No related merge requests found
Showing with 74 additions and 2 deletions
+74 -2
version: '3'
volumes:
persitent-storage:
influxdb-storage:
grafana-storage:
services:
influxdb:
image: influxdb:1.7
restart: always
ports:
- "8086:8086"
volumes:
- 'influxdb-storage:/var/lib/influxdb'
grafana:
image: grafana/grafana:5.4.3
restart: always
ports:
- "3000:3000"
volumes:
- 'persitent-storage:/var/lib/grafana'
- 'grafana-storage:/var/lib/grafana'
- ./grafana/provisioning/:/etc/grafana/provisioning/
env_file:
- ./grafana/config.monitoring
influx_to_csv:
build: ./influxdb
restart: always
volumes:
- ./data/:/var/lib/csv/
environment:
- INFLUX_HOST=influxdb
- CSV_FOLDER_PATH=/var/lib/csv/
depends_on:
- influxdb
- grafana
cpu_load:
build: ./sensors/cpu_load
restart: always
......
FROM python:3
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY requirements.txt /usr/src/app
RUN python3 -m pip install -r requirements.txt
COPY influx_to_csv.py /usr/src/app
CMD ["python3", "/usr/src/app/influx_to_csv.py"]
\ No newline at end of file
import time
import os
from datetime import datetime, timedelta
from pathlib import Path
import csv
from influxdb import InfluxDBClient
influx_host = os.getenv("INFLUX_HOST", "localhost")
influx_client = InfluxDBClient(host=influx_host, database="cpu-sense")
influx_client.create_database("cpu-sense")
write_time_interval = 20
start_time = datetime.utcnow()
begin = start_time - timedelta(seconds=100)
end = begin + timedelta(seconds=write_time_interval)
csv_folder_path = os.getenv("CSV_FOLDER_PATH", "./data")
data_folder = Path(csv_folder_path)
data_folder.mkdir(parents=True, exist_ok=True)
while True:
begin += timedelta(seconds=write_time_interval)
end += timedelta(seconds=write_time_interval)
query = 'select * from "CPU Usage" where time > \'' + begin.isoformat() + "Z' AND time <= '" + end.isoformat() + "Z' tz('Europe/Paris')"
result = influx_client.query(query, epoch="ms")
try:
n = next(result.get_points())
except StopIteration:
print('Influxdb result query is empty')
else:
file_date = datetime.now().strftime('%Y_%m_%d_%H_%M')
file_name = data_folder/str('cpu_data_' + file_date + '.csv')
with file_name.open('a') as csvfile:
fieldnames = list(next(result.get_points()).keys())
writer = csv.DictWriter(csvfile, fieldnames)
if file_name.stat().st_size == 0:
writer.writeheader()
for row in result.get_points():
# query timestamp from influxdb in ms precision
row['time'] /= 1000.0
writer.writerow(row)
time.sleep(write_time_interval - (time.time() - start_time.timestamp()) % write_time_interval)
influxdb==5.2.1
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment