Skip to content

Instantly share code, notes, and snippets.

@adrianlzt
Created March 3, 2016 18:09
Show Gist options
  • Save adrianlzt/f4b6f5c8f6c2a51c3f60 to your computer and use it in GitHub Desktop.
Save adrianlzt/f4b6f5c8f6c2a51c3f60 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
from influxdb import InfluxDBClusterClient
influx_host = "127.0.0.1"
influx_port = 8086
influx_user = "user"
influx_pass = "pass"
database = "example"
influx_timeout = 10
c.influx_max_metrics = 40
c.influx = InfluxDBClusterClient(
[(influx_host,influx_port)],
influx_user, influx_pass,
database, timeout = influx_timeout)
query = c.influx.query("SHOW FIELD KEYS")
values = []
for key,items in query.items():
for i in list(items):
values.append(i["fieldKey"])
# String of all mean(values)
# Set makes a uniq list
cq_values = ",".join(map(lambda v: 'mean("%s") AS "%s"' % (v,v), set(values)))
cq_query = 'CREATE CONTINUOUS QUERY {cq_name} ON {database} BEGIN SELECT {cq_values} INTO {database}."rp_{rp}".:MEASUREMENT FROM {database}."{query}"./.*/ GROUP BY time({rp}), * END'
schema = [
{"rp": "10s", "duration":"2h","query":"default"},
{"rp": "30s", "duration":"6h","query":"default"},
{"rp": "1m", "duration":"24h","query":"10s"},
{"rp": "5m", "duration":"48h","query":"30s"},
{"rp": "30m", "duration":"7d","query":"5m"},
{"rp": "1h", "duration":"31d","query":"5m"},
{"rp": "3h", "duration":"93d","query":"5m"},
{"rp": "12h", "duration":"370d","query":"1h"},
{"rp": "24h", "duration":"inf","query":"1h"}
]
for s in schema:
# Create retention policies
c.influx.create_retention_policy("rp_%s" % s["rp"], s["duration"], "1")
# Create CQs
query = cq_query.format(cq_name="%s_cq_%s" % (database,s["rp"]), database=database, cq_values=cq_values, rp=s["rp"], query=s["query"])
c.influx.query(query)
@nextkitt
Copy link

I think the schema like this:

schema = [
        {"rp": "10s", "duration":"2h","query":"default"},
        {"rp": "30s", "duration":"6h","query":"default"},
        {"rp": "1m", "duration":"24h","query":"rp_10s"},
        {"rp": "5m", "duration":"48h","query":"rp_30s"},
        {"rp": "30m", "duration":"7d","query":"rp_5m"},
        {"rp": "1h", "duration":"31d","query":"rp_5m"},
        {"rp": "3h", "duration":"93d","query":"rp_5m"},
        {"rp": "12h", "duration":"370d","query":"rp_1h"},
        {"rp": "24h", "duration":"inf","query":"rp_1h"}
         ]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment