Skip to content

InfluxDB CLI 工具使用指南

influx CLI 安装方式

从官方二进制包安装

  1. 从 InfluxData 官网下载对应操作系统的二进制包
  2. 解压下载的文件
  3. 将 influx 可执行文件移动到系统 PATH 目录中

使用包管理器安装

Ubuntu/Debian

bash
sudo apt-get update
sudo apt-get install influxdb-client

CentOS/RHEL

bash
sudo yum install influxdb-client

macOS (Homebrew)

bash
brew install influxdb

Windows (Chocolatey)

powershell
choco install influxdb

influx CLI 基本配置

配置文件

influx CLI 的配置文件通常位于:

  • Linux/macOS: ~/.influxdbv2/influx-configs(InfluxDB 2.x)
  • Linux/macOS: ~/.influxrc(InfluxDB 1.x)
  • Windows: %USERPROFILE%\.influxdbv2\influx-configs(InfluxDB 2.x)
  • Windows: %USERPROFILE%\.influxrc(InfluxDB 1.x)

命令行参数

连接参数

bash
influx -host <主机> -port <> -username <用户> -password <> -database <数据库>

常用参数说明

  • -host: InfluxDB 服务器主机名(默认:localhost)
  • -port: InfluxDB 服务器端口(默认:8086)
  • -username: 用户名(仅 InfluxDB 1.x)
  • -password: 密码(仅 InfluxDB 1.x)
  • -database: 数据库名称(仅 InfluxDB 1.x)
  • -precision: 时间戳精度(纳秒、微秒、毫秒、秒、分钟、小时)
  • -format: 输出格式(json, csv, column)

InfluxDB 1.x CLI 常用命令

数据库管理

创建数据库

使用 CREATE DATABASE 命令创建新的数据库:

bash
influx -execute "CREATE DATABASE mydb"

说明:此命令将创建一个名为 mydb 的新数据库,使用默认的保留策略 autogen

查看所有数据库

使用 SHOW DATABASES 命令查看所有已创建的数据库:

bash
influx -execute "SHOW DATABASES"

输出示例

name: databases
name
----
_internal
mydb

删除数据库

使用 DROP DATABASE 命令删除指定的数据库:

bash
influx -execute "DROP DATABASE mydb"

警告:此操作会永久删除数据库及其所有数据,谨慎使用。

保留策略管理

创建保留策略

保留策略用于定义数据的存储时长和副本数量。使用 CREATE RETENTION POLICY 命令创建保留策略:

bash
influx -execute "CREATE RETENTION POLICY 7d_policy ON mydb DURATION 7d REPLICATION 1 DEFAULT"

参数说明

  • 7d_policy:保留策略名称
  • ON mydb:应用到的数据库名称
  • DURATION 7d:数据保留7天
  • REPLICATION 1:数据副本数量为1
  • DEFAULT:设置为默认保留策略

查看保留策略

使用 SHOW RETENTION POLICIES 命令查看数据库的保留策略:

bash
influx -execute "SHOW RETENTION POLICIES ON mydb"

输出示例

name    duration shardGroupDuration replicaN default
----    -------- ------------------ -------- -------
autogen 0s       168h0m0s           1        false
7d_policy 168h0m0s 24h0m0s            1        true

连续查询管理

创建连续查询

连续查询用于自动将数据从一个保留策略聚合后写入另一个保留策略,实现数据降采样:

bash
influx -execute "CREATE CONTINUOUS QUERY cq_1h ON mydb BEGIN SELECT mean(value) INTO mydb.7d_policy.:MEASUREMENT FROM mydb.autogen.:MEASUREMENT GROUP BY time(1h), * END"

参数说明

  • cq_1h:连续查询名称
  • ON mydb:应用到的数据库名称
  • mean(value):使用平均值聚合函数
  • INTO mydb.7d_policy.:MEASUREMENT:将结果写入到 7d_policy 保留策略
  • FROM mydb.autogen.:MEASUREMENT:从 autogen 保留策略读取数据
  • GROUP BY time(1h), *:按小时聚合,保留所有标签

查看连续查询

使用 SHOW CONTINUOUS QUERIES 命令查看所有连续查询:

bash
influx -execute "SHOW CONTINUOUS QUERIES"

数据写入

单行写入

使用 INSERT 命令写入单行数据:

