This is the for InfluxDB 2.0 OSS, which includes parts that used to be known as Chronograf and Kapacitor.
If you are looking for the InfluxDB 1.x Go Client, we've created a new repo for that.
This project requires Go 1.11 and Go module support.
Set GO111MODULE=on
or build the project outside of your GOPATH
for it to succeed.
If you are getting an error loading module requirements
error with bzr executable file not found in $PATH”
on make
, brew install bazaar
(on macOS) before continuing. This error will also be returned if you have not installed npm
. On macOS, brew install npm
will install npm
.
For information about modules, please refer to the wiki.
A successful make
run results in two binaries, with platform-dependent paths:
$ make
...
env GO111MODULE=on go build -tags 'assets ' -o bin/darwin/influx ./cmd/influx
env GO111MODULE=on go build -tags 'assets ' -o bin/darwin/influxd ./cmd/influxd
influxd
is the InfluxDB service. influx
is the CLI management tool.
Start the service. Logs to stdout by default:
$ bin/darwin/influxd
To write and read fancy timeseries data, you'll need to first create a user, credentials, organization and bucket.
Use the subcommands influx user
, influx auth
, influx org
and influx bucket
, or do it all in one breath with influx setup
:
$ bin/darwin/influx setup
Welcome to InfluxDB 2.0!
Please type your primary username: user
Please type your password: s3^R#tpA$s
Please type your password again: s3^R#tpA$s
Please type your primary organization name.: my-org
Please type your primary bucket name.: my-bucket
Please type your retention period in hours (exp 168 for 1 week).
Or press ENTER for infinite.: 72
You have entered:
Username: user
Organization: my-org
Bucket: my-bucket
Retention Period: 72 hrs
Confirm? (y/n): y
UserID Username Organization Bucket
033a3f2c5ccaa000 user my-org my-bucket
Your token has been stored in /Users/you/.influxdbv2/credentials
~/.influxdbv2/credentials
contains your auth token.
Most influx
commands read the token from this file path by default.
You may need the organization ID and bucket ID later:
$ influx org find
ID Name
033a3f2c708aa000 my-org
$ influx bucket find
ID Name Retention Organization OrganizationID
033a3f2c710aa000 my-bucket 72h0m0s my-org 033a3f2c708aa000
Write to measurement m
, with tag v=2
, in bucket my-bucket
, which belongs to organization my-org
:
$ bin/darwin/influx write --org my-org --bucket my-bucket --precision s "m v=2 $(date +%s)"
Write the same point using curl
:
curl --header "Authorization: Token $(cat ~/.influxdbv2/credentials)" --data-raw "m v=2 $(date +%s)" "http://localhost:9999/api/v2/write?org=033a3f2c708aa000&bucket=033a3f2c710aa000&precision=s"
Read that back with a simple Flux query (currently, the query
subcommand does not have a --org
flag):
$ bin/darwin/influx query --org-id 033a3f2c708aa000 'from(bucket:"my-bucket") |> range(start:-1h)'
Result: _result
Table: keys: [_start, _stop, _field, _measurement]
_start:time _stop:time _field:string _measurement:string _time:time _value:float
------------------------------ ------------------------------ ---------------------- ---------------------- ------------------------------ ----------------------------
2019-01-10T19:24:06.806244000Z 2019-01-10T20:24:06.806244000Z v m 2019-01-10T20:04:09.000000000Z 2
Use the fancy REPL:
$ bin/darwin/influx repl --org my-org
> from(bucket:"my-bucket") |> range(start:-1h)
Result: _result
Table: keys: [_start, _stop, _field, _measurement]
_start:time _stop:time _field:string _measurement:string _time:time _value:float
------------------------------ ------------------------------ ---------------------- ---------------------- ------------------------------ ----------------------------
2019-01-10T19:36:23.361220000Z 2019-01-10T20:36:23.361220000Z v m 2019-01-10T20:04:09.000000000Z 2
>
We recently announced Flux, the MIT-licensed data scripting language (and rename for IFQL). The source for Flux is available on GitHub. Learn more about Flux from CTO Paul Dix's presentation.
All pull requests will run through CI, which is currently hosted by Circle. Community contributors should be able to see the outcome of this process by looking at the checks on their PR. Please fix any issues to ensure a prompt review from members of the team.
The InfluxDB project is used internally in a number of proprietary InfluxData products, and as such, PRs and changes need to be tested internally. This can take some time, and is not really visible to community contributors.
This project uses the following static analysis tools. Failure during the running of any of these tools results in a failed build. Generally, code must be adjusted to satisfy these tools, though there are exceptions.
- go vet checks for Go code that should be considered incorrect.
- go fmt checks that Go code is correctly formatted.
- go mod tidy ensures that the source code and go.mod agree.
- staticcheck checks for things like: unused code, code that can be simplified, code that is incorrect and code that will have performance issues.
If your PR fails staticcheck
it is easy to dig into why it failed, and also to fix the problem.
First, take a look at the error message in Circle under the staticcheck
build section, e.g.,
tsdb/tsm1/encoding.gen.go:1445:24: func BooleanValues.assertOrdered is unused (U1000)
tsdb/tsm1/encoding.go:172:7: receiver name should not be an underscore, omit the name if it is unused (ST1006)
Next, go and take a look here for some clarification on the error code that you have received, e.g., U1000
.
The docs will tell you what's wrong, and often what you need to do to fix the issue.
Sometimes generated code will contain unused code or occasionally that will fail a different check.
staticcheck
allows for entire files to be ignored, though it's not ideal.
A linter directive, in the form of a comment, must be placed within the generated file.
This is problematic because it will be erased if the file is re-generated.
Until a better solution comes about, below is the list of generated files that need an ignores comment.
If you re-generate a file and find that staticcheck
has failed, please see this list below for what you need to put back:
File | Comment |
---|---|
query/promql/promql.go | //lint:file-ignore SA6001 Ignore all unused code, it's generated |