KairosDB是一个快速可靠的分布式时间序列数据库,主要用于Cassandra来做底层存储,当然也可以使用HBase。KairosDB是在OpenTSDB基础上重写的。 KairosDB主页: https://code.google.com/p/kairosdb/
对于运维工程师而言,OpenTSDB可以获取基础设施和服务的实时状态信息,展示集群的各种软硬件错误,性能变化以及性能瓶颈。对于管理者而言,OpenTSDB可以衡量系统的SLA,理解复杂系统间的相互作用,展示资源消耗情况。集群的整体作业情况,可以用以辅助预算和集群资源协调。对于开发者而言,OpenTSDB可以展示集群的主要性能瓶颈,经常出现的错误,从而可以着力重点解决重要问题。
与OpenTSDB相比KairosDB 改进的地方:
- Uses Guice to load modules.
- Incorporates Jetty for Rest API and serving up UI.
- Pure Java build tool (Tablesaw)
- UI uses Flot and is client side rendered.
- Ability to customize UI.
- Relative time now includes Month and supports leap years.
- Modular data store interface supports:
- HBase
- Cassandra
- H2 (For development)
- Milliseconds data support when using Cassandra.
- Rest API for querying and submitting data.
- Build produces deployable tar, rpm and deb packages.
- Linux start/stop service scripts.
- Faster.
- Made aggregations optional (easier to get raw data).
- Bug fix with returning incorrect data.
- Added abilities to import and export data.
- Aggregators can aggregate data for a specified period.
- Aggregators can be stacked or "piped" together.
- Grouping by tags, time range, or value.
KairosDB 删除的地方:
- Removed all telnet commands except for put
- No longer supports URL query
KairosDb 特性:
Data Store Support
KairosDB 可以使用cassandra、HBase、H2(开发环境中)作为后端存储。默认情况下,KairosDB运行在H2数据库下,开发环境不需要cassandra或HBase。
Time Granularity
如果使用cassandra,KairosDB 支持毫秒的粒度。HBase 仅支持秒级别。
Tags
数据点可以跟上标记,一个标记是一个键值对。
Submit Metrics Via Telnet
使用telnet是一个非常简单的方式来添加指标的方法。语法简单、使用方便。
REST API
支持REST API来添加查询指标。
Aggregators
在查询时,使用聚合来处理数据点。KairosDB带有聚合的默认设置,聚合器可以很容易地进行编码,并加入到扩展默认功能。
Grouping
查询API可以通过标记、时间范围、值来对数据点进行分组。
Filtering
查询API通过标记来筛选过滤返回的一组数据。
Graphing
KairosDB 有一个内置的web服务来绘图。用户界面允许您在一个折线图建立查询并显示结果数据点。将JSON发送到REST API也可以显示出结果,因此如果你想直接调用KairosDB对结果进行解析。
CORS
KairosDB支持跨地资源共享。这个主要是js跨域。基本上,可以让你在其他网站上通过JavaScript来访问KairosDB数据。
Compressed Upload
KairosDB支持gzip压缩指标数据。如果你需要上传大量的数据让服务器批量处理,可以用gzip压缩JSON并上传,设置内容类型为application/gzip。
KairosDB 对时间粒度的处理
原来的OpenTSDB项目只处理秒级别的数据。KairosDB重写了该项目,并引进毫秒级别粒度的目标。
为了实现这两个目录,做了下面的处理:
1. Telnet协议接收秒和毫秒级别的时间值。如果时间值小于3,000,000,000,就乘以 1,000所得到毫秒值存入到数据库。
2. REST API只接受毫秒时间值。
3. Cassandra接收并存储毫秒级的时间值。
4. HBase对毫秒级时间值进行处理,除以1,000所得的秒值存入到数据库。