Execute Flux queries

This page documents an earlier version of InfluxDB. InfluxDB v2.2 is the latest stable version. See the equivalent InfluxDB v2.2 documentation: Execute queries.

There are multiple ways to execute Flux queries with InfluxDB and Chronograf v1.8+. This guide covers the different options:

  1. Chronograf’s Data Explorer
  2. Influx CLI
  3. InfluxDB API

Before attempting these methods, make sure Flux is enabled by setting flux-enabled = true in the [http] section of your InfluxDB configuration file.

Chronograf’s Data Explorer

Chronograf v1.8+ supports Flux in its Data Explorer. Flux queries can be built, executed, and visualized from within the Chronograf user interface.

Influx CLI

InfluxDB v1.8+’s influx CLI includes a -type option which allows you specify what type of interactive session to start. -type=flux will start an interactive read-eval-print-loop (REPL) that supports Flux.

If authentication is enabled on your InfluxDB instance, use the -username flag to provide your InfluxDB username and the -password flag to provide your password.

Enter an interactive Flux REPL
influx -type=flux
influx -type=flux -username myuser -password PasSw0rd

Any Flux query can be executed within the REPL.

Submit a Flux query via parameter

Flux queries can also be passed to the Flux REPL as a parameter using the influx CLI’s -type=flux option and the -execute parameter. The accompanying string is executed as a Flux query and results are output in your terminal.

influx -type=flux -execute '<flux query>'
influx -type=flux -username myuser -password PasSw0rd -execute '<flux query>'

Submit a Flux query via via STDIN

Flux queries an be piped into the influx CLI via STDIN. Query results are otuput in your terminal.

echo '<flux query>' | influx -type=flux
echo '<flux query>' | influx -type=flux -username myuser -password PasSw0rd

InfluxDB API

Flux can be used to query InfluxDB through InfluxDB’s /api/v2/query endpoint. Queried data is returned in annotated CSV format.

In your request, set the following:

  • Accept header to application/csv
  • Content-type header to application/vnd.flux
  • If authentication is enabled on your InfluxDB instance, Authorization header to Token <username>:<password>

This allows you to POST the Flux query in plain text and receive the annotated CSV response.

Below is an example curl command that queries InfluxDB using Flux:

curl -XPOST localhost:8086/api/v2/query -sS \
  -H 'Accept:application/csv' \
  -H 'Content-type:application/vnd.flux' \
  -d 'from(bucket:"telegraf")
        |> range(start:-5m)
        |> filter(fn:(r) => r._measurement == "cpu")'
curl -XPOST localhost:8086/api/v2/query -sS \
  -H 'Accept:application/csv' \
  -H 'Content-type:application/vnd.flux' \
  -H 'Authorization: Token <username>:<password>' \
  -d 'from(bucket:"telegraf")
        |> range(start:-5m)
        |> filter(fn:(r) => r._measurement == "cpu")'

Set your InfluxDB URL

Upgrade to InfluxDB Cloud or InfluxDB 2.0!

InfluxDB Cloud and InfluxDB OSS 2.0 ready for production.