原创 George555 公众号: 测试江湖路
如果这些内容对你有帮助,也可以打开微信扫一扫,加关注:
接上一篇:
五、服务端启动-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
微信群请先加群主微信,群主会拉各位小伙伴进群,注意添加备注。