2.Influxdb使用2

原创 George555    公众号: 测试江湖路 

如果这些内容对你有帮助,也可以打开微信扫一扫,加关注:

接上一篇:

1.Influxdb使用1

 

五、服务端启动-centos

    方法1:直接使用influxdb的配置文件启动

        influxd -config /etc/influxdb/influxdb.conf

    方法2:配置文件添加到系统环境变量中,只使用influxd命令启动。

        将/etc/influxdb/influxdb.conf添加到新增的系统环境变量INFLUXDB_CONFIG_PATH值上,就可以只用influxd命令启动且关联到配置的influxdb.conf文件了。

        打开/etc/profile文件,默认添加:

INFLUXDB_CONFIG_PATH=/etc/influxdb/influxdb.conf
PATH=$PATH:$INFLUXDB_CONFIG_PATH
export PATH

 这样就可以每次只使用influxd 命令启动服务端了。

    方法3:把influxd放入后台服务启动,方式命令端启动在关闭(断开连接)后服务停掉。

nohup 你的命令 &

示例:    nohup influxd &

    说明:&:把服务挂在后台运行;nohup:断开ssh连接时服务还保持着。

    关闭nohup的进程:

ps -ef|grep influxd   #  (查找运行该influxd命令的进程id)
kill -9 pid       #(根据进程号关闭程序)

执行命令汇总如下:

[root@localhost ~]# nohup influxd &
[1] 17915
[root@localhost ~]# nohup: ignoring input and appending output to `nohup.out'
[root@localhost ~]# ps -ef|grep influxd
root      17915  17544  0 09:58 pts/0    00:00:02 influxd
root      17989  17544  0 10:07 pts/0    00:00:00 grep influxd
[root@localhost ~]# kill -9 17915
[root@localhost ~]# ps -ef|grep influxd
root      18004  17544  0 10:10 pts/0    00:00:00 grep influxd
[1]+  Killed                  nohup influxd

六、服务端启动-Windows

    启动方式1: 直接输入命令方式

    influxd.exe -config influxdb.conf

    启动后如下图:

    注意:此处命令需要加config参数,指定配置文件,否则直接双击influxd.exe文件关联的是默认配置,不是自己修改的配置文件。---->这一步很关键,操作错误会导致jmeter的数据无法提交到influxdb中。

    启动方式2:使用bat文件方式,内容如下:

set HOME=d:\influx
influxd.exe -config influxdb.conf

 注:influxdb.conf为配置文件;d:\influx 为数据存放总目录

七、客户端连接 windows和linux客户端使用类似

    1.cmd方式: 注意ip:localhost 和端口号:8083都不需要引号

E:\influxdb-1.2.0>influx -database 'jmeterTest' -host localhost -port 80
83 -format 'json' -pretty
Connected to http://localhost:8083 version 1.2.0
InfluxDB shell version: 1.2.0

    2.web访问方式:  根据配置文件中admin节点的端口,使用ip:端口访问,    当然这里的web端正如开头写到的,只有在1.3版本之前可用。1.3后版本需要用命令方式连接使用了。

    如果想在1.3版本后继续使用web端那也有办法,请参考后面的方法。

见如下图:

    右侧Query Templates点击后会弹出很多已经制定好查询sql模板,可以直接选择使用。选择后顶部Query文本框中就会出现对应查询sql,按回车就可以执行查询了。

    3.使用web端访问1.3+后续版本

        A.本地开启influxdb服务端,参照五、六点说明

        B.本地使用http://127.0.0.1:8083/打开web端

        C.在web端右上角点设置,进入远端连接influxdb数据库配置

        D.Host、Port、Username、Password输入想要连接的远端influxdb服务器对应信息后,点Save即可

        E.现在就可以来尝试去查询远端服务器上的数据了

八、常见数据库操作语句梳理

    最后汇总下influx常用sql,以备在后面jmeter+influxdb+grafana中快速调整sql查询。

    1.创建数据库:默认端口8086,跟配置文件有关

$ influx
Connected to http://localhost:8086 version 0.10.0
InfluxDB shell 0.10.0
> CREATE DATABASE mydbTest

