购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1 操作模式

InfluxDB支持两种原生的操作模式:influx命令行工具和InfluxDB API。influx命令行工具是一种类似于mysql命令行工具的命令行接口,可以方便地执行管理、运维、调试性质的操作。InfluxDB API是一种可编程性强、编程语言友好的RESTful API的操作接口,支持HTTP和HTTPS协议。

3.1.1 influx命令行模式

influx是InfluxDB的命令行工具,用于通过命令行的形式访问InfluxDB服务。

1.influx参数

influx参数的含义和用法,在2.2.1节中已经介绍过,这里不再赘述。接下来将以几个示例演示influx参数的用法。

例3.1 启动influx并连接到主机名为“InfluxDB-Server”的InfluxDB服务器。


$ influx -host InfluxDB-Server
Connected to http://InfluxDB-Server:8086 version 1.7.8
InfluxDB shell version: 1.7.8
>

注意 InfluxDB服务器程序版本和influx命令行程序版本要相同,如果不相同,则查询时可能会出现解析错误的问题。

例3.2 连接本地InfluxDB服务,并通过-execute参数执行show databases命令查询数据库信息。


$ influx -execute 'show databases'
name: databases
name
----
_internal
telegraf

2.接入代理的环境变量

influx支持以环境变量的形式设置代理,支持HTTP_PROXY、HTTPS_PROXY、NO_PROXY 3个环境变量。环境变量的书写不区分大小写,但推荐大写版本优先。

(1)HTTP_PROXY

HTTP_PROXY,用于配置HTTP通信的代理服务器,基本语法如代码清单3-1所示。

代码清单3-1 HTTP_PROXY基本语法


