官网地址:http://opentsdb.net/

下载地址:https://github.com/OpenTSDB/opentsdb/releases

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

OpenTSDB如何工作?

OpenTSDB由时间序列守护进程(TSD)和一组命令行实用程序组成。与OpenTSDB的交互主要通过运行一个或多个TSD来实现。每个TSD都是独立的。没有主服务器,没有共享状态,因此您可以根据需要运行尽可能多的TSD来处理您向其投入的任何负载。每个TSD都使用开源数据库 HBase或托管Google Bigtable服务以存储和检索时间序列数据。数据模式经过高度优化,可快速聚合相似的时间序列,从而最大限度地减少存储空间。TSD的用户永远不需要直接访问底层商店。您可以通过简单的telnet风格协议,HTTP API或简单的内置GUI与TSD进行通信。所有通信都发生在同一个端口上(TSD通过查看它接收的前几个字节来确定客户端的协议)。

opentelemetry官网 opendtect官网_ui

 

openTSDB架构

Servers:就是服务器了,上面的C就是指Collector,可以理解为OpenTSDB的agent,通过Collector收集数据,推送数据;

TSD:TSD是对外通信的无状态的服务器,Collector可以通过TSD简单的RPC协议推送监控数据;另外TSD还提供了一个web UI页面供数据查询;另外也可以通过脚本查询监控数据,对监控数据做报警

HBase:TSD收到监控数据后,是通过AsyncHbase这个库来将数据写入到HBase;AsyncHbase是完全异步、非阻塞、线程安全的Hbase客户端,使用更少的线程、锁以及内存,可以提供更高的吞吐量,特别对于大量的写操作。

 

 

写作

使用OpenTSDB的第一步是将时间序列数据发送到TSD。存在许多 工具来将来自各种源的数据提取到OpenTSDB中。如果找不到满足需求的工具,则可能需要编写从系统中收集数据的脚本(例如,通过从/procLinux上读取有趣的指标,通过SNMP从网络设备收集计数器,或者从应用程序中收集其他有趣的数据) ,通过JMX,例如Java应用程序)并定期将数据点推送到其中一个TSD。

StumbleUpon编写了一个名为Python的框架 tcollector ,用于从Linux 2.6,Apache的HTTPd,MySQL,HBase,memcached,Varnish等中收集数千个指标。这个低影响力的框架包括许多有用的收藏家,社区不断提供更多。支持OpenTSDB的替代框架包括Collectd,Statsd和Coda Hale指标发射器。

在OpenTSDB中,时间序列数据点包括:

度量标准名称。

UNIX时间戳(自Epoch以来的秒数或毫秒数 )。

值(64位整数或单精度浮点值),JSON格式的事件或直方图/摘要。

一组标记(键值对),用于描述该点所属的时间序列。

标签允许您从不同的源或相关实体中分离出类似的数据点,因此您可以轻松地单独或成组地绘制它们。标签的一个常见用例包括使用生成它的机器的名称以及机器所属的集群或池的名称来注释数据点。这使您可以轻松地制作仪表板,以便在每个服务器的基础上显示服务状态,以及显示跨逻辑服务器池的聚合状态的仪表板。

mysql.bytes_received 1287333217 327810227706 schema = foo host = db1  
   
 
   mysql.bytes_sent 1287333217 6604859181710 schema = foo host = db1  
   
 
   mysql.bytes_received 1287333232 327812421706 schema = foo host = db1  
   
 
   mysql.bytes_sent 1287333232 6604901075387 schema = foo host = db1  
   
 
   mysql.bytes_received 1287333321 340899533915 schema = foo host = db2  
   
 
   mysql.bytes_sent 1287333321 5506469130707 schema = foo host = db2

此示例包含属于4个不同时间序列的6个数据点。度量标准和标记的每个不同组合构成不同的时间序列。所有4个时间序列都是针对两个指标之一 mysql.bytes_received或mysql.bytes_sent。数据点必须至少有一个标记,并且度量标准的每个时间序列应具有相同数量的标记。不建议每个数据点具有超过6-7个标签,因为与存储新数据点相关的成本很快就会超过该点之外的标签数量。

使用上面示例中的标记,可以轻松创建图形和仪表板,以在每个主机和/或每个模式的基础上显示MySQL的网络活动。OpenTSDB 2.0的新功能是能够存储非数字注释以及用于跟踪元数据,质量指标或其他类型信息的数据点。

时间序列数据通常以折线图的格式消耗。因此,OpenTSDB提供了一个内置的简单用户界面,用于选择一个或多个指标和标签,以生成图形作为图像。或者,可以使用HTTP API将OpenTSDB绑定到外部系统,例如监视框架,仪表板,统计包或自动化工具。

值得注意的变化:

  • 设置聚合器时,前进到等于或大于查询开始时间戳的第一个数据点。这有助于日历下采样间隔。
  • 添加对Nagios检查脚本的支持,以便对填充策略进行下采样。

Bug修复:

  • 通过避免双重执行并检查两种输出类型的布尔值来修复表达式计算。
  • 修复构建中缺少的工具脚本。
  • OSX安装脚本中的默认HBase 1.2.5
  • 将AsyncBigtable升级到0.3.1
  • 意外关闭通道时记录查询统计信息。
  • 在debian init脚本中添加Java 8路径并删除Java 6。
  • 将列系列名称传递给压缩调度程序中的get请求。
  • 在按标签分组的UI中修复比较问题。
  • 按开始时间戳过滤注释查询,不包括在查询开始时间之前开始的行中的注释查询。
  • 从Gnuplot脚本中清除反引号的微小主旨。
  • final从元类中删除注释,以便可以扩展它们。
  • 修复javacc maven插件版本。
  • 修复文字或过滤器以允许单个字符过滤器。
  • 修复查询开始统计日志记录以使用ms而不是nano时间。
  • 出于安全原因,将Jackson和Netty移至新版本。
  • 升级到AsyncHBase 1.8.2以与HBase 1.3和2.0兼容
  • 修复最高电流计算以处理空时间序列。
  • 将缓存命中计数器更改为long。