2.查询数据库

> SHOW DATABASES
name: databases
name
----
_internal
mydbTest

3.选择数据库

> USE mydbTest
Using database mydb

 4.删除数据库

DROP DATABASE "mydb"

5.概念汇总

    先帖出官方提供的实际场景:不同时间下,多个地区在不同组海拔下的1天中的温度变化、湿度变化。

    measurement:传统数据库中的表

    points:传统数据库的表里面的一行数据。Point由时间戳(time)、数据(field)、标签(tags)组成

    time:每行数据记录的时间,数据库的主索引,自动生成。

    tags:各种索引的属性,比如地区、海拔

    fields:表格中的列,各种记录值,如温度、湿度

6.插入数据

    用insert语句插入,或用http协议插入


> USE mydbTest
Using database mydbTest
> insert weather,altitude=1000,area=北 temperature=11,humidity=-4
> quit

[root@localhost ~]# curl -i -XPOST 'http://192.168.2.253:8086/write?db=mydbTest' --data-binary 'weather,altitude=2000,area=南 temperature=31,humidity=-41'
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 83bde21d-baa2-11ea-802e-000000000000
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.6.2
X-Request-Id: 83bde21d-baa2-11ea-802e-000000000000
Date: Tue, 30 Jun 2020 07:22:54 GMT

7. 查询数据

    A.用类似sql语句查询:

> select * from weather
name: weather
time                altitude area humidity temperature
----                -------- ---- -------- -----------
1593501698362884742 1000     北    -4       11
1593501774595020469 2000     南    -41      31

   备注:

        weather :表名

        altitude=1000,area=北 :tag

        temperature=11,humidity=-4 :field

    B.用http接口查询:


[root@localhost ~]# curl -G 'http://192.168.2.253:8086/query?pretty=true' --data-urlencode "db=mydbTest" --data-urlencode "q=SELECT * FROM weather ORDER BY time DESC LIMIT 3"
{
    "results": [
        {
            "statement_id": 0,
            "series": [
                {
                    "name": "weather",
                    "columns": [
                        "time",
                        "altitude",
                        "area",
                        "humidity",
                        "temperature"
                    ],
                    "values": [
                        [
                            "2020-06-30T07:22:54.595020469Z",
                            "2000",
                            "南",
                            -41,
                            31
                        ],
                        [
                            "2020-06-30T07:21:38.362884742Z",
                            "1000",
                            "北",
                            -4,
                            11
                        ]
                    ]
                }
            ]
        }
    ]
}

8.删除和修改

    在InfluxDB中并没有提供数据(Points)的删除与修改方法。不过可以通过数据保存策略(Retention Policies)来实现删除。

    Retention Policies:用于指定数据的保留时间,当数据超过了指定的时间之后,就被删除。

    A.查看Retention Policies


> SHOW RETENTION POLICIES ON "mydbTest"
name    duration shardGroupDuration replicaN default
----    -------- ------------------ -------- -------
autogen 0s       168h0m0s           1        true

   B.创建Retention Policies


CREATE RETENTION POLICY "rp_name" ON "db_name" DURATION 3d REPLICATION 1 DEFAULT
> CREATE RETENTION POLICY "Gtestname" ON "mydbTest" DURATION 1d REPLICATION 1 DEFAULT
> SHOW RETENTION POLICIES ON "mydbTest"
name      duration shardGroupDuration replicaN default
----      -------- ------------------ -------- -------
autogen   0s       168h0m0s           1        false
Gtestname 24h0m0s  1h0m0s             1        true

 rp_name:策略名

    3d:数据保留3天,3天前的被删除。时间参数,比如:h(小时),w(星期)

    REPLICATION:副本个数,默认1

    DEFAULT :设为默认策略

    C.修改Retention Policies


ALTER RETENTION POLICY "Gtestname" ON "mydbTest" DURATION 1h DEFAULT

  D.删除Retention Policies


DROP RETENTION POLICY "Gtestname" ON "mydbTest"

9.查询指定库中所有表


> use mydbTest
Using database mydbTest
> SHOW MEASUREMENTS
name: measurements
name
----
weather

10.删除表


