influxdb常用操作
哪些情况下用tag
一般来说,你的查询可以指引你哪些数据放在tag中,哪些放在field中。
- 把你经常查询的字段作为tag
- 如果你要对其使用GROUP BY(),也要放在tag中
- 如果你要对其使用InfluxQL函数,则将其放到field中
- 如果你需要存储的值不是字符串,则需要放到field中,因为tag value只能是字符串
终端操作数据库
1 | 查看所有数据库 |
终端插入数据
1 | 格式: |
数据写入(网络通讯)
- 使用http接口创建/删除数据库
1 | curl -i -xpost http://localhost:8086/query --data-urlencode "q=create database dapengstate" |
- 使用http接口写数据
通过http接口post数据到/write路径是我们往influxdb写数据的主要方式。下面的例子写了一条数据到mydb数据库。这条数据的组成部分是measurement为cpu_load_short,tag的key为host和region,对应tag的value是server01和us-west,field的key是value,对应的数值为0.64,而时间戳是1434055562000000000
1 | curl -i -xpost 'http://localhost:8086/write?db=dapengstate' --data-binary 'cpu_load_short,host=server01,region=us-west value=0.64 1434055562000000000' |
- 写入多个点
1 | curl -i -xpost 'http://localhost:8086/write?db=mydb' --data-binary 'cpu_load_short,host=server02 value=0.67 |
- 通过文件写入数据
可以通过curl的@filename来写入文件中的数据,且这个文件里的数据的格式需要满足influxdb那种行的语法。
cup_data.txt
1 | cpu_load_short,host=server02 value=0.67 |
写入
1 | curl -i -xpost 'http://localhost:8086/write?db=mydb' --data-binary @cpu_data.txt |
查询数据
1 | curl -g 'http://localhost:8086/query?pretty=true' --data-urlencode "db=mydb" --data-urlencode "q=select \"value\" from \"cpu_load_short\" where \"region\"='us-west'" |
返回值(json)
1 | { |
pretty=ture参数在url里面,是为了让返回的json格式化。这在调试或者是直接用curl的时候很有用,但在生产上不建议使用,因为这样会消耗不必要的网络带宽。
多个查询
1 | curl -g 'http://localhost:8086/query?pretty=true' --data-urlencode "db=mydb" --data-urlencode "q=select \"value\" from \"cpu_load_short\" where \"region\"='us-west';select count(\"value\") from \"cpu_load_short\" where \"region\"='us-west'" |
数据采样/数据保留策略
需求:
自动将十秒间隔数据聚合到30分钟的间隔数据
自动删除两个小时以上的原始10秒间隔数据
自动删除超过52周的30分钟间隔数据
如果我们写数据的时候没有指定rp的话,influxdb会使用默认的rp创建一个保留两小时的数据的rp
1
create retention policy "two_hours" on "food_data" duration 2h replication 1 default
创建数据库时,influxdb会自动生成一个叫做autogen的rp,并作为数据库的默认rp,autogen这个rp会永远保留数据。在输入上面的命令之后,two_hours会取代autogen作为food_data的默认rp。
创建一个保留52周数据的RP
1 | create retention policy "a_year" on "food_data" duration 52w replication 1 |
创建CQ(Continuous Query/连续查询)
1 | create continuous query "cq_30m" on "food_data" begin |
注意到我们在into语句中使用了”
“.” “这样的语句,当要写入到非默认的rp时,就需要这样的写法。
上面创建了一个叫做cq_30m的cq作用于food_data数据库上。cq_30m告诉influxdb每30分钟计算一次measurement为orders并使用默认rptow_hours的字段website和phone的平均值,然后把结果写入到rp为a_year,两个字段分别是mean_website和mean_phone的measurement名为downsampled_orders的数据中。influxdb会每隔30分钟跑对之前30分钟的数据跑一次这个查询。
- 创建数据库时指定保留策略
1 | create database "noaa_water_database" with duration 3d replication 1 shard duration 1h name "liquid" |
该语句创建了一个叫做noaa_water_database的数据库,并且创建了liquid作为数据库的默认保留策略,其持续时间为3天,副本数是1,shard group的持续时间为一个小时。
- 修改保留策略
1 | alter retention policy <retention_policy_name> on <database_name> duration <duration> replication <n> shard duration <duration> default |
创建保留策略what_is_time其持续时间为两天
1 | create retention policy "what_is_time" on "noaa_water_database" duration 2d replication 1 |
修改what_is_time的持续时间为3个星期,shard group的持续时间为30分钟,并将其作为数据库noaa_water_database的默认保留策略:+
1 | alter retention policy "what_is_time" on "noaa_water_database" duration 3w shard duration 30m default |
- 删除保留策略
1 | drop retention policy <retention_policy_name> on <database_name> |
如何查看InfluxDB的版本
终端:
1 | influxd version |
curl:
1 | curl -i 'http://localhost:8086/ping' |
本文标题:influxdb常用操作
文章作者:AwesomeYang
发布时间:2018-04-30
最后更新:2024-05-25
原始链接:https://struy.cn/2018/04/30/influxdb-commons-action/
版权声明:未经允许禁止转载,请关注公众号联系作者