influxdb-client 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +157 -0
  3. data/.circleci/setup-rubygems.sh +3 -0
  4. data/.codecov.yml +3 -0
  5. data/.github/PULL_REQUEST_TEMPLATE +8 -0
  6. data/.gitignore +16 -0
  7. data/.rubocop.yml +38 -0
  8. data/CHANGELOG.md +27 -0
  9. data/Gemfile +24 -0
  10. data/LICENSE +21 -0
  11. data/README.md +248 -0
  12. data/Rakefile +37 -0
  13. data/bin/generate-sources.sh +23 -0
  14. data/bin/influxdb-onboarding.sh +39 -0
  15. data/bin/influxdb-restart.sh +60 -0
  16. data/bin/pom.xml +34 -0
  17. data/bin/swagger.yml +9867 -0
  18. data/influxdb-client.gemspec +53 -0
  19. data/lib/influxdb2/client.rb +29 -0
  20. data/lib/influxdb2/client/client.rb +89 -0
  21. data/lib/influxdb2/client/default_api.rb +87 -0
  22. data/lib/influxdb2/client/delete_api.rb +80 -0
  23. data/lib/influxdb2/client/flux_csv_parser.rb +251 -0
  24. data/lib/influxdb2/client/flux_table.rb +99 -0
  25. data/lib/influxdb2/client/influx_error.rb +31 -0
  26. data/lib/influxdb2/client/models/delete_predicate_request.rb +215 -0
  27. data/lib/influxdb2/client/models/dialect.rb +317 -0
  28. data/lib/influxdb2/client/models/query.rb +284 -0
  29. data/lib/influxdb2/client/point.rb +215 -0
  30. data/lib/influxdb2/client/query_api.rb +93 -0
  31. data/lib/influxdb2/client/version.rb +23 -0
  32. data/lib/influxdb2/client/worker.rb +115 -0
  33. data/lib/influxdb2/client/write_api.rb +243 -0
  34. data/test/influxdb/client_test.rb +70 -0
  35. data/test/influxdb/delete_api_integration_test.rb +100 -0
  36. data/test/influxdb/delete_api_test.rb +121 -0
  37. data/test/influxdb/flux_csv_parser_test.rb +401 -0
  38. data/test/influxdb/point_test.rb +221 -0
  39. data/test/influxdb/query_api_integration_test.rb +58 -0
  40. data/test/influxdb/query_api_stream_test.rb +98 -0
  41. data/test/influxdb/query_api_test.rb +96 -0
  42. data/test/influxdb/write_api_batching_test.rb +292 -0
  43. data/test/influxdb/write_api_integration_test.rb +76 -0
  44. data/test/influxdb/write_api_test.rb +275 -0
  45. data/test/test_helper.rb +39 -0
  46. metadata +214 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 0bef54ca002cca11fb29d73a4de5efaa081a800ebc6a284a7eca088bf7d257ea
