外观
InfluxDB CLI 工具使用指南
influx CLI 安装方式
从官方二进制包安装
- 从 InfluxData 官网下载对应操作系统的二进制包
- 解压下载的文件
- 将 influx 可执行文件移动到系统 PATH 目录中
使用包管理器安装
Ubuntu/Debian
bash
sudo apt-get update
sudo apt-get install influxdb-clientCentOS/RHEL
bash
sudo yum install influxdb-clientmacOS (Homebrew)
bash
brew install influxdbWindows (Chocolatey)
powershell
choco install influxdbinflux 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:数据副本数量为1DEFAULT:设置为默认保留策略
查看保留策略
使用 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 falseInfluxDB 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 productioninflux 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 versionQ2: 如何连接到远程 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.txtQ4: 如何处理 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 --helpQ8: 如何删除 influx CLI 配置?
A8: 使用以下命令删除配置:
bash
# 删除特定配置
influx config delete -n prod
# 删除所有配置
rm -rf ~/.influxdbv2/ # Linux/macOS
rmdir /s %USERPROFILE%\.influxdbv2\ # WindowsQ9: 如何处理 "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 |