bash
influx -database mydb -execute "INSERT cpu,host=server01,region=us-west value=0.64"

数据格式说明

  • cpu:测量值名称
  • host=server01,region=us-west:标签键值对
  • value=0.64:字段键值对

从文件写入

使用 -import 参数从文件批量写入数据:

bash
influx -database mydb -import -path data.txt

文件格式要求:每行一条数据,格式与单行写入相同。

数据查询

基本查询

使用 SELECT 命令查询数据:

bash
influx -database mydb -execute "SELECT * FROM cpu WHERE time > now() - 1h"

参数说明

  • *:查询所有字段
  • FROM cpu:从 cpu 测量值查询
  • WHERE time > now() - 1h:查询最近1小时的数据

格式化输出

使用 -format 参数指定查询结果的输出格式:

bash
influx -database mydb -execute "SELECT * FROM cpu" -format json

支持的格式

  • json:JSON格式,便于机器处理
  • csv:CSV格式,便于导入到电子表格
  • column:表格格式,便于人工阅读

用户管理

创建用户

使用 CREATE USER 命令创建新用户:

bash
influx -execute "CREATE USER admin WITH PASSWORD 'password' WITH ALL PRIVILEGES"

参数说明

  • admin:用户名
  • WITH PASSWORD 'password':设置密码
  • WITH ALL PRIVILEGES:授予管理员权限

查看用户

使用 SHOW USERS 命令查看所有用户:

bash
influx -execute "SHOW USERS"

输出示例

user    admin
----    -----
admin   true
user1   false

InfluxDB 2.x CLI 常用命令

配置管理

添加配置文件

InfluxDB 2.x CLI 使用配置文件存储连接信息,方便快速切换不同环境:

bash
influx config create -n default -u http://localhost:8086 -t <> -o <>

参数说明

  • -n default:配置名称,可自定义
  • -u http://localhost:8086:InfluxDB 服务器地址
  • -t <令牌>:访问令牌,用于身份认证
  • -o <组织>:默认组织名称

查看配置文件

使用 influx config list 命令查看所有配置文件:

bash
influx config list

输出示例

Active  Name    URL                     Org
------  ----    ---                     --
*       default http://localhost:8086   myorg
        prod    https://influxdb.example.com:8086 production

切换配置文件

使用 influx config <配置名称> 命令切换默认配置:

bash
influx config default

组织管理

创建组织

组织是 InfluxDB 2.x 中的顶级资源,用于管理桶和用户:

bash
influx org create -n myorg

参数说明

  • -n myorg:组织名称

查看组织

使用 influx org list 命令查看所有组织:

bash
influx org list

输出示例

ID                  Name
----                ----
03a2f1a3c4b5d6e7f8  myorg
1234567890abcdef   production

桶管理

创建桶

桶是 InfluxDB 2.x 中存储数据的地方,相当于 1.x 中的数据库+保留策略:

bash
influx bucket create -n mybucket -o myorg -r 72h

参数说明

  • -n mybucket:桶名称
  • -o myorg:所属组织
  • -r 72h:数据保留时间,72小时

查看桶

使用 influx bucket list 命令查看所有桶:

bash
influx bucket list

输出示例

ID                  Name       Retention  Organization
----                ----       ---------  ------------
0a1b2c3d4e5f6g7h8   mybucket   72h0m0s    myorg
1234567890abcdef    prod_data  168h0m0s   production

数据写入

单行写入

使用 influx write 命令写入单行数据:

bash
influx write -b mybucket -o myorg -p s 'cpu,host=server01,region=us-west value=0.64'

参数说明

  • -b mybucket:目标桶名称
  • -o myorg:所属组织
  • -p s:时间戳精度为秒
  • cpu,host=server01,region=us-west value=0.64:数据行,格式为 测量值,标签键=值,标签键=值 字段键=值

从文件写入

使用 -f 参数从文件批量写入数据:

bash
influx write -b mybucket -o myorg -f data.txt

文件格式要求:每行一条数据,格式与单行写入相同。

数据查询

使用 InfluxQL 查询

InfluxDB 2.x 支持 InfluxQL 兼容模式,方便从 1.x 迁移:

bash
influx v1 query -d mydb -o myorg "SELECT * FROM cpu WHERE time > now() - 1h"

