文档文档

使用 influx - InfluxDB 命令行界面

此页面记录了 InfluxDB OSS 的早期版本。 InfluxDB OSS v2 是最新的稳定版本。请参阅 InfluxDB v2 文档

influx 命令行界面 (CLI) 为与 influxd 关联的 HTTP API 提供了一个交互式 shell。使用 influx 可以写入数据(手动或从文件),交互式查询数据,以不同格式查看查询输出,以及管理 InfluxDB 中的资源。

启动 influx

当您 安装 InfluxDB OSS 1.11 时,influx CLI 包含在内。

influx CLI 安装在以下路径,具体取决于您的系统和软件包管理器

/usr/bin/influx
  • Copy
  • Fill window
/usr/local/bin/influx
  • Copy
  • Fill window
/opt/homebrew/opt/influxdb@1/bin/influx
  • Copy
  • Fill window

要访问 CLI,请首先启动 influxd 数据库进程,然后在您的终端中启动 influx

influx
  • Copy
  • Fill window

如果成功连接到 InfluxDB 节点,输出如下:

Connected to https://#:8086 version 1.11.8
InfluxDB shell version: 1.11.8
>
  • Copy
  • Fill window

InfluxDB 和 CLI 的版本应相同。否则,查询可能会出现解析问题。

在提示符下,您可以输入 InfluxQL 查询以及 CLI 特定的命令。输入 help 以获取可用命令列表。如果您想取消长时间运行的 InfluxQL 查询,请使用 Ctrl+C 取消。

环境变量

以下环境变量可用于配置 influx 客户端使用的设置。它们可以用小写或大写字母指定,但大写版本优先。

HTTP_PROXY

定义用于 HTTP 的代理服务器。