4
+ data.tar.gz: 1ca91c0b690ee38c10e89cc41a178f071e244b7b85126a0fadb52315c9eb5a45
5
+ SHA512:
6
+ metadata.gz: 849abb961288944fb762ec38a8bb7fdc4b51be0941a03547e8e23360aee98aedf78018e98f75bb879497784bf75a6df3f5c80f164c2a9a453a466f5b8e890d7d
7
+ data.tar.gz: 2f9a75a9913f0f719d4dce37b1dfa33527159c0435672473979562aba705f8bf1ce34e1be5bd27bfd5dd713af41e39cf194460859a3631d6b28ededb9d188588
@@ -0,0 +1,157 @@
1
+ #
2
+ # The MIT License
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ # of this software and associated documentation files (the "Software"), to deal
6
+ # in the Software without restriction, including without limitation the rights
7
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ # copies of the Software, and to permit persons to whom the Software is
9
+ # furnished to do so, subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in
12
+ # all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ # THE SOFTWARE.
21
+ #
22
+
23
+ version: 2.1
24
+
25
+ commands:
26
+ influxdb-onboarding:
27
+ steps:
28
+ - run:
29
+ name: "Post onBoarding request to InfluxDB 2"
30
+ command: ./bin/influxdb-onboarding.sh
31
+ prepare:
32
+ description: "Prepare environment to tests"
33
+ steps:
34
+ - checkout
35
+ - influxdb-onboarding
36
+ test:
37
+ parameters:
38
+ ruby-image:
39
+ type: string
40
+ steps:
41
+ - restore_cache:
42
+ name: Restoring Gem Cache
43
+ keys:
44
+ - &cache-key gem-cache-{{ checksum "influxdb-client.gemspec" }}-<< parameters.ruby-image >>
45
+ - gem-cache-{{ checksum "influxdb-client.gemspec" }}
46
+ - gem-cache-
47
+ - run:
48
+ name: Install dependencies
49
+ command: |
50
+ gem install bundler
51
+ bundle config set path 'vendor/bundle'
52
+ bundle install --jobs=4 --retry=3
53
+ - run:
54
+ name: Static code analyze
55
+ command: |
56
+ bundle exec rake rubocop
57
+ - run:
58
+ name: Run tests
59
+ command: |
60
+ export MINITEST_REPORTER=JUnitReporter
61
+ bundle exec rake test
62
+ - save_cache:
63
+ name: Saving Gem Cache
64
+ key: *cache-key
65
+ paths:
66
+ - ./vendor/bundle
67
+ when: always
68
+ storing-test-results:
69
+ steps:
70
+ - store_test_results:
71
+ path: test/reports
72
+
73
+ jobs:
74
+ tests-ruby:
75
+ parameters:
76
+ ruby-image:
77
+ type: string
78
+ default: &default-ruby-image "circleci/ruby:2.6-stretch"
79
+ influxdb-image:
80
+ type: string
81
+ default: &default-influxdb-image "influxdb:2.0.0-beta"
82
+ docker:
83
+ - image: << parameters.ruby-image >>
84
+ - image: &influx-image quay.io/influxdb/<< parameters.influxdb-image >>
85
+ steps:
86
+ - prepare
87
+ - test:
88
+ ruby-image: << parameters.ruby-image >>
89
+ - storing-test-results
90
+
91
+ deploy-preview:
92
+ parameters:
93
+ influxdb-image:
94
+ type: string
95
+ default: *default-influxdb-image
96
+ docker:
97
+ - image: *default-ruby-image
98
+ - image: *influx-image
99
+ steps:
100
+ - run:
101
+ name: Early return if this build is from a forked repository
102
+ command: |
103
+ if [[ $CIRCLE_PROJECT_USERNAME != "influxdata" ]]; then
104
+ echo "Nothing to do for forked repositories, so marking this step successful"
105
+ circleci step halt
106
+ fi
107
+ - checkout
108
+ - run:
109
+ name: Setup Rubygems
110
+ command: bash .circleci/setup-rubygems.sh
111
+ - run:
112
+ name: Build a Gem bundle
113
+ command: |
114
+ gem build influxdb-client.gemspec
115
+ - run:
116
+ name: Deploy pre-release into https://rubygems.org
117
+ command: |
118
+ gem push influxdb-client-*.pre.$CIRCLE_BUILD_NUM.gem
119
+ workflows:
120
+ version: 2
121
+ build:
122
+ jobs:
123
+ - tests-ruby:
124
+ name: ruby-2.7
125
+ ruby-image: "circleci/ruby:2.7-buster"
126
+ - tests-ruby:
127
+ name: ruby-2.6
128
+ - tests-ruby:
129
+ name: ruby-2.6-nightly
130
+ influxdb-image: "influx:nightly"
131
+ - tests-ruby:
132
+ name: ruby-2.5
133
+ ruby-image: "circleci/ruby:2.5-stretch"
134
+ - tests-ruby:
135
+ name: ruby-2.4
136
+ ruby-image: "circleci/ruby:2.4-stretch"
137
+ - deploy-preview:
138
+ requires:
139
+ - ruby-2.7
140
+ - ruby-2.6
141
+ - ruby-2.6-nightly
142
+ - ruby-2.5
143
+ - ruby-2.4
144
+ filters:
145
+ branches:
146
+ only: master
147
+
148
+ nightly:
149
+ triggers:
150
+ - schedule:
151
+ cron: "0 0 * * *"
152
+ filters:
153
+ branches:
154
+ only:
155
+ - master
156
+ jobs:
157
+ - tests-ruby
@@ -0,0 +1,3 @@
1
+ mkdir ~/.gem || true
2
+ echo -e "---\r\n:rubygems_api_key: $GEM_HOST_API_KEY" > ~/.gem/credentials
3
+ chmod 0600 ~/.gem/credentials
@@ -0,0 +1,3 @@
1
+ ignore:
2
+ - "lib/influxdb2/client/models/**/*"
3
+ - "test/influxdb/**/*"
@@ -0,0 +1,8 @@
1
+ Closes #
2
+
3
+ _Briefly describe your proposed changes:_
4
+
5
+ - [ ] CHANGELOG.md updated
6
+ - [ ] Rebased/mergeable
7
+ - [ ] Tests pass
8
+ - [ ] Sign [CLA](https://influxdata.com/community/cla/) (if not already signed)
@@ -0,0 +1,16 @@
1
+ /.bundle/
2
+ /.idea/
3
+ /.yardoc
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ /Gemfile.lock
11
+ /test/reports/
12
+ .rakeTasks
13
+ /influxdb-client-*.gem
14
+ /TAGS
15
+ /vendor
16
+ /.openapi-generator/
@@ -0,0 +1,38 @@
1
+ #
2
+ # The MIT License
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ # of this software and associated documentation files (the "Software"), to deal
6
+ # in the Software without restriction, including without limitation the rights
7
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ # copies of the Software, and to permit persons to whom the Software is
9
+ # furnished to do so, subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in
12
+ # all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ # THE SOFTWARE.
21
+ #
22
+
23
+ AllCops:
24
+ Exclude:
25
+ - 'lib/influxdb2/client/models/**/*'
26
+ - 'vendor/**/*'
27
+ Metrics/LineLength:
28
+ Max: 120
29
+ Metrics/MethodLength:
30
+ Max: 50
31
+ Metrics/ClassLength:
32
+ Max: 200
33
+ Metrics/AbcSize:
34
+ Max: 40
35
+ Metrics/CyclomaticComplexity:
36
+ Max: 15
37
+ Metrics/PerceivedComplexity:
38
+ Max: 15
@@ -0,0 +1,27 @@
1
+ ## 1.2.0 [2020-03-13]
2
+
3
+ ### Features
4
+ 1. [#23](https://github.com/influxdata/influxdb-client-ruby/issues/23): Added DeleteApi to delete time series data from InfluxDB.
5
+ 1. [#24](https://github.com/influxdata/influxdb-client-ruby/issues/24): Added jitter_interval and retry_interval to WriteApi
6
+ 1. [#26](https://github.com/influxdata/influxdb-client-ruby/issues/26): Set User-Agent to influxdb-client-ruby/VERSION for all requests
7
+
8
+ ### Security
9
+ 1. [#29](https://github.com/influxdata/influxdb-client-ruby/pull/29): Upgrade rake to version 12.3.3 - [CVE-2020-8130](https://github.com/advisories/GHSA-jppv-gw3r-w3q8)
10
+
11
+ ### Bugs
12
+ 1. [#22](https://github.com/influxdata/influxdb-client-ruby/pull/22): Fixed batch write
13
+ 1. [#28](https://github.com/influxdata/influxdb-client-ruby/pull/28): Correctly parse CSV where multiple results include multiple tables
14
+ 1. [#30](https://github.com/influxdata/influxdb-client-ruby/pull/30): Send Content-Type headers
15
+
16
+ ## 1.1.0 [2020-02-14]
17
+
18
+ ### Features
19
+ 1. [#14](https://github.com/influxdata/influxdb-client-ruby/issues/14): Added QueryApi
20
+ 2. [#17](https://github.com/influxdata/influxdb-client-ruby/issues/17): Added possibility to stream query result
21
+ 3. [#19](https://github.com/influxdata/influxdb-client-ruby/issues/19): Added WriteOptions and possibility to batch write
22
+
23
+ ## 1.0.0.beta [2020-01-17]
24
+
25
+ ### Features
26
+ 1. [#4](https://github.com/influxdata/influxdb-client-ruby/pull/4): Added WriteApi that will be used for Fluentd plugin
27
+
data/Gemfile ADDED
@@ -0,0 +1,24 @@
1
+ # The MIT License
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ # of this software and associated documentation files (the "Software"), to deal
5
+ # in the Software without restriction, including without limitation the rights
6
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ # copies of the Software, and to permit persons to whom the Software is
8
+ # furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included in
11
+ # all copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ # THE SOFTWARE.
20
+
21
+ source 'https://rubygems.org'
22
+
23
+ # Specify your gem's dependencies in influxdb-client.gemspec
24
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2019 Influxdata, Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,248 @@
1
+ # influxdb-client-ruby
2
+
3
+ [![CircleCI](https://circleci.com/gh/influxdata/influxdb-client-ruby.svg?style=svg)](https://circleci.com/gh/influxdata/influxdb-client-ruby)
4
+ [![codecov](https://codecov.io/gh/influxdata/influxdb-client-ruby/branch/master/graph/badge.svg)](https://codecov.io/gh/influxdata/influxdb-client-ruby)
5
+ [![Gem Version](https://badge.fury.io/rb/influxdb-client.svg)](https://badge.fury.io/rb/influxdb-client)
6
+ [![License](https://img.shields.io/github/license/influxdata/influxdb-client-ruby.svg)](https://github.com/influxdata/influxdb-client-ruby/blob/master/LICENSE)
7
+ [![GitHub issues](https://img.shields.io/github/issues-raw/influxdata/influxdb-client-ruby.svg)](https://github.com/influxdata/influxdb-client-ruby/issues)
8
+ [![GitHub pull requests](https://img.shields.io/github/issues-pr-raw/influxdata/influxdb-client-ruby.svg)](https://github.com/influxdata/influxdb-client-ruby/pulls)
9
+ [![Slack Status](https://img.shields.io/badge/slack-join_chat-white.svg?logo=slack&style=social)](https://www.influxdata.com/slack)
10
+
11
+ This repository contains the reference Ruby client for the InfluxDB 2.0.
12
+
13
+ #### Note: This library is for use with InfluxDB 2.x. For connecting to InfluxDB 1.x instances, please use the [influxdb-ruby](https://github.com/influxdata/influxdb-ruby) client.
14
+
15
+ ## Installation
16
+
17
+ The InfluxDB 2 client is bundled as a gem and is hosted on [Rubygems](https://rubygems.org/gems/influxdb-client).
18
+
19
+ ### Install the Gem
20
+
21
+ The client can be installed manually or with bundler.
22
+
23
+ To install the client gem manually:
24
+
25
+ ```
26
+ gem install influxdb-client -v 1.2.0
27
+ ```
28
+
29
+ ## Usage
30
+
31
+ ### Creating a client
32
+
33
+ Use **InfluxDB::Client** to create a client connected to a running InfluxDB 2 instance.
34
+
35
+ ```ruby
36
+ client = InfluxDB2::Client.new('https://localhost:9999', 'my-token')
37
+ ```
38
+
39
+ #### Client Options
40
+
41
+ | Option | Description | Type | Default |
42
+ |---|---|---|---|
43
+ | bucket | Default destination bucket for writes | String | none |
44
+ | org | Default organization bucket for writes | String | none |
45
+ | precision | Default precision for the unix timestamps within the body line-protocol | String | none |
46
+ | open_timeout | Number of seconds to wait for the connection to open | Integer | 10 |
47
+ | write_timeout | Number of seconds to wait for one block of data to be written | Integer | 10 |
48
+ | read_timeout | Number of seconds to wait for one block of data to be read | Integer | 10 |
49
+ | max_redirect_count | Maximal number of followed HTTP redirects | Integer | 10 |
50
+ | use_ssl | Turn on/off SSL for HTTP communication | bool | true |
51
+
52
+ ```ruby
53
+ client = InfluxDB2::Client.new('https://localhost:9999', 'my-token',
54
+ bucket: 'my-bucket',
55
+ org: 'my-org',
56
+ precision: InfluxDB2::WritePrecision::NANOSECOND)
57
+ ```
58
+
59
+ ### Queries
60
+
61
+ The result retrieved by [QueryApi](https://github.com/influxdata/influxdb-client-ruby/blob/master/lib/influxdb2/client/query_api.rb) could be formatted as a:
62
+
63
+ 1. Raw query response
64
+ 2. Flux data structure: [FluxTable, FluxColumn and FluxRecord](https://github.com/influxdata/influxdb-client-ruby/blob/master/lib/influxdb2/client/flux_table.rb)
65
+ 3. Stream of [FluxRecord](https://github.com/influxdata/influxdb-client-ruby/blob/master/lib/influxdb2/client/flux_table.rb)
66
+
67
+ #### Query raw
68
+
69
+ Synchronously executes the Flux query and return result as unprocessed String
70
+ ```ruby
71
+ client = InfluxDB2::Client.new('https://localhost:9999', 'my-token',
72
+ bucket: 'my-bucket',
73
+ org: 'my-org')
74
+
75
+ query_api = client.create_query_api
76
+ result = query_api.query_raw(query: 'from(bucket:"' + bucket + '") |> range(start: 1970-01-01T00:00:00.000000001Z) |> last()')
77
+ ```
78
+ #### Synchronous query
79
+ Synchronously executes the Flux query and return result as a Array of [FluxTables](https://github.com/influxdata/influxdb-client-ruby/blob/master/lib/influxdb2/client/flux_table.rb)
80
+ ```ruby
81
+ client = InfluxDB2::Client.new('https://localhost:9999', 'my-token',
82
+ bucket: 'my-bucket',
83
+ org: 'my-org')
84
+
85
+ query_api = client.create_query_api
86
+ result = query_api.query(query: 'from(bucket:"' + bucket + '") |> range(start: 1970-01-01T00:00:00.000000001Z) |> last()')
87
+ ```
88
+
89
+ #### Query stream
90
+ Synchronously executes the Flux query and return stream of [FluxRecord](https://github.com/influxdata/influxdb-client-ruby/blob/master/lib/influxdb2/client/flux_table.rb)
91
+ ```ruby
92
+ client = InfluxDB2::Client.new('https://localhost:9999', 'my-token',
93
+ bucket: 'my-bucket',
94
+ org: 'my-org')
95
+
96
+ query_api = client.create_query_api
97
+
98
+ query = 'from(bucket: "my-bucket") |> range(start: -10m, stop: now()) ' \
99
+ "|> filter(fn: (r) => r._measurement == \"#{measurement}\")"
100
+
101
+ query_api.query_stream(query: query).each do |record|
102
+ puts record.to_s
103
+ end
104
+ ```
105
+
106
+ ### Writing data
107
+ The [WriteApi](https://github.com/influxdata/influxdb-client-ruby/blob/master/lib/influxdb2/client/write_api.rb) supports synchronous and batching writes into InfluxDB 2.0. In default api uses synchronous write. To enable batching you can use WriteOption.
108
+
109
+ ```ruby
110
+ client = InfluxDB2::Client.new('https://localhost:9999', 'my-token',
111
+ bucket: 'my-bucket',
112
+ org: 'my-org',
113
+ precision: InfluxDB2::WritePrecision::NANOSECOND)
114
+
115
+ write_api = client.create_write_api
116
+ write_api.write(data: 'h2o,location=west value=33i 15')
117
+ ```
118
+
119
+ #### Batching
120
+ The writes are processed in batches which are configurable by `WriteOptions`:
121
+
122
+ | Property | Description | Default Value |
123
+ | --- | --- | --- |
124
+ | batchSize | the number of data point to collect in batch | 1000 |
125
+ | flushInterval | the number of milliseconds before the batch is written | 1000 |
126
+ | retry_interval | the number of milliseconds to retry unsuccessful write. The retry interval is used when the InfluxDB server does not specify "Retry-After" header. | 1000 |
127
+ | jitter_interval | the number of milliseconds to increase the batch flush interval by a random amount | 0 |
128
+
129
+ ```ruby
130
+ write_options = InfluxDB2::WriteOptions.new(write_type: InfluxDB2::WriteType::BATCHING,
131
+ batch_size: 10, flush_interval: 5_000)
132
+ client = InfluxDB2::Client.new('http://localhost:9999',
133
+ 'my-token',
134
+ bucket: 'my-bucket',
135
+ org: 'my-org',
136
+ precision: InfluxDB2::WritePrecision::NANOSECOND,
137
+ use_ssl: false)
138
+
139
+ write_api = client.create_write_api(write_options: write_options)
140
+ write_api.write(data: 'h2o,location=west value=33i 15')
141
+ ```
142
+
143
+ #### Time precision
144
+
145
+ Configure default time precision:
146
+ ```ruby
147
+ client = InfluxDB2::Client.new('https://localhost:9999', 'my-token',
148
+ bucket: 'my-bucket',
149
+ org: 'my-org',
150
+ precision: InfluxDB2::WritePrecision::NANOSECOND)
151
+ ```
152
+
153
+ Configure precision per write:
154
+ ```ruby
155
+ client = InfluxDB2::Client.new('https://localhost:9999', 'my-token',
156
+ bucket: 'my-bucket',
157
+ org: 'my-org')
158
+
159
+ write_api = client.create_write_api
160
+ write_api.write(data: 'h2o,location=west value=33i 15', precision: InfluxDB2::WritePrecision::SECOND)
161
+ ```
162
+ Allowed values for precision are:
163
+ - `InfluxDB::WritePrecision::NANOSECOND` for nanosecond
164
+ - `InfluxDB::WritePrecision::MICROSECOND` for microsecond
165
+ - `InfluxDB::WritePrecision::MILLISECOND` for millisecond
166
+ - `InfluxDB::WritePrecision::SECOND` for second
167
+
168
+ #### Configure destination
169
+
170
+ Default `bucket` and `organization` destination are configured via `InfluxDB::Client`:
171
+ ```ruby
172
+ client = InfluxDB2::Client.new('https://localhost:9999', 'my-token',
173
+ bucket: 'my-bucket',
174
+ org: 'my-org')
175
+ ```
176
+
177
+ but there is also possibility to override configuration per write:
178
+
179
+ ```ruby
180
+ client = InfluxDB2::Client.new('https://localhost:9999', 'my-token')
181
+
182
+ write_api = client.create_write_api
183
+ write_api.write(data: 'h2o,location=west value=33i 15', bucket: 'production-data', org: 'customer-1')
184
+ ```
185
+
186
+ #### Data format
187
+
188
+ The data could be written as:
189
+
190
+ 1. `String` that is formatted as a InfluxDB's line protocol
191
+ 1. `Hash` with keys: name, tags, fields and time
192
+ 1. [Data Point](https://github.com/influxdata/influxdb-client-ruby/blob/master/lib/influxdb/client/point.rb#L28) structure
193
+ 1. `Array` of above items
194
+
195
+ ```ruby
196
+ client = InfluxDB2::Client.new('https://localhost:9999', 'my-token',
197
+ bucket: 'my-bucket',
198
+ org: 'my-org',
199
+ precision: InfluxDB2::WritePrecision::NANOSECOND)
200
+
201
+ point = InfluxDB2::Point.new(name: 'h2o')
202
+ .add_tag('location', 'europe')
203
+ .add_field('level', 2)
204
+
205
+ hash = { name: 'h2o',
206
+ tags: { host: 'aws', region: 'us' },
207
+ fields: { level: 5, saturation: '99%' }, time: 123 }
208
+
209
+ write_api = client.create_write_api
210
+ write_api.write(data: ['h2o,location=west value=33i 15', point, hash])
211
+ ```
212
+
213
+ ### Delete data
214
+
215
+ The [DeleteApi](https://github.com/influxdata/influxdb-client-ruby/blob/master/lib/influxdb2/client/delete_api.rb) supports deletes [points](https://v2.docs.influxdata.com/v2.0/reference/glossary/#point) from an InfluxDB bucket.
216
+
217
+ ```ruby
218
+ client = InfluxDB2::Client.new('http://localhost:9999', 'my-token',
219
+ bucket: 'my-bucket',
220
+ org: 'my-org',
221
+ precision: InfluxDB2::WritePrecision::NANOSECOND)
222
+
223
+ client.create_delete_api.delete(DateTime.rfc3339('2019-02-03T04:05:06+07:00'),
224
+ DateTime.rfc3339('2019-03-03T04:05:06+07:00'),
225
+ predicate: 'key1="value1" AND key2="value"')
226
+ ```
227
+
228
+ The time range could be specified as:
229
+
230
+ 1. String - `"2019-02-03T04:05:06+07:00"`
231
+ 1. DateTime - `DateTime.rfc3339('2019-03-03T04:05:06+07:00')`
232
+ 1. Time - `Time.utc(2015, 10, 16, 8, 20, 15)`
233
+
234
+ ## Local tests
235
+
236
+ ```
237
+ brew install wget # on a mac, if not yet installed!
238
+ bin/influxdb-restart.sh
239
+ rake test
240
+ ```
241
+
242
+ ## Contributing
243
+
244
+ Bug reports and pull requests are welcome on GitHub at https://github.com/influxdata/influxdb-client-ruby.
245
+
246
+ ## License
247
+
248
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).