KairosDB 监控系统介绍

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所得的秒值存入到数据库。