参数说明

  • -d mydb:数据库名称(兼容 1.x 概念)
  • -o myorg:所属组织

使用 Flux 查询

Flux 是 InfluxDB 2.x 的原生查询语言,功能更强大:

bash
influx query -o myorg 'from(bucket: "mybucket") |> range(start: -1h) |> filter(fn: (r) => r._measurement == "cpu")'

查询说明

  • from(bucket: "mybucket"):从指定桶读取数据
  • range(start: -1h):查询最近1小时的数据
  • filter(fn: (r) => r._measurement == "cpu"):筛选测量值为 cpu 的数据

任务管理

创建任务

任务用于在 InfluxDB 2.x 中实现自动化操作,如数据降采样:

bash
influx task create -o myorg -f task.flux

参数说明

  • -o myorg:所属组织
  • -f task.flux:任务定义文件路径

task.flux 示例

txt
option task = {
  name: "降采样 cpu 数据",
  every: 1h
}

from(bucket: "mybucket")
  |> range(start: -task.every)
  |> filter(fn: (r) => r._measurement == "cpu")
  |> aggregateWindow(every: 1h, fn: mean)
  |> to(bucket: "mybucket_1h", org: "myorg")

查看任务

使用 influx task list 命令查看所有任务:

bash
influx task list

输出示例

ID                  Name            Every  Organization
----                ----            -----  ------------
0a1b2c3d4e5f6g7h8   降采样 cpu 数据   1h     myorg
1234567890abcdef    备份数据          24h    production

influx CLI 高级功能

批量操作

批量写入数据

对于大量数据写入,使用批量写入方式可以提高性能。以下是批量写入的示例:

bash
# data.txt 内容格式:
cpu,host=server01,region=us-west value=0.64 1609459200000000000
cpu,host=server02,region=us-west value=0.72 1609459200000000000

influx write -b mybucket -o myorg -f data.txt

批量执行查询

创建包含多个查询的文件,然后批量执行:

bash
# 创建包含多个查询的文件 queries.txt
SELECT mean(value) FROM cpu WHERE time > now() - 1h GROUP BY host;
SELECT max(value) FROM memory WHERE time > now() - 1h GROUP BY host;

# 执行所有查询
influx query -o myorg -f queries.txt

输出格式化

JSON 格式输出

将查询结果以 JSON 格式输出,便于后续处理:

bash
influx query -o myorg -f json 'from(bucket: "mybucket") |> range(start: -1h)'

CSV 格式输出

将查询结果以 CSV 格式输出,便于导入到其他工具:

bash
influx query -o myorg -f csv 'from(bucket: "mybucket") |> range(start: -1h)'

静默模式

在脚本中使用时,可以启用静默模式,只输出错误信息:

bash
influx write -b mybucket -o myorg -q 'cpu,host=server01 value=0.64'

脚本编写

Bash 脚本示例

在 Bash 脚本中使用 influx CLI 进行数据写入和查询:

bash
#!/bin/bash

# 设置变量
INFLUX_CONFIG="default"
ORG="myorg"
BUCKET="mybucket"

# 写入数据
influx write -c $INFLUX_CONFIG -b $BUCKET -o $ORG 'cpu,host=server01 value=0.64'

# 查询数据
influx query -c $INFLUX_CONFIG -o $ORG 'from(bucket: "'$BUCKET'") |> range(start: -1h)'

PowerShell 脚本示例

在 PowerShell 脚本中使用 influx CLI:

powershell
# 设置变量
$INFLUX_CONFIG = "default"
$ORG = "myorg"
$BUCKET = "mybucket"

# 写入数据
influx write -c $INFLUX_CONFIG -b $BUCKET -o $ORG 'cpu,host=server01 value=0.64'

# 查询数据
influx query -c $INFLUX_CONFIG -o $ORG 'from(bucket: "'$BUCKET'") |> range(start: -1h)'

influx CLI 最佳实践

连接管理

使用配置文件存储连接信息

避免在命令行中明文传递敏感信息,使用配置文件或环境变量存储连接信息:

bash
# 创建配置文件
influx config create -n prod -u https://influxdb.example.com:8086 -t <> -o myorg

# 使用配置文件连接
influx query -c prod 'from(bucket: "mybucket") |> range(start: -1h)'

使用环境变量

在脚本中,可以使用环境变量存储连接信息:

