influxdb学习记录
简介
influxdb是一款流行的时序数据库应用,与prometheus最大的不同在于,influxdb采用推模型,即记录方通过调用influxdb接口,将数据保存到influxdb数据库中。prometheus则是由自身不断抓取记录方的导出数据。influxdb的查询语句与sql类似,简单易上手,prometheus的查询语法promQL学习曲线较为陡峭。这次主要学习了influxdb,记录一下相关的知识点。
基本概念
以一条数据插入语句为例:
insert 10d api,host=10.0.10.182,url=/user/get duration=20
insert后面依次接retention policy(可选),measurement、tag和field,measurement和tag用逗号隔开,tag之间也用逗号相隔,tag和field用空格相隔。如果插入语句没有指定时间戳,influxdb将自动补充一个时间戳字段。
measurement就是数据表,对应MySQL中的table。tag是索引列,tag值都为string,field为没有加索引的列,field的值类型可为int、float、string、boolean。当插入的field值为string时,需要加引号。
配置文件
当采用apt方式安装influxdb时,influxdb的配置文件保存在/etc/influxdb/influxdb.conf。
需要使自定义配置文件生效时,可以指定对应配置文件的路径以启动influxdb:
influxd -config /etc/influxdb/influxdb.conf
HTTP API
除了cli command外,influxdb也提供了查询、编辑、写入等操作的http api(官方文档:https://docs.influxdata.com/influxdb/v1.6/tools/api/)。基本格式如下:
curl -XPOST http://localhost:8086/query?db=api_sum --data-urlencode "q=select * from api where time >= '2020-09-06T00:00:00Z' tz(Asia/Shanghai)"
查询参数
| 参数名 | 必选 | 描述 |
|---|---|---|
| chunked=[true|number_of_ponits] | 否 | 返回的数据是否分块,如果设置为true,influxdb将默认10000个数据点作为一个分块返回 |
| db=<database_name> | 依赖于数据库的查询语句必选,如SELECT和SHOW | 指定influxdb数据库 |
| epoch=[ns,u,µ,ms,s,m,h] | 否 | 指定返回时间戳的精度,默认返回纳秒精度的RFC3339时间,注意u,µ都是微秒 |
| p=<password> | 开启认证的情况下必传 | 指定用户密码 |
| u=<username> | 开启认证的情况下必传 | 指定用户名 |
| pretty=true | 否 | 返回结果以易于打印的json格式返回,该选项会产生额外的网络带宽开销,不推荐在生产环境使用 |
| q=<query> | 是 | influxdb执行语句 |

浙公网安备 33010602011771号