> SHOW MEASUREMENTS
name: measurements
name
----
test
weather
> DROP MEASUREMENT "test"
> SHOW MEASUREMENTS
name: measurements
name
----
weather

11.用户查询、创建、删除


#查询用户
SHOW USERS
#创建用户
CREATE USER "admin" WITH PASSWORD '123456'
# 创建管理员权限的用户
CREATE USER "admin" WITH PASSWORD '123456' WITH ALL PRIVILEGES
# 删除用户
DROP USER "admin"

12.常用函数总结

    A.聚合函数Aggregations:COUNT()、DISTINCT()、INTEGRAL()、MEAN(),MEDIAN()、MODE()、SPREAD(),STDDEV()、SUM()等。

    COUNT() :返回一个field中的非空值数量

        语法:COUNT( [ * | <field_key> | /<regular_expression>/ ] )

        示例:COUNT(water):获取

    MEAN():求平均值,类型必须是整型或浮点型

        语法:MEAN( [ * | <field_key> | /<regular_expression>/ ] )

        示例:MEAN(water):获取water字段的算术平均值

    SPREAD():返回字段的最小和最大值的差值,类型必须是整型或浮点型

        语法:SPREAD( [ * | <field_key> | /<regular_expression>/ ] )

        示例:SPREAD(water):获取water字段值中最大和最小值的差

    SUM():求和,字段类型必须是整型或浮点型

        语法:SUM( [ * | <field_key> | /<regular_expression>/ ] )

        示例:SUM(water):获取water字段值之和

    B.选择函数Selectors: BOTTOM()、FIRST()、LAST()、MAX()、MIN()、PERCENTILE()、SAMPLE()、TOP()

    BOTTOM():返回字段中最小的N个值

        语法:BOTTOM(<field_key>[,<tag_keys>],<N>)

        示例:BOTTOM(water,3):获取3个最小的water值,然后正序输出。

    FIRST():返回一个字段中最早的值,即第1个值。

        语法:FIRST(<field_key>)

        示例:FIRST(water):获取water字段第一次创建的值。

    LAST():返回一个字段中最新的值,即最后1个值。

        语法:LAST(<field_key>)

        示例:LAST(water):获取water字段最后创建的值。

    TOP():返回字段中最大的前N个值,字段必须是整型或浮点型

        语法:TOP(<field_key>[,<tag_keys>],<N>)

        示例:TOP(water,3):获取3个最大的water值,然后倒序输出。

    MAX():返回字段中最大的值,该字段类型必须是长整型,float64,或布尔类型。

        语法:MAX(<field_key>)

        示例:MAX(water):获取water字段最大值

    MIN():返回一个字段中的最小值。该字段类型必须是长整型,float64,或布尔类型。

        语法:MIN(<field_key>)

        示例:MIN(water):获取water最小值

    PERCENTILE():返回排序值排位为N的百分值。字段的类型必须是长整型或float64。

    语法:PERCENTILE(<field_key>, <N>)

    示例:PERCENTILE(water, 3):获取water最小值

    SAMPLE():返回一个字段里N个随机值。

        语法:SAMPLE(<field_key>, <N>)

        示例:SAMPLE(water,3):随机获取water字段中3个值

    TOP():返回一个字段中最大的N个值,类型是长整型或float64。

        语法:TOP( <field_key>[,<tag_key(s)>],<N> )

        示例:TOP(water,3):获取water字段中最大的3个值

        注意:查询结果默认不按查询的字段排序。

  C.转换函数Transformations: CEILING()、CUMULATIVE_SUM()、DERIVATIVE()、DIFFERENCE()、ELAPSED()、FLOOR()、HISTOGRAM()、MOVING_AVERAGE()、NON_NEGATIVE_DERIVATIVE()、NON_NEGATIVE_DIFFERENCE()

 

    D.预测函数Predictors:HOLT_WINTERS()

    更多函数使用说明,可参考官网:

https://docs.influxdata.com/influxdb/v1.3/query_language/functions


 

 

 

#####欢迎加好友交流切磋####

QQ:464314378

微信群请先加群主微信,群主会拉各位小伙伴进群,注意添加备注。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值