bash
# InfluxDB 2.x 环境变量
export INFLUX_CONFIGS_PATH=~/.influxdbv2/influx-configs
export INFLUX_CONFIG_NAME=prod

# InfluxDB 1.x 环境变量
export INFLUX_HOST=localhost
export INFLUX_PORT=8086
export INFLUX_DB=mydb

性能优化

批量写入数据

对于大量数据写入,使用批量写入方式可以提高性能:

  • 每批数据大小建议在 1-5MB 之间
  • 每行数据包含多个字段
  • 使用适当的时间戳精度

限制查询结果

在查询大量数据时,使用 limit() 函数限制返回结果数量,避免性能问题:

bash
# InfluxQL
influx -database mydb -execute "SELECT * FROM cpu LIMIT 1000"

# Flux
influx query -o myorg 'from(bucket: "mybucket") |> range(start: -1h) |> limit(n: 1000)'

安全性

保护敏感信息

  • 避免在命令行中明文传递密码和令牌
  • 使用配置文件或环境变量存储敏感信息
  • 定期轮换密码和令牌
  • 限制具有管理员权限的用户数量

使用 HTTPS 连接

在生产环境中,建议使用 HTTPS 连接 InfluxDB 服务器,确保数据传输安全:

bash
# InfluxDB 2.x
influx config create -n prod -u https://influxdb.example.com:8086 -t <> -o myorg

# InfluxDB 1.x
influx -host influxdb.example.com -port 8086 -ssl -username admin -password password -database mydb

常见问题(FAQ)

Q1: 如何检查 influx CLI 的版本?

A1: 使用 influx version 命令检查 influx CLI 的版本:

bash
influx version

Q2: 如何连接到远程 InfluxDB 服务器?

A2: 使用 -host-port 参数指定远程服务器地址和端口:

bash
# InfluxDB 1.x
influx -host influxdb.example.com -port 8086 -username admin -password password -database mydb

# InfluxDB 2.x
influx config create -n prod -u https://influxdb.example.com:8086 -t <> -o myorg
influx query -c prod 'from(bucket: "mybucket") |> range(start: -1h)'

Q3: 如何将查询结果导出到文件?

A3: 使用重定向操作符将查询结果导出到文件:

bash
# InfluxDB 1.x
influx -database mydb -execute "SELECT * FROM cpu" > cpu_data.txt

# InfluxDB 2.x
influx query -o myorg 'from(bucket: "mybucket") |> range(start: -1h)' > cpu_data.txt

Q4: 如何处理 influx CLI 连接超时问题?

A4: 可以尝试以下解决方法:

  • 检查网络连接是否正常
  • 验证 InfluxDB 服务器是否正在运行
  • 检查防火墙设置是否允许连接
  • 增加超时时间:influx -timeout 30s

Q5: 如何在脚本中使用 influx CLI?

A5: 在脚本中使用 influx CLI 时,建议:

  • 使用配置文件或环境变量存储连接信息
  • 处理命令执行结果和错误
  • 使用适当的输出格式便于脚本处理

Q6: 如何在 InfluxDB 2.x 中使用 InfluxQL?

A6: 使用 influx v1 query 命令:

bash
influx v1 query -d mydb -o myorg "SELECT * FROM cpu WHERE time > now() - 1h"

Q7: 如何查看 influx CLI 的帮助信息?

A7: 使用 influx --help 命令查看所有可用命令和参数:

bash
influx --help

Q8: 如何删除 influx CLI 配置?

A8: 使用以下命令删除配置:

bash
# 删除特定配置
influx config delete -n prod

# 删除所有配置
rm -rf ~/.influxdbv2/ # Linux/macOS
rmdir /s %USERPROFILE%\.influxdbv2\ # Windows

Q9: 如何处理 "unable to parse authentication credentials" 错误?

A9: 此错误通常是由于令牌格式不正确或权限不足导致的。请检查:

  • 令牌是否正确生成
  • 令牌是否具有足够的权限
  • 组织名称是否正确

Q10: 如何在 Windows 上使用 influx CLI?

A10: 在 Windows 上使用 influx CLI 的方法与 Linux/macOS 类似,可以:

  • 使用 Command Prompt 或 PowerShell
  • 通过 Chocolatey 安装
  • 从官网下载二进制包手动安装