Value format:[protocol://]<host>[:port]

HTTP_PROXY=https://#:1234
  • Copy
  • Fill window

HTTPS_PROXY

定义用于 HTTPS 的代理服务器。对于 HTTPS,优先于 HTTP_PROXY。

Value format:[protocol://]<host>[:port]

HTTPS_PROXY=https://#:1443
  • Copy
  • Fill window

NO_PROXY

不应通过任何代理的 host 名称列表。如果仅设置为星号 '*',则匹配所有 host。

Value format: 逗号分隔的 host 列表

NO_PROXY=123.45.67.89,123.45.67.90
  • Copy
  • Fill window

influx 参数

参数指定 CLI 会话的连接、写入、导入和输出选项。

influx 提供以下参数

-h, -help 列出 influx 参数

-compressed 如果导入文件已压缩,则设置为 true。与 -import 一起使用。

-consistency 'any|one|quorum|all' 设置写入一致性级别。

-database 'database name' influx 连接的数据库。

-execute 'command' 执行 InfluxQL 命令并退出。请参阅 -execute

-format 'json|csv|column' 指定服务器响应的格式。请参阅 -format

-host 'host name' influx 连接的 host。默认情况下,InfluxDB 在 localhost 上运行。

-import 从文件导入新数据或 导出的数据。请参阅 -import

-password 'password' influx 用于连接到服务器的密码。如果您将其留空(-password ''),influx 将提示您输入密码。或者,使用 INFLUX_PASSWORD 环境变量为 CLI 设置密码。

-path 要导入的文件的路径。与-import 一起使用。

-port 'port #' influx 连接的端口。默认情况下,InfluxDB 在端口 8086 上运行。

-pps 导入允许的每秒点数。默认情况下,pps 为零,influx 不会限制导入。与 -import 一起使用。

-precision 'rfc3339|h|m|s|ms|u|ns' 指定时间戳的格式/精度:rfc3339 (`YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ`)、h(小时)、m(分钟)、s(秒)、ms(毫秒)、u(微秒)、ns(纳秒)。精度默认为纳秒。

注意: 将精度设置为 rfc3339 (`-precision rfc3339`) 适用于 -execute 选项,但不适用于 -import 选项。所有其他精度格式(例如,hmsmsuns)都适用于 -execute-import 选项。

-pretty 打开 json 格式的漂亮打印。

-ssl 使用 HTTPS 进行请求。

-unsafeSsl 禁用 SSL 证书验证。当通过具有自签名证书的 HTTPS 连接时使用。

-username 'username' influx 用于连接到服务器的用户名。或者,使用 INFLUX_USERNAME 环境变量为 CLI 设置用户名。

-version 显示 InfluxDB 版本并退出。

以下部分提供了某些参数的详细示例,包括 -execute-format-import

使用 -execute 执行 InfluxQL 命令并退出

执行不需要数据库规范的查询

$ influx -execute 'SHOW DATABASES'
name: databases
---------------
name
NOAA_water_database
_internal
telegraf
pirates
  • Copy
  • Fill window

执行需要数据库规范的查询,并更改时间戳精度

$ influx -execute 'SELECT * FROM "h2o_feet" LIMIT 3' -database="NOAA_water_database" -precision=rfc3339
name: h2o_feet
--------------
time			               level description	    location	     water_level
2015-08-18T00:00:00Z	 below 3 feet		        santa_monica	 2.064
2015-08-18T00:00:00Z	 between 6 and 9 feet  coyote_creek  8.12
2015-08-18T00:06:00Z	 between 6 and 9 feet  coyote_creek  8.005
  • Copy
  • Fill window

使用 -format 指定服务器响应的格式

默认格式为 column

$ influx -format=column
[...]
> SHOW DATABASES
name: databases
---------------
name
NOAA_water_database
_internal
telegraf
pirates
  • Copy
  • Fill window

将格式更改为 csv

$ influx -format=csv
[...]
> SHOW DATABASES
name,name
databases,NOAA_water_database
databases,_internal
databases,telegraf
databases,pirates
  • Copy
  • Fill window

将格式更改为 json

$ influx -format=json
[...]
> SHOW DATABASES
{"results":[{"series":[{"name":"databases","columns":["name"],"values":[["NOAA_water_database"],["_internal"],["telegraf"],["pirates"]]}]}]}
  • Copy
  • Fill window

将格式更改为 json 并打开漂亮打印

$ influx -format=json -pretty
[...]
> SHOW DATABASES
{
    "results": [
        {
            "series": [
                {
                    "name": "databases",
                    "columns": [
                        "name"
                    ],
                    "values": [
                        [
                            "NOAA_water_database"
                        ],
                        [
                            "_internal"
                        ],
                        [
                            "telegraf"
                        ],
                        [
                            "pirates"
                        ]
                    ]
                }
            ]
        }
    ]
}
  • Copy
  • Fill window

从文件导入数据

导入文件有两个部分

  • 可选DDL(数据定义语言):包含用于创建相关 数据库 和管理 保留策略InfluxQL 命令。如果您的数据库和保留策略已存在,则您的文件可以跳过此部分。
  • DML(数据操作语言):上下文元数据,指定导入的数据库和(如果需要)保留策略,并包含 行协议 中的数据。

示例

文件 (datarrr.txt)

# DDL
CREATE DATABASE pirates
CREATE RETENTION POLICY oneday ON pirates DURATION 1d REPLICATION 1

# DML
# CONTEXT-DATABASE: pirates
# CONTEXT-RETENTION-POLICY: oneday

treasures,captain_id=dread_pirate_roberts value=801 1439856000
treasures,captain_id=flint value=29 1439856000
treasures,captain_id=sparrow value=38 1439856000
treasures,captain_id=tetra value=47 1439856000
treasures,captain_id=crunch value=109 1439858880
  • Copy
  • Fill window

命令

$influx -import -path=datarrr.txt -precision=s
  • Copy
  • Fill window

结果

2015/12/22 12:25:06 Processed 2 commands
2015/12/22 12:25:06 Processed 5 inserts
2015/12/22 12:25:06 Failed 0 inserts
  • Copy
  • Fill window

对于大型数据集,influx 每 100,000 个点写入一条状态消息。

例如

2015/08/21 14:48:01 Processed 3100000 lines.
Time elapsed: 56.740578415s.
Points per second (PPS): 54634
  • Copy
  • Fill window

关于 -import 需要注意的事项

  • 要限制导入,请使用 -pps 设置每秒要摄取的点数。默认情况下,pps 为零,influx 不会限制导入。
  • 要导入使用 gzip (GNU zip) 压缩的文件,请包含 -compressed 标志。
  • 在数据文件中包含时间戳。如果点不包含时间戳,InfluxDB 会为这些点分配相同的时间戳,这可能会导致意外的 重复点或覆盖
  • 如果您的数据文件包含超过 5,000 个点,请考虑将其拆分为较小的文件,以便分批将数据写入 InfluxDB。我们建议以 5,000 到 10,000 个点的批次写入,以获得最佳性能。写入较小的批次会增加 HTTP 请求的数量,这可能会对性能产生负面影响。默认情况下,HTTP 请求在五秒后超时。虽然 InfluxDB 在超时后继续尝试写入点,但您不会收到写入成功的确认。

注意: 要从 InfluxDB 版本 0.8.9 导出数据,请参阅 从 0.8.9 导出

有关更多信息,请参阅 导出和导入数据

influx 命令

在 CLI 中输入 help 以获取可用命令的部分列表。

命令

下面的列表提供了每个命令的简要讨论。我们在本节末尾提供了关于 insert 的详细信息。

auth 提示您输入用户名和密码。influx 在查询数据库时使用这些凭据。或者,使用 INFLUX_USERNAMEINFLUX_PASSWORD 环境变量为 CLI 设置用户名和密码。

chunked 打开从服务器发出查询时的分块响应。默认情况下启用此设置。

chunk size <size> 设置分块响应的大小。默认大小为 10,000。将其设置为 0 会将 chunk size 重置为其默认值。

clear [ database | db | retention policy | rp ] 清除 数据库保留策略 的当前上下文。

connect <host:port> 连接到不同的服务器,而无需退出 shell。默认情况下,influx 连接到 localhost:8086。如果您未指定 host 或端口,则 influx 假定缺失属性的默认设置。

consistency <level> 设置写入一致性级别:anyonequorumall

Ctrl+C 终止当前正在运行的查询。当交互式查询花费太长时间来响应时,这很有用,因为它试图返回过多的数据。

exit quit Ctrl+D 退出 influx shell。

format <format> 指定服务器响应的格式:jsoncsvcolumn。有关每种格式的示例,请参阅 -format 的描述。

history 显示您的命令历史记录。要在 shell 中使用历史记录,只需使用“向上”箭头。influx 将您最近的 1,000 个命令存储在您主目录的 .influx_history 中。

insert 使用行协议写入数据。请参阅 insert

precision <format> 指定时间戳的格式/精度:rfc3339 (`YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ`)、h(小时)、m(分钟)、s(秒)、ms(毫秒)、u(微秒)、ns(纳秒)。精度默认为纳秒。

pretty 打开 json 格式的漂亮打印。

settings 输出 shell 的当前设置,包括 HostUsernameDatabaseRetention PolicyPretty 状态、Chunked 状态、Chunk SizeFormatWrite Consistency

use [ "<database_name>" | "<database_name>"."<retention policy_name>" ] 设置当前的 数据库 和/或 保留策略。一旦 influx 设置了当前数据库和/或保留策略,则无需在查询中指定该数据库和/或保留策略。如果您未指定保留策略,则 influx 会自动查询 used 数据库的 DEFAULT 保留策略。

使用 insert 将数据写入 InfluxDB

输入 insert,后跟 行协议 中的数据,以将数据写入 InfluxDB。使用 insert into <retention policy> <line protocol> 将数据写入特定的 保留策略

将数据写入 measurement treasures 中的单个字段,标签为 captain_id = pirate_kinginflux 自动将点写入数据库的 DEFAULT 保留策略。

> INSERT treasures,captain_id=pirate_king value=2
>
  • Copy
  • Fill window

将相同的点写入已存在的保留策略 oneday

> INSERT INTO oneday treasures,captain_id=pirate_king value=2
Using retention policy oneday
>
  • Copy
  • Fill window

查询

influx 中执行所有 InfluxQL 查询。

有关 InfluxQL 文档,请参阅 数据探索Schema 探索数据库管理身份验证和授权


此页是否对您有帮助?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。您可以继续像现在这样使用它,而无需对代码进行任何更改。

阅读更多

InfluxDB 3 开源版本现已公开发布 Alpha 版

InfluxDB 3 开源版本现已可用于 Alpha 测试,根据 MIT 或 Apache 2 许可获得许可。

我们正在发布两个产品作为 alpha 版本的一部分。

InfluxDB 3 Core,是我们的新开源产品。它是用于时间序列和事件数据的最新数据引擎。InfluxDB 3 Enterprise 是一个商业版本,它建立在 Core 的基础上,增加了历史查询功能、读取副本、高可用性、可扩展性和细粒度的安全性。

有关如何入门的更多信息,请查看