HTTP_PROXY=[http://]<host>[:port]

例3.3 HTTP_PROXY配置示例,代理服务器的地址为localhost,代理服务器的端口为1234。


HTTP_PROXY=http://localhost:1234

(2)HTTPS_PROXY

HTTPS_PROXY,用于配置HTTPS通信的代理服务器。在HTTPS_PROXY和HTTP_PROXY同时配置的情况下,influx命令行默认优先使用HTTPS_PROXY的配置,HTTPS_PROXY的基本语法如代码清单3-2所示。

代码清单3-2 HTTPS_PROXY基本语法


HTTPS_PROXY=[https://]<host>[:port]

例3.4 HTTPS_PROXY配置示例,代理服务器的地址为localhost,代理服务器的端口为1443。


HTTPS_PROXY=https://localhost:1443

(3)NO_PROXY

NO_PROXY,用于配置执行influx命令时不使用任何代理的主机名列表。如果设置为星号(*),则表示所有主机都不使用代理,NO_PROXY的基本语法如代码清单3-3所示。

代码清单3-3 NO_PROXY基本语法


NO_PROXY=IP1,IP2

例3.5 NO_PROXY配置示例,在IP地址为123.45.67.89和123.45.67.90的主机上执行influx命令时不使用代理。


NO_PROXY=123.45.67.89,123.45.67.90

3.内置命令

与mysql命令行工具类似,influx也内置了丰富、强大的命令,下面将详细介绍常用的内置命令。

(1)help命令

help命令,输出支持的内置命令及其使用帮助信息。

例3.6 执行help命令,查看支持的内置命令及其使用方法。


$ influx
> help
Usage:
        connect <host:port>   connects to another node specified by host:port
        auth                  prompts for username and password
        pretty                toggles pretty print for the json format
        chunked               turns on chunked responses from server
        chunk size <size>     sets the size of the chunked responses.  Set to 0 to reset to the default chunked size
        use <db_name>         sets current database
        format <format>       specifies the format of the server responses: json, csv, or column
        precision <format>    specifies the format of the timestamp: rfc3339, h, m, s, ms, u or ns
        consistency <level>   sets write consistency level: any, one, quorum, or all
        history               displays command history
        settings              outputs the current settings for the shell
        clear                 clears settings such as database or retention policy.  run 'clear' for help
        exit/quit/ctrl+d      quits the influx shell

        show databases        show database names
        show series           show series information
        show measurements     show measurement information
        show tag keys         show tag key information
        show field keys       show field key information

        A full list of influxql commands can be found at:
        https://docs.influxdata.com/influxdb/latest/query_language/spec/
>

(2)auth命令

auth命令,提示输入用户名和密码,后续再执行influx命令行操作时,使用上述凭据信息进行认证。也可以使用INFLUX_USERNAME和INFLUX_PASSWORD环境变量设置用户名和密码。

例3.7 通过auth命令,输入账号“admin”和密码“123456”。


$ influx
> auth
username: admin
password:
>

注意 通过auth命令输入用户名和密码时,密码是不回显的。

(3)connect命令

connect命令,在不退出命令行shell的情况下,连接到指定主机名和端口对应的InfluxDB服务器。默认情况下,influx连接到localhost:8086。connect命令的基本语法如代码清单3-4所示。

代码清单3-4 connect命令基本语法


$ influx
> connect <host:port>

例3.8 通过connect命令连接到主机名为InfluxDB-Server、端口为8086的InfluxDB服务器。


$ influx
> connect InfluxDB-Server:8086
>

(4)consistency命令

consistency命令,用于配置写一致性级别,目前支持any、one、quorum、all这4类,各写一致性级别的具体含义如表3-1所示。

表3-1 写一致性级别

consistency命令的基本语法如代码清单3-5所示。

代码清单3-5 consistency命令基本语法


$ influx
> consistency <level>

例3.9 通过consistency命令设置写一致性级别为all。


$ influx
> consistency all
>

(5)Ctrl+C命令

Ctrl+C命令,终止当前运行的查询。当交互式查询需要返回太多数据,等待响应耗时过长时,可以使用Ctrl+C命令终止当前运行的查询。

(6)exit/quit/Ctrl+D命令

exit/quit/Ctrl+D命令,用于退出influx命令行。

(7)format命令

format命令,设置服务器响应数据的格式,支持JSON、CSV和COLUMN 3种数据格式。format命令的基本语法如代码清单3-6所示。

代码清单3-6 format命令基本语法


$ influx
> format <format>

例3.10 使用format命令,设置服务器响应数据格式为JSON。


$ influx
> format json
> show databases
{"results":[{"series":[{"name":"databases","columns":["name"],"values":[["_internal"],["telegraf"]]}]}]}
>

(8)history命令

history命令,显示命令操作的历史记录。要在命令行中使用历史命令,只需使用“向上”箭头即可。默认情况下,influx记录最后使用的1000条命令,存储在主目录中的.influx_history文件中。

(9)insert命令

insert命令,写入行协议格式的时序数据,基本语法如代码清单3-7所示。

代码清单3-7 insert命令基本语法


$ influx
> insert into <retention policy> <line protocol>

例3.11 使用数据库的默认保留策略,插入一条时序数据到表cpu_usage中。


$ influx
> insert cpu_usage,hostname=server1 value=23.1
>

(10)precision命令

precision命令,指定查询和写入的时间戳的格式/精度,支持rfc3339(YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ)、h(小时)、m(分钟)、s(秒)、ms(毫秒)、u(微秒)、ns(纳秒),精度默认为纳秒。precision命令的基本语法如代码清单3-8所示。

代码清单3-8 precision命令基本语法


$ influx
> precision <format>

例3.12 通过precision命令,设置时间戳精度为rfc3339。


$ influx
> precision rfc3339
>

(11)pretty命令

pretty命令,开启JSON格式的漂亮打印。

例3.13 将响应数据格式转换为JSON并开启漂亮打印。


$ influx -format=json
> pretty
Pretty print enabled
> show databases
{
    "results": [
        {
            "series": [
                {
                    "name": "databases",
                    "columns": [
                        "name"
                    ],
                    "values": [
                        [
                            "_internal"
                        ],
                        [
                            "telegraf"
                        ]
                    ]
                }
            ]
        }
    ]
}
>

(12)settings命令

settings命令,输出当前设置信息,包括Host信息、Username信息、Database信息、Pretty设置、Format格式、Write Consistency设置等。

(13)use命令

use命令,设置当前操作的数据库。use命令的基本语法如代码清单3-9所示。

代码清单3-9 use命令基本语法


$ influx
> use <database_name>

例3.14 使用use命令设置当前操作的数据库为telegraf。


$ influx
> use telegraf
Using database telegraf
>

(14)InfluxQL命令

除了上述内置命令,作为操作接口,influx命令行还支持丰富的InfluxQL命令,如“show databases”“show series”“show measurements”“show tag keys”“show field keys”等,这里就不一一介绍了,详情请参考: https://docs.influxdata.com/influxdb/latest/query_language/spec/

3.1.2 InfluxDB API模式

InfluxDB API是一种RESTful API风格的接口,返回JSON格式的响应数据,并支持身份认证、JWT令牌、丰富的HTTP响应代码等。

InfluxDB API支持的接口及接口的定义描述如表3-2所示。

表3-2 InfluxDB API接口

例3.15 使用InfluxDB API检查InfluxDB服务的实例状态和版本信息。


$ curl -ig http://localhost:8086/ping
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 091b8240-f569-11e9-a5a3-000c29d8a20b
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.7.8
X-Request-Id: 091b8240-f569-11e9-a5a3-000c29d8a20b
Date: Wed, 23 Oct 2019 11:45:08 GMT

在例3.15中,使用“/ping”接口检查当前地址的InfluxDB实例是否健康,如果实例健康运行则返回InfluxDB的版本信息,如例3.15中的输出信息,如果实例运行异常则返回相关错误信息。

InfluxDB API支持丰富的HTTP响应代码,在异常跟踪定位上尤其有用,HTTP返回码列表和含义如表3-3所示。

表3-3 HTTP返回码 mdlYf4EELvid+tb3uxAkgzZHyvXgsNkgxOHaEyjPT6459YwU96LCLGMAf7hd4wMx

点击中间区域
呼出菜单
上一章
目录
下一章
×