influx CLI 故障排除

连接问题

错误信息:Failed to connect to localhost:8086

解决方法:

  • 检查 InfluxDB 服务器是否正在运行
  • 验证服务器主机名和端口是否正确
  • 检查防火墙设置是否允许连接

错误信息:401 Unauthorized

解决方法:

  • 检查用户名和密码是否正确(InfluxDB 1.x)
  • 检查令牌是否有效(InfluxDB 2.x)
  • 验证用户是否具有足够的权限

数据写入问题

错误信息:unable to parse '...'

解决方法:

  • 检查数据格式是否符合 InfluxDB 行协议要求
  • 验证标签和字段的命名规则
  • 检查时间戳格式是否正确

错误信息:partial write: points beyond retention policy

解决方法:

  • 检查数据的时间戳是否在保留策略允许的范围内
  • 调整保留策略或修改数据的时间戳

数据查询问题

错误信息:error parsing query: found ..., expected ...

解决方法:

  • 检查查询语法是否正确
  • 验证关键字和函数名称的拼写
  • 确保使用的查询语言与 InfluxDB 版本兼容

错误信息:timeout exceeded

解决方法:

  • 优化查询,减少返回结果数量
  • 增加查询超时时间
  • 检查数据库性能,可能需要优化索引或调整硬件配置

版本差异

InfluxDB 1.x 与 2.x CLI 的主要区别

命令结构差异

  • InfluxDB 1.x: 直接使用 influx 命令加参数
  • InfluxDB 2.x: 使用 influx <命令> <子命令> 结构

认证方式差异

  • InfluxDB 1.x: 使用用户名和密码认证
  • InfluxDB 2.x: 使用 API 令牌认证

资源管理差异

  • InfluxDB 1.x: 管理数据库、保留策略、连续查询
  • InfluxDB 2.x: 管理组织、桶、任务

查询语言差异

  • InfluxDB 1.x: 主要使用 InfluxQL
  • InfluxDB 2.x: 主要使用 Flux,支持 InfluxQL 兼容模式

从 1.x CLI 迁移到 2.x CLI

配置迁移

将 1.x CLI 配置迁移到 2.x CLI:

bash
# 创建新的 2.x 配置
influx config create -n prod -u https://influxdb.example.com:8086 -t <> -o myorg

命令迁移示例

操作InfluxDB 1.x 命令InfluxDB 2.x 命令
创建数据库influx -execute "CREATE DATABASE mydb"influx bucket create -n mybucket -o myorg
写入数据influx -database mydb -execute "INSERT cpu,host=server01 value=0.64"influx write -b mybucket -o myorg 'cpu,host=server01 value=0.64'
查询数据influx -database mydb -execute "SELECT * FROM cpu"`influx query -o myorg 'from(bucket: "mybucket")

常用命令速查表

InfluxDB 1.x 常用命令

功能命令
连接到数据库influx -username admin -password password -database mydb
创建数据库CREATE DATABASE mydb
显示所有数据库SHOW DATABASES
使用数据库USE mydb
插入数据INSERT cpu,host=server01 value=0.64
查询数据SELECT * FROM cpu WHERE time > now() - 1h
显示测量值SHOW MEASUREMENTS
显示标签键SHOW TAG KEYS FROM cpu
显示字段键SHOW FIELD KEYS FROM cpu
创建用户CREATE USER admin WITH PASSWORD 'password' WITH ALL PRIVILEGES
显示用户SHOW USERS
创建保留策略CREATE RETENTION POLICY 7d_policy ON mydb DURATION 7d REPLICATION 1 DEFAULT
显示保留策略SHOW RETENTION POLICIES ON mydb

InfluxDB 2.x 常用命令

功能命令
查看版本influx version
创建配置influx config create -n default -u http://localhost:8086 -t <令牌> -o myorg
查看配置influx config list
创建组织influx org create -n myorg
查看组织influx org list
创建桶influx bucket create -n mybucket -o myorg -r 72h
查看桶influx bucket list
写入数据influx write -b mybucket -o myorg 'cpu,host=server01 value=0.64'
查询数据`influx query -o myorg 'from(bucket: "mybucket")
创建任务influx task create -o myorg -f task.flux
查看任务influx task list
查看用户influx user list -o myorg
查看令牌influx auth list -o myorg