Skip to content

Latest commit

 

History

History
479 lines (387 loc) · 12.1 KB

README.rst

File metadata and controls

479 lines (387 loc) · 12.1 KB

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, 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

Read more

Documentation and Bugs

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