InfluxData is based on the TICK stack, the first open source platform for managing IoT time-series data at scale.
Single-node influxdb, select a version from a custom repo and hold it:
influxdb:
server:
version: 1.7.10-1
repo: 'custom-repo'
hold: true
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
InfluxDB server Monitor and Logging options .. code-block:: yaml
- influxdb:
- server:
- monitor:
- store_enabled: 'false' store_database: '_internal' store_interval: '10s'
- logging:
- format: auto level: error suppress_logo: false
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)
Example how to add options to http/udp/data/admin that are not supported by the formula yet:
influxdb:
server:
enabled: true
http:
enabled: true
raw_rules:
- 'max-row-limit = 20000'
udp:
enabled: true
raw_rules:
- 'max-row-limit = 20000'
data:
enabled: true
raw_rules:
- 'something_else = 10'
admin:
raw_rules:
- 'something_here = 55'
Rich example for RP and CQ for Telegraf vmstats collected:
influxdb:
client:
database:
vmstats:
enabled: true
name: vmstats
retention_policy:
- name: a_week
duration: 10d
replication: 1
- name: a_month
duration: 30d
replication: 1
- name: a_quater
duration: 15w
replication: 1
is_default: true
- name: a_year
duration: 52w
replication: 1
- name: a_decade
duration: 520w
replication: 1
continuous_query:
cq_ds_all_1m: >-
SELECT sum(*) as sum_1m, count(*) as count_1m, median(*) as median_1m, mode(*) as mode_1m, mean(*) as mean_1m, max(*) as max_1m, min(*) as min_1m INTO "vmstats"."a_week".:MEASUREMENT FRO
cq_ds_all_10m: >-
SELECT sum(*) as sum_10m, count(*) as count_10m, median(*) as median_10m, mode(*) as mode_10m, mean(*) as mean_10m, max(*) as max_10m, min(*) as min_10m INTO "vmstats"."a_month".:MEASURE
cq_ds_all_h: >-
SELECT sum(*) as sum_h, count(*) as count_h, median(*) as median_h, mode(*) as mode_h, mean(*) as mean_h, max(*) as max_h, min(*) as min_h INTO "vmstats"."a_month".:MEASUREMENT FROM /.*/
cq_ds_all_d: >-
SELECT sum(*) as sum_d, count(*) as count_d, median(*) as median_d, mode(*) as mode_d, mean(*) as mean_d, max(*) as max_d, min(*) as min_d INTO "vmstats"."a_year".:MEASUREMENT FROM /.*/
cq_ds_all_w: >-
SELECT sum(*) as sum_w, count(*) as count_w, median(*) as median_w, mode(*) as mode_w, mean(*) as mean_w, max(*) as max_w, min(*) as min_w INTO "vmstats"."a_year".:MEASUREMENT FROM /.*/
cq_ds_all_m: >-
SELECT sum(*) as sum_m, count(*) as count_m, median(*) as median_m, mode(*) as mode_m, mean(*) as mean_m, max(*) as max_m, min(*) as min_m INTO "vmstats"."a_decade".:MEASUREMENT FROM /.*
cq_ds_all_y: >-
SELECT sum(*) as sum_y, count(*) as count_y, median(*) as median_y, mode(*) as mode_y, mean(*) as mean_y, max(*) as max_y, min(*) as min_y INTO "vmstats"."a_decade".:MEASUREMENT FROM /.*
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
To learn how to install and update salt-formulas, consult the documentation available online at:
http://salt-formulas.readthedocs.io/
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:
https://github.com/salt-formulas/salt-formula-influxdb/issues
For feature requests, bug reports or blueprints affecting entire ecosystem, use Launchpad salt-formulas project:
https://launchpad.net/salt-formulas
You can also join salt-formulas-users team and subscribe to mailing list:
https://launchpad.net/~salt-formulas-users
Developers wishing to work on the salt-formulas projects should always base their work on master branch and submit pull request against specific formula.
https://github.com/salt-formulas/salt-formula-influxdb
Any questions or feedback is always welcome so feel free to join our IRC channel:
#salt-formulas @ irc.freenode.net