ArrayString

ArrayString

Who am I?


What I write about


Recent Posts

CentOS 7下InfluxDB部署与使用

环境信息:

CentOS 7.2

InfluxDB 1.8.2

安装

  1. 将InfluxDB加入yum源

    cat <<EOF | sudo tee /etc/yum.repos.d/influxdb.repo
    [influxdb]
    name = InfluxDB Repository - RHEL \$releasever
    baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
    enabled = 1
    gpgcheck = 1
    gpgkey = https://repos.influxdata.com/influxdb.key`
    EOF
  2. 安装&启动

    
    #安装
    sudo yum install -y influxdb
    
    #启动
    sudo systemctl start influxdb
    
    #配置开机启动
    sudo systemctl enable influxdb
    
    #防火墙配置
    #开放端口
    firewall-cmd --add-port=8086/tcp --permanent
    
    #重载防火墙配置
    firewall-cmd --reload
  3. 启动cli命令

    #通过influx命令进入cli命令行
    influx
    Connected to http://localhost:8086 version 1.4.2
    InfluxDB shell version: 1.4.2
    >

配置

#创建用户
CREATE USER influx WITH PASSWORD 'influx' WITH ALL PRIVILEGES

#查看用户
SHOW USERS
#创建数据库
CREATE DATABASE test

#查看数据库
SHOW DATABASES

四、语法

InfluxDB里存储的数据被称为时间序列数据,InfluxDB存储方式跟传统关系型数据库不同的是:传统关系型数据库通过数据库+表+字段组织数据,InfluxDB通过指标、标签、字段组织数据,时间戳是默认的索引列,标签跟字段其实就相当于关系型数据库中的字段,只不过标签会被索引,而字段不会。

另外,InfluxDB中的表(measurement)、字段(tag、field)不用事先创建,并且不存储null值。

名次/概念 解释
database 数据库
measurement 度量,相当于table;例如:cpu
tags 标签,相当于field,会被索引;例如:host
field 字段,不会被索引,例如:cpu_load

将数据点写入InfluxDB,只需要满足如下的行格式:

`<measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp]`
通过influx命令进入cli命令行练习语法

插入

#Using 数据库
USE test

#插入数据
INSERT cpu,host=192.168.1.1 load=0.1,usage=0.2
 <!--Insert的时候如果没有带时间戳,InfluxDB会自动添加本地的当前时间作为它的时间戳。-->

查询

#查询所有数据
SELECT * FROM "cpu"
SELECT "host","load","usage" FROM "cpu"

#根据条件查询
SELECT "host","load","usage" FROM "cpu" WHERE "host" = '192.168.1.1'
SELECT "host","load","usage" FROM "cpu" WHERE "usage" > 0.1

其他

# 创建数据库`

CREATE DATABASE "db_name"

# 显示所有数据库

SHOW DATABASES

# 删除数据库

DROP DATABASE "db_name"

# 使用数据库

USE mydb

# 显示该数据库中的表

SHOW MEASUREMENTS

# 删除表

DROP MEASUREMENT "t_name"

HTTP API

创建数据库
curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE test"
写入数据
#写入单条
curl -i -XPOST http://localhost:8086/write?db=test --data-binary "cpu,host=192.168.1.3 load=0.1,usage=0.33"

curl -i -XPOST http://localhost:8086/write?db=test --data-binary "cpu,host=192.168.1.3 load=0.1,usage=0.33 6666666666666666666"

#写入多条
curl -i -XPOST http://localhost:8086/write?db=test --data-binary "cpu,host=192.168.1.2 load=0.1,usage=0.22 1666666666666666661 
cpu,host=192.168.1.3 load=0.1,usage=0.33 1666666666666666661 
cpu,host=192.168.1.2 load=0.2,usage=0.22 1666666666666666662 
cpu,host=192.168.1.3 load=0.2,usage=0.33 1666666666666666662"
查询数据
curl -G http://localhost:8086/query?db=test --data-urlencode "q=SELECT * FROM  \"cpu\""

备注

`延伸阅读 Grafana 安装部署:https://ken.io/note/grafana-install-centos7 Grafana + InfluxDB数据源以及曲线图表仪表盘配置:https://ken.io/note/grafana-quickstart-influxdb-datasource-graph`