TCollector

TCollector

tcollector is a client-side process that gathers data from local collectors and pushes the data to OpenTSDB. You run it on all your hosts, and it does the work of sending each host‘s data to the TSD.

tcollector是client-side(客户端)进程,收集本地数据,然后推送OPenTSDB。在所有的主机上运行,然后把主机上的数据发送给TSD。

OpenTSDB is designed to make it easy to collect and write data to it. It has a simple protocol, simple enough for even a shell script to start sending data. However, to do so reliably and consistently is a bit harder. What do you do when your TSD server is down? How do you make sure your collectors stay running? This is where tcollector comes in.

OpenTSDB的设计目标是让数据采集以及数据存储变得更容易。其拥有简单的协议,简单得可以支持shell脚本发送数据。但是,如何做到可靠性和一致性是个比较难的事情。当TSD server故障的时候如何处理?如何确保你的collectors保持持续运行?tcollector可以做到这些。

Tcollector does several things for you:

  • Runs all of your data collectors and gathers their data
  • Does all of the connection management work of sending data to the TSD
  • You don‘t have to embed all of this code in every collector you write
  • Does de-duplication of repeated values
  • Handles all of the wire protocol work for you, as well as future enhancements

Tcollector做的几件事情:

  • 运行所有的数据采集程序,并将数据收集起来
  • 做所有发送数据到TSD的连接管理工作
  • 在你自己实现的collector中无需实现这个功能
  • 对于重复的数据会做删除工作
  • 可以处理各种传输协议,包括一些增强版本

Deduplication

Typically you want to gather data about everything in your system. This generates a lot of datapoints, the majority of which don‘t change very often over time (if ever). However, you want fine-grained resolution when they do change. Tcollector remembers the last value and timestamp that was sent for all of the time series for all of the collectors it manages. If the value doesn‘t change between sample intervals, it suppresses sending that datapoint. Once the value does change (or 10 minutes have passed), it sends the last suppressed value and timestamp, plus the current value and timestamp. In this way all of your graphs and such are correct. Deduplication typically reduces the number of datapoints TSD needs to collect by a large fraction. This reduces network load and storage in the backend. A future OpenTSDB release however will improve on the storage format by using RLE (among other things), making it essentially free to store repeated values.

通常情况下,你想采集系统内所有的数据。这将会产生很多的数据点,大部分的数据点在一段时间内是不会变化的。但是,当有变化的时候,你期望平滑(fine-grained solution)的解决方案。Tcollector在一次采集周期内会记录为每个collector记录最后一次值以及采集时间。如果在相同的时间间隔内,值没有变化的话,它会这个数据点暂时保存起来,不发送。一旦数据发送变化(10分钟时间过去),它将发送最后的值以及时间戳,加上当前的值和时间戳。这样的话,你的数据图就是正确的。重复数据删除会减少TSD中数据点的个数,而这些数据点是需要采集的。这样的话,会减少后端的网络开销以及存储。OpenTSD将使用RLE改善存储的格式,使更本质地解决重复数据存储问题。

Collecting lots of metrics with tcollector

Collectors in tcollector can be written in any language. They just need to be executable and output the data to stdout. Tcollector will handle the rest. The collectors are placed in the collectors directory. Tcollector iterates over every directory named with a number in that directory and runs all the collectors in each directory. If you name the directory 60, then tcollector will try to run every collector in that directory every 60 seconds. Use the directory 0 for any collectors that are long-lived and run continuously. Tcollector will read their output and respawn them if they die. Generally you want to write long-lived collectors since that has less overhead. OpenTSDB is designed to have lots of datapoints for each metric (for most metrics we send datapoints every 15 seconds).

If there any non-numeric named directories in the collectors directory, then they are ignored. We‘ve included a lib and etc directory for library and config data used by all collectors.

在tcollector中的Collectors可以支持任何语言。只需要它们是可执行的,并且将输出结果输出到标准输出中。Tcollector会处理这些结果。

这些collectors放在collectors目录下。Tcolletor遍历每个以数字命名的目录,然后运行每个目录下所有的collectors。如果你的目录命名为60,tcollcetor将每60s运行这个目录下每个collector。使用目录0表示是一个常住的进行,一直运行。Tcollector将读取它们的输出,如果进程挂了,tcollector将重启它。通常情况下,你想写一个常住的collecotrs,因为这样开销相对比较小。OpenTSDB设计是针对每个metric有很多数据点,对于大部分的metrics每15s发送一次数据。

如果在collectors中有不是数据命名的目录,将被忽略。同时还包括collectors使用到的lib和etc目录。

Installation of tcollector

You need to clone tcollector from GitHub:

git clone git://github.com/OpenTSDB/tcollector.git

and edit ‘tcollector/startstop‘ script to set following variable: TSD_HOST=dns.name.of.tsd

To avoid having to run mkmetric for every metric that tcollector tracks you can to start TSD with the --auto-metric flag. This is useful to get started quickly, but it‘s not recommended to keep this flag in the long term, to avoid accidental metric creation.

