InfluxDB 开源分布式时序、事件和指标数据库
2017-04-12 17:13
337 查看
from:https://segmentfault.com/a/1190000000444617
InfluxDB 开源分布式时序、事件和指标数据库
InfluxDB 是一个开源分布式时序、事件和指标数据库。使用 Go 语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。
schemaless(无结构),可以是任意数量的列
Scalable
min, max, sum, count, mean, median 一系列函数,方便统计
Native HTTP API, 内置http支持,使用http读写
Powerful Query Language 类似sql
Built-in Explorer 自带管理工具
管理界面:
InfluxDB 支持两种api方式
HTTP API
Protobuf API
Protobuf 还未开发完成, 官网文档都没有
如何使用 http api 进行操作?
比如对于
数据放到body里。
数据看起来是这样的:
下面的"name": "events", 其中"events"就是一个
格式是json,可以在一个
每个
上面的数据里没有包含
time 在InfluxDB里是很重要的,毕竟InfluxDB是
在InfluxDB里还有个
InfluxDB 增删更查都是用http api来完成,甚至支持使用正则表达式删除数据,还有计划任务。
比如:
发送
body如下,
这个查询会删除大于14天的数据,并且任何以stats开头的数据,并且每天3:00 AM运行。
更加详细查看官方文档: http://influxdb.org/docs/api/http.html
InfluxDB 提供了类似sql的查询语言
看起来是这样的:
非常容易上手, 还支持
等
文档: http://influxdb.org/docs/query_language/
常用语言的库都有,因为api简单,也很容易自己封装。
InfluxdDB作为很多监控软件的后端,这样监控数据就可以直接存储在InfluxDB
还有其它的可视化工具支持InfluxDB, 这样就可以基于InfluxDB很方便的搭建监控平台
InfluxDB 用于存储基于时间的数据,比如监控数据,因为InfluxDB本身提供了Http API,所以可以使用InfluxDB很方便的搭建了个监控数据存储中心。
对于InfluxDB中的数据展示,官方admin有非常简单的图表, 看起来是这样的
除了自己写程序展示数据还可以选择:
tasseo https://github.com/obfuscurity/tasseo/
grafana https://github.com/torkelo/grafana
tasseo,为Graphite写的Live dashboard,现在也支持InfluxDB,tasseo 比较简单, 可以配置的选项很少。
Grafana是一个纯粹的html/js应用,访问InfluxDB时不会有跨域访问的限制。只要配置好数据源为InfluxDB之后就可以,剩下的工作就是配置图表。Grafana 功能非常强大。使用ElasticsSearch保存DashBoard的定义文件,也可以Export出JSON文件(Save ->Advanced->Export Schema),然后上传回它的/app/dashboards目录。
配置数据源:
勘误:“使用 Go 语音编写”,“语音”应该是“语言”吧
赞 回复
lidashuang 作者 ·
2014年03月25日
已改, 感谢
赞 回复
tosun ·
2014年08月28日
请问有influxdb和OpenTSDB的比较吗?
赞 回复
lidashuang 作者 ·
2014年08月28日
OpenTSDB没用过,有机会试下
赞 回复
rfyiamcool ·
2015年01月19日
OpenTSDB和influxdb还是要看的量级的场景,毕竟Opentsdb是需要hbase的支撑的。 但是他俩都有个缺点是不能做rrdtool那种的预先计算, 当然也可以通过别的逻辑来减轻后期聚合计算带来的影响 。 我这边有个metric的平台采用的就是influxdb做后端存储,性能还是很客观的,他本身有一些灵巧的设计, 比如lru缓存算法,查询的连续性,自带异步
以前写过关于influxdb的几篇文章,有兴趣的朋友可以看看。
http://xiaorui.cc/tag/influxdb/
http://xiaorui.cc/tag/influxdb/
赞 回复
lidashuang 作者 ·
2015年01月19日
厉害
赞 回复
PynixWang ·
2015年02月28日
8086....
赞 回复
yuankui ·
2015年08月03日
想起了ELK...
赞 回复
arkii ·
2016年01月11日
据我了解,Grafana 的 Dashboard,以及用户权限 是保存在 sqlite数据库里。
Kibana使用ElasticsSearch保存DashBoard的定义文件。
InfluxDB 开源分布式时序、事件和指标数据库
InfluxDB 是一个开源分布式时序、事件和指标数据库。使用 Go 语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。
特点
schemaless(无结构),可以是任意数量的列Scalable
min, max, sum, count, mean, median 一系列函数,方便统计
Native HTTP API, 内置http支持,使用http读写
Powerful Query Language 类似sql
Built-in Explorer 自带管理工具
管理界面:
API
InfluxDB 支持两种api方式HTTP API
Protobuf API
Protobuf 还未开发完成, 官网文档都没有
如何使用 http api 进行操作?
比如对于
foo_production这个数据库,插入一系列数据,可以发现
POST请求到
/db/foo_production/series?u=some_user&p=some_password,
数据放到body里。
数据看起来是这样的:
下面的"name": "events", 其中"events"就是一个
series,类似关系型数据库的表table
[ { "name": "events", "columns": ["state", "email", "type"], "points": [ ["ny", "paul@influxdb.org", "follow"], ["ny", "todd@influxdb.org", "open"] ] }, { "name": "errors", "columns": ["class", "file", "user", "severity"], "points": [ ["DivideByZero", "example.py", "someguy@influxdb.org", "fatal"] ] } ]
格式是json,可以在一个
POST请求发送多个
series,
每个
series里的
points可以是多个,但索引要和
columns对应。
上面的数据里没有包含
time列,InfluxDB会自己加上,不过也可以指定
time,比如:
[ { "name": "response_times", "columns": ["time", "value"], "points": [ [1382819388, 234.3], [1382819389, 120.1], [1382819380, 340.9] ] } ]
time 在InfluxDB里是很重要的,毕竟InfluxDB是
time series database
在InfluxDB里还有个
sequence_number字段是数据库维护的,类似于mysql的 主键概念
InfluxDB 增删更查都是用http api来完成,甚至支持使用正则表达式删除数据,还有计划任务。
比如:
发送
POST请求到
/db/:name/scheduled_deletes,
body如下,
{ "regex": "stats\..*", "olderThan": "14d", "runAt": 3 }
这个查询会删除大于14天的数据,并且任何以stats开头的数据,并且每天3:00 AM运行。
更加详细查看官方文档: http://influxdb.org/docs/api/http.html
查询语言
InfluxDB 提供了类似sql的查询语言看起来是这样的:
select * from events where state == 'NY'; select * from log_lines where line =~ /error/i; select * from events where customer_id == 23 and type == 'click'; select * from response_times where value > 500; select * from events where email !~ /.*gmail.*/; select * from nagios_checks where status != 0; select * from events where (email =~ /.*gmail.* or email =~ /.*yahoo.*/) and state == 'ny'; delete from response_times where time > now() - 1h
非常容易上手, 还支持
Group By,
Merging Series,
Joining Series, 并内置常用统计函数,比如max, min, mean
等
文档: http://influxdb.org/docs/query_language/
库
常用语言的库都有,因为api简单,也很容易自己封装。InfluxdDB作为很多监控软件的后端,这样监控数据就可以直接存储在InfluxDB
StatsD,
CollectD,
FluentD
还有其它的可视化工具支持InfluxDB, 这样就可以基于InfluxDB很方便的搭建监控平台
InfluxDB 数据可视化工具
InfluxDB 用于存储基于时间的数据,比如监控数据,因为InfluxDB本身提供了Http API,所以可以使用InfluxDB很方便的搭建了个监控数据存储中心。对于InfluxDB中的数据展示,官方admin有非常简单的图表, 看起来是这样的
除了自己写程序展示数据还可以选择:
tasseo https://github.com/obfuscurity/tasseo/
grafana https://github.com/torkelo/grafana
tasseo
tasseo,为Graphite写的Live dashboard,现在也支持InfluxDB,tasseo 比较简单, 可以配置的选项很少。
Grafana
Grafana是一个纯粹的html/js应用,访问InfluxDB时不会有跨域访问的限制。只要配置好数据源为InfluxDB之后就可以,剩下的工作就是配置图表。Grafana 功能非常强大。使用ElasticsSearch保存DashBoard的定义文件,也可以Export出JSON文件(Save ->Advanced->Export Schema),然后上传回它的/app/dashboards目录。配置数据源:
datasources: { influx: { default: true, type: 'influxdb', url: 'http://<your_influx_db_server>:8086/db/<db_name>', username: 'test', password: 'test', } },
勘误:“使用 Go 语音编写”,“语音”应该是“语言”吧
赞 回复
lidashuang 作者 ·
2014年03月25日
已改, 感谢
赞 回复
tosun ·
2014年08月28日
请问有influxdb和OpenTSDB的比较吗?
赞 回复
lidashuang 作者 ·
2014年08月28日
OpenTSDB没用过,有机会试下
赞 回复
rfyiamcool ·
2015年01月19日
OpenTSDB和influxdb还是要看的量级的场景,毕竟Opentsdb是需要hbase的支撑的。 但是他俩都有个缺点是不能做rrdtool那种的预先计算, 当然也可以通过别的逻辑来减轻后期聚合计算带来的影响 。 我这边有个metric的平台采用的就是influxdb做后端存储,性能还是很客观的,他本身有一些灵巧的设计, 比如lru缓存算法,查询的连续性,自带异步
以前写过关于influxdb的几篇文章,有兴趣的朋友可以看看。
http://xiaorui.cc/tag/influxdb/
http://xiaorui.cc/tag/influxdb/
赞 回复
lidashuang 作者 ·
2015年01月19日
厉害
赞 回复
PynixWang ·
2015年02月28日
8086....
赞 回复
yuankui ·
2015年08月03日
想起了ELK...
赞 回复
arkii ·
2016年01月11日
据我了解,Grafana 的 Dashboard,以及用户权限 是保存在 sqlite数据库里。
Kibana使用ElasticsSearch保存DashBoard的定义文件。
相关文章推荐
- InfluxDB 开源分布式时序、事件和指标数据库
- InfluxDB 开源分布式时序、事件和指标数据库
- 分布式文件存储的数据库开源项目MongoDB
- 阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房)
- 分布式文件存储的数据库开源项目MongoDB
- [置顶] 开源数据库InfluxDB常用函数
- InfluxDB 分布式时间序列数据库环境搭建——据qcon大会2016qiniu说集群很坑且闭源了
- 阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房)
- 阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房)
- 阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房)
- 分布式文件存储的数据库开源项目MongoDB
- 开源时序服务器influxdb使用
- 阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房)
- HBase (分布式的、面向列的开源数据库) 基础概念
- HBase 分布式的、面向列的开源数据库
- 分布式开源数据库_HBase入门介绍
- MongoDB 基于分布式文件存储的开源数据库
- 阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房) - agapple - ITeye技术网站
- 阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房)
- 分布式数据库定时同步问题之--SqlCommand不可序列化