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执行语句
posted @ 2020-09-06 11:16  g2012  阅读(234)  评论(0)    收藏  举报