在GitHub上下载相关代码:

git clone git://github.com/OpenTSDB/tcollector.git

【参考资料】

1、http://opentsdb.net/docs/build/html/user_guide/utilities/tcollector.html

2、http://en.wikipedia.org/wiki/Wire_protocol

时间: 2024-10-08 12:12:18

TCollector的相关文章

OpenTSDB 2.3+及TCollector 1.3+安装配置排错

其实不太想用opentsdb,一直以来用influxdb+grafana挺方便的,而且tsdb依赖hbase,虽说容量和速度有保证,但是分布式系统对于一个监控平台来说,终归还是有些重了,出问题定位更繁琐,但领导说用那就用吧. 在这里必须吐一下OpenTSDB和Tcollector的文档更新,太落后,看官方文档根本找不到配置文件的位置.最后还得看源码,尤其是TCollector,这个tsdb官方推出的数据采集器.不光文档落后,除了核心,周边辅助的代码也落后.而且插件方式设计的各种数据收集器太奇葩了

OpenTSDB介绍

OpenTSDB 2.0, the scalable, distributed time series database可扩展.分布式时间序列数据库 1.背景 一些老的监控系统,它常常会出现这样的问题: 1)中心化数据存储进而导致单点故障. 2)有限的存储空间. 3)数据会因为时间问题而变得不准确. 4)不易于定制图形. 5)不能扩展采集数据点到100亿级别. 6)不能扩展metrics到K级别. 7)不支持秒级别的数据. OpenTSDB解决上面的问题: 1.它用hbase存储所有的时序(无须

OpenTSDB-Writing Data

Writing Data You may want to jump right in and start throwing data into your TSD, but to really take advantage of OpenTSDB's power and flexibility, you may want to pause and think about your naming schema. After you've done that, you can procede to p

关于监控系统的一些想法心得

我这篇文章[http://blog.csdn.net/u014654002/article/details/54345381]里写过的kairosdb,那是我开始接触监控系统的第一步,它帮助我了解了时序数据库在监控端的优秀表现. kairosdb算是相当优秀的监控系统存储后端,并且支持使用grafana(一款可视化效果极佳的数据可视化软件)作为数据展示端.同时也支持使用Tcollector(openTSDB专用的数据采集工具,集成了大量的数据采集脚本,覆盖面很广泛)作为数据采集端,并且在我学习k

Python 执行Shell 外部命令

1.os.system()此方法执行的外部程序,会将结果直接输出到标准输出.os.system的返回结果为执行shell 的 $? 值.因此请执行没有输出结果的程序时适合使用此方法.如touch .rm 一个文件等. In [1]: import os In [2]: os.system('touch test.txt') Out[2]: 0 In [3]: os.system('rm -rf test.txt') Out[3]: 0 2.os.popen()此方法结合了os.system和 文

读书笔记-HBase in Action-第三部分应用-(1)OpenTSDB

OpenTSDB是基于HBase的开源监控系统,可以支持上万规模集群监控和上亿数据点采集.其中TSDB代表Time Series Database,OpenTSDB在时间序列数据的存储和查询上都做了相当多的优化工作. 架构Overview 概念上OpenTSDB由三部分组成:tcollector数据采集.tsd数据服务和HBase数据存储. 数据采集流程 如上图,tcollector后台进程运行在每台被监控的服务器上,管理数据收集脚本,定期执行,失败时重启,确保所有的监控数据发送给OpenTSD

TCollect与OpenTSDB的集成

TCollect可以理解为OpenTSDB的数据采集前端,Tcollect负责采集监控数据,并发送到后端的OpenTSDB进行存储. 运行说明: 在进行TCollect的安装前先要确保OpenTSDB的正确安装,安装过程请参考: opentsdb-2.0.1 RPM包的安装以及测试 下载tcollector git clone git://github.com/OpenTSDB/tcollector.git 配置tcollector 修改tcollector/startstop文件 TSD_HO

hbase+opentsdb 单机版搭建

2018年2月19日星期一 Lee 这个实验步骤比较简单,只能用来演示下搭建过程,实际生产环境复杂的很多. 实验环境: centos6.5 x86_64IP: 10.0.20.25 这里实验没有用HDFS,生产环境的话,hbase还是要把数据存到hdfs上比较安全的. 1. 安装单机zookeeper cd /root/tar xf zookeeper-3.4.8.tar.gz -C ./mv zookeeper-3.4.8 /opt/zk cd /opt/zkcat conf/zoo.cfg

Linux 加油站

Ansible中文权威指南鸟哥的linux私房菜AWK使用手册Centos的epel源下载Ceph国内社区ChinaUnix运维文库Confluence和Jira中文演示站点Django基础教程Docker-https://hub.docker.comDocker官方镜像下载Docker基础学习Docker教程-从入门到实践Docker中文社区Gitlab中文官方网站Git基础教程Hadoop运维参考HTTP Status CodesKubernetes中文文档Linux公社Linux命令大全L