Skip to content

Commit 315e6c0

Browse files
committed
Merge pull request influxdata#60 from areski/pr-addexample
add extra tutorial for timeseries
2 parents 7183773 + 5766981 commit 315e6c0

File tree

3 files changed

+136
-2
lines changed

3 files changed

+136
-2
lines changed

examples/tutorial.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,10 @@ def main(host='localhost', port=8086):
6060
def parse_args():
6161
parser = argparse.ArgumentParser(
6262
description='example code to play with InfluxDB')
63-
parser.add_argument('--host', type=str, required=True)
64-
parser.add_argument('--port', type=int, required=True)
63+
parser.add_argument('--host', type=str, required=False, default='localhost',
64+
help='hostname of InfluxDB http API')
65+
parser.add_argument('--port', type=int, required=False, default=8086,
66+
help='port of InfluxDB http API')
6567
return parser.parse_args()
6668

6769

examples/tutorial_server_data.py

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
import argparse
2+
3+
from influxdb import InfluxDBClient
4+
import datetime
5+
import random
6+
7+
8+
USER = 'root'
9+
PASSWORD = 'root'
10+
DBNAME = 'tutorial'
11+
12+
13+
def main(host='localhost', port=8086, nb_day=15):
14+
15+
nb_day = 15 # number of day to generate time series
16+
timeinterval_min = 5 # create an event every x minutes
17+
total_minutes = 1440 * nb_day
18+
total_records = int(total_minutes / timeinterval_min)
19+
now = datetime.datetime.today()
20+
cpu_series = [{
21+
'name': "server_data.cpu_idle",
22+
'columns': ["time", "value", "hostName"],
23+
'points': []
24+
}]
25+
26+
for i in range(0, total_records):
27+
past_date = now - datetime.timedelta(minutes=i * timeinterval_min)
28+
value = random.randint(0, 200)
29+
hostName = "server-%d" % random.randint(1, 5)
30+
pointValues = [int(past_date.strftime('%s')), value, hostName]
31+
cpu_series[0]['points'].append(pointValues)
32+
33+
client = InfluxDBClient(host, port, USER, PASSWORD, DBNAME)
34+
35+
print("Create database: " + DBNAME)
36+
client.create_database(DBNAME)
37+
38+
print("Write points #: {0}".format(total_records))
39+
client.write_points(cpu_series)
40+
41+
query = 'SELECT MEAN(value) FROM server_data.cpu_idle GROUP BY time(30m) WHERE time > now() - 1d;'
42+
print("Queying data: " + query)
43+
result = client.query(query)
44+
print("Result: {0}".format(result))
45+
46+
print("Delete database: " + DBNAME)
47+
client.delete_database(DBNAME)
48+
49+
50+
def parse_args():
51+
parser = argparse.ArgumentParser(
52+
description='example code to play with InfluxDB')
53+
parser.add_argument('--host', type=str, required=False, default='localhost',
54+
help='hostname influxdb http API')
55+
parser.add_argument('--port', type=int, required=False, default=8086,
56+
help='port influxdb http API')
57+
parser.add_argument('--nb_day', type=int, required=False, default=15,
58+
help='number of days to generate time series data')
59+
return parser.parse_args()
60+
61+
62+
if __name__ == '__main__':
63+
args = parse_args()
64+
main(host=args.host, port=args.port, nb_day=args.nb_day)

examples/tutorial_sine_wave.py

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
import argparse
2+
3+
from influxdb import InfluxDBClient
4+
import math
5+
import datetime
6+
7+
8+
USER = 'root'
9+
PASSWORD = 'root'
10+
DBNAME = 'tutorial'
11+
12+
13+
def main(host='localhost', port=8086):
14+
"""
15+
main function to generate the sin wave
16+
"""
17+
now = datetime.datetime.today()
18+
data = [{
19+
'name': "foobar",
20+
'columns': ["time", "value"],
21+
'points': []
22+
}]
23+
24+
for angle in range(0, 360):
25+
y = 10 + math.sin(math.radians(angle)) * 10
26+
point = [int(now.strftime('%s')) + angle, y]
27+
data[0]['points'].append(point)
28+
29+
client = InfluxDBClient(host, port, USER, PASSWORD, DBNAME)
30+
31+
print("Create database: " + DBNAME)
32+
client.create_database(DBNAME)
33+
34+
#Write points
35+
client.write_points(data)
36+
37+
query = 'SELECT time, value FROM foobar GROUP BY value, time(1s)'
38+
print("Queying data: " + query)
39+
result = client.query(query)
40+
print("Result: {0}".format(result))
41+
42+
"""
43+
You might want to comment the delete and plot the result on InfluxDB Interface
44+
Connect on InfluxDB Interface at http://127.0.0.1:8083/
45+
Select the database tutorial -> Explore Data
46+
47+
Then run the following query:
48+
49+
SELECT time, value FROM foobar GROUP BY value, time(1s)
50+
"""
51+
52+
print("Delete database: " + DBNAME)
53+
client.delete_database(DBNAME)
54+
55+
56+
def parse_args():
57+
parser = argparse.ArgumentParser(
58+
description='example code to play with InfluxDB')
59+
parser.add_argument('--host', type=str, required=False, default='localhost',
60+
help='hostname influxdb http API')
61+
parser.add_argument('--port', type=int, required=False, default=8086,
62+
help='port influxdb http API')
63+
return parser.parse_args()
64+
65+
66+
if __name__ == '__main__':
67+
args = parse_args()
68+
main(host=args.host, port=args.port)

0 commit comments

Comments
 (0)