InfluxDB¶
InfluxData is based on the TICK stack, the first open source platform for managing IoT time-series data at scale.
Sample pillars¶
Single-node influxdb, enabled http frontend and admin web interface:
influxdb:
server:
enabled: true
http:
enabled: true
bind:
address: 0.0.0.0
port: 8086
admin:
enabled: true
bind:
address: 0.0.0.0
port: 8083
Single-node influxdb, SSL for http frontend:
influxdb:
server:
enabled: true
http:
bind:
ssl:
enabled: true
key_file: /etc/influxdb/ssl/key.pem
cert_file: /etc/influxdb/ssl/cert.pem
Single-node influxdb where you specify paths for data and metastore directories. Custom directories are created by this formula:
influxdb:
server:
enabled: true
data:
dir: '/opt/influxdb/data'
wal_dir: '/opt/influxdb/wal'
meta:
dir: '/opt/influxdb/meta'
InfluxDB server with customized parameters for the data service:
influxdb:
server:
enabled: true
data:
max_series_per_database: 20000000
cache_max_memory_size: 524288000
cache_snapshot_memory_size: 26214400
cache_snapshot_write_cold_duration: "5m"
compact_full_write_cold_duration: "2h"2h"
max_values_per_tag: 5000
Single-node influxdb with an admin user:
influxdb:
server:
enabled: true
http:
enabled: true
bind:
address: 0.0.0.0
port: 8086
admin:
enabled: true
bind:
address: 0.0.0.0
port: 8083
user:
enabled: true
name: root
password: secret
Single-node influxdb with new users:
influxdb:
server:
user:
user1:
enabled: true
admin: true
name: username1
password: keepsecret1
user2:
enabled: true
admin: false
name: username2
password: keepsecret2
Single-node influxdb with new databases:
influxdb:
server:
database:
mydb1:
enabled: true
name: mydb1
mydb2:
enabled: true
name: mydb2
Manage the retention policies for a database:
influxdb:
server:
database:
mydb1:
enabled: true
name: mydb1
retention_policy:
- name: rp_db1
duration: 30d
replication: 1
is_default: true
Where default values are:
- name = autogen
- duration = INF
- replication = 1
- is_default: false
Here is how to manage grants on database:
influxdb:
server:
grant:
username1_mydb1:
enabled: true
user: username1
database: mydb1
privilege: all
username2_mydb1:
enabled: true
user: username2
database: mydb1
privilege: read
username2_mydb2:
enabled: true
user: username2
database: mydb2
privilege: write
InfluxDB relay:
influxdb:
server:
enabled: true
http:
enabled: true
output:
idb01:
location: http://idb01.local:8086/write
timeout: 10
idb02:
location: http://idb02.local:8086/write
timeout: 10
udp:
enabled: true
output:
idb01:
location: idb01.local:9096
idb02:
location: idb02.local:9096
InfluxDB cluster:
influxdb:
server:
enabled: true
meta:
bind:
address: 0.0.0.0
port: 8088
http_address: 0.0.0.0
http_port: 8091
cluster:
members:
- host: idb01.local
port: 8091
- host: idb02.local
port: 8091
- host: idb03.local
port: 8091
Deploy influxdb apt repository (using linux formula):
linux:
system:
os: ubuntu
dist: xenial
repo:
influxdb:
enabled: true
source: 'deb https://repos.influxdata.com/${linux:system:os} ${linux:system:dist} stable'
key_url: 'https://repos.influxdata.com/influxdb.key'
InfluxDB client for configuring databases, users and retention policies:
influxdb:
client:
enabled: true
server:
protocol: http
host: 127.0.0.1
port: 8086
user: admin
password: foobar
user:
user1:
enabled: true
admin: true
name: username1
database:
mydb1:
enabled: true
name: mydb1
retention_policy:
- name: rp_db1
duration: 30d
replication: 1
is_default: true
grant:
username1_mydb1:
enabled: true
user: username1
database: mydb1
privilege: all
InfluxDB client state’s that uses curl can be forced to retry query if curl call fails:
influxdb:
client:
enabled: true
retry:
count: 3
delay: 3
Create an continuous queries:
influxdb:
client:
database:
mydb1:
continuous_query:
cq_avg_bus_passengers: >-
SELECT mean("passengers") INTO "transportation"."three_weeks"."average_passengers" FROM "bus_data" GROUP BY time(1h)
Prunning data and data management:
Intended to use in scheduled jobs, executed to maintain data life cycle above retention policy. These states are executed by
query.sls
and you are expected to trigger sls_id
individually.
influxdb:
client:
database:
mydb1:
query:
drop_measurement_h2o: >-
DROP MEASUREMENT h2o_quality
drop_shard_h2o: >-
DROP SHARD h2o_quality
drop_series_h2o_feet: >-
DROP SERIES FROM "h2o_feet"
drop_series_h2o_feet_loc_smonica: >-
DROP SERIES FROM "h2o_feet" WHERE "location" = 'santa_monica'
delete_h2o_quality_rt3: >-
DELETE FROM "h2o_quality" WHERE "randtag" = '3'
delete_h2o_quality: >-
DELETE FROM "h2o_quality"
salt \* state.sls_id influxdb_query_delete_h2o_quality influxdb.query
InfluxDB relay with HTTP outputs:
influxdb:
relay:
enabled: true
telemetry:
enabled: true
bind:
address: 127.0.0.1
port: 9196
listen:
http_backend:
type: http
bind:
address: 127.0.0.1
port: 9096
output:
server1:
location: http://server1:8086/write
timeout: 20s
buffer_size_mb: 512
max_batch_kb: 1024
max_delay_interval: 30s
server2:
location: http://server2:8086/write
Documentation and Bugs¶
To learn how to install and update salt-formulas, consult the documentation available online at:
In the unfortunate event that bugs are discovered, they should be reported to the appropriate issue tracker. Use Github issue tracker for specific salt formula:
For feature requests, bug reports or blueprints affecting entire ecosystem, use Launchpad salt-formulas project:
You can also join salt-formulas-users team and subscribe to mailing list:
Developers wishing to work on the salt-formulas projects should always base their work on master branch and submit pull request against specific formula.
Any questions or feedback is always welcome so feel free to join our IRC channel:
#salt-formulas @ irc.freenode.net