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执行语句 |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性