TCollector

tcollector是一个 Client 端进程,它从本地收集器收集数据并将数据推送到 OpenTSDB。您可以在所有主机上运行它,并完成将每个主机的数据发送到 TSD 的工作。

OpenTSDB 旨在简化收集和向其中写入数据的过程。它具有一个简单的协议,即使对于 shell 脚本来说,也足够简单以开始发送数据。但是,要可靠且始终如一地执行此操作比较困难。 TSD 服务器关闭时该怎么办?您如何确保收藏家保持运转?这是 tcollector 进入的地方。

Tcollector 为您做几件事:

Deduplication

通常,您想收集有关系统中所有内容的数据。这会生成许多数据点,其中大多数数据点不会随时间变化(如果有的话)。但是,当它们确实改变时,您需要细粒度的分辨率。 Tcollector 会为它 Management 的所有收集器记住在所有时间序列中发送的最后一个值和时间戳。如果该值在采样间隔之间没有变化,它将禁止发送该数据点。值确实发生更改(或已过 10 分钟)后,它将发送最后一个抑制值和时间戳,以及当前值和时间戳。这样,您的所有图形等都是正确的。重复数据删除通常会大大减少 TSD 需要收集的数据点数量。这样可以减少后端的网络负载和存储。但是,将来的 OpenTSDB 版本将通过使用 RLE(除其他功能外)改善存储格式,从而使其基本上可以自由存储重复值。

使用 tcollector 收集大量 Metrics

tcollector 中的收集器可以用任何语言编写。它们只需要可执行文件并将数据输出到 stdout。 Tcollector 将处理其余的工作。收集器放置在collectors目录中。 Tcollector 遍历该目录中以数字命名的每个目录,并运行每个目录中的所有收集器。如果将目录命名为60,则 tcollector 将尝试每 60 秒运行该目录中的每个收集器。支持的最短间隔是 15 秒,对于小于 15 秒的间隔,应在 0 文件夹中使用运行时间较长的收集器。每次运行收集器之后,TCollector 都会休眠 15 秒,因此 15 秒的间隔是唯一实际支持的间隔。例如,这将允许您每 15、30、45、60、75 或 90 秒运行收集器,但不能运行 80 或 55 秒。将目录0用于长期且连续运行的所有收集器。 Tcollector 将读取它们的输出,并在死亡时重新生成它们。通常,您要编写寿命长的收集器,因为这样做开销较小。 OpenTSDB 旨在为每个度量标准包含大量数据点(对于大多数度量标准,我们每 15 秒发送一次数据点)。

如果collectors目录中有任何非数字命名目录,则将忽略它们。我们为所有收集器使用的库和配置数据提供了一个libetc目录。

安装 tcollector

您需要从 GitHub 克隆 tcollector:

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

并编辑“ tcollector/startstop”脚本以设置以下变量:TSD_HOST=dns.name.of.tsd

为了避免必须为 tcollector 跟踪的每个 Metrics 运行mkmetric,可以使用--auto-metric标志启动 TSD。这对于快速入门很有用,但不建议长期保留此标志,以免意外创建 Metrics。

与 tcollectorBinding 在一起的收集器

以下是我们作为基本软件包的一部分包含的收集器,以及它们报告的所有度量标准名称及其含义。如果您有其他想要贡献的内容,我们很乐意听到有关它们的信息,因此我们可以参考它们,或在您的许可下将它们包含在将来的发行版中。

General collectors

0/dfstat.py

这些统计信息与/usr/bin/df util 提供的统计信息相似。

这些 Metrics 包括用每个安装点标记的时间序列以及文件系统的 fstype。该收集器会过滤掉所有 cgroup,debugfs,devtmpfs,rpc_pipefs,rootfs 文件系统,以及在/dev//sys//proc//lib/下装载的任何安装点。

使用这些标记,您可以选择仅绘制特定文件系统的图形,或绘制具有特定 fstype(例如 ext3)的所有文件系统的图形。

0/ifstat.py

这些统计资料来自/proc/net/dev

这些是接口计数器,标有接口iface=direction= in 或 out。仅跟踪ethN接口。我们有意排除bondN接口,因为绑定接口仍在其子ethN接口上保留计数器,并且如果您未在iface=上选择,我们也不想重复计算一个盒子的网络流量。

0/iostat.py

数据来自/proc/diskstats

See iostats.txt

/proc/diskstats具有给定物理设备的 11 个统计信息。除了ios_in_progress,这些都是速率计数器。

.read_requests       Number of reads completed
.read_merged         Number of reads merged
.read_sectors        Number of sectors read
.msec_read           Time in msec spent reading
.write_requests      Number of writes completed
.write_merged        Number of writes merged
.write_sectors       Number of sectors written
.msec_write          Time in msec spent writing
.ios_in_progress     Number of I/O operations in progress
.msec_total          Time in msec doing I/O
.msec_weighted_total Weighted time doing I/O (multiplied by ios_in_progress)

在 2.6.25 及更高版本中,报告的分区统计信息与磁盘相同。

Note

在 2.6.25 之前的 2.6 中,分区每个分区只有 4 个统计信息

.read_issued
.read_sectors
.write_issued
.write_sectors

对于分区,这些*_issued是合并请求之前收集的计数器,因此与*_requests不同(后者是合并后的,更紧密地表示磁盘事务的实际数量)。

鉴于 diskstats 同时提供了每个磁盘和每个分区的数据,出于 TSDB 的目的,我们将它们置于不同的 Metrics 下(与相同的 Metrics 和标签不同)。否则,如果您查看给定的度量标准,则给定框的数据将被重复计算,因为给定的操作将同时增加磁盘系列和分区系列。为了解决这个问题,我们将磁盘数据输出到iostat.disk.*,将分区数据输出到iostat.part.*

0/netstat.py

套接字分配和网络统计信息。

来自/proc/net/sockstat的 Metrics。

来自/proc/net/netstat(netstat -s命令)的 Metrics。

0/nfsstat.py

这些统计资料来自/proc/net/rpc/nfs

它标记了操作类型( type =)。有 3 种操作:authrefrsh-刷新身份验证信息的次数,calls-进行呼叫的次数,以及retrans-重传的次数

它标记了执行操作的 NFS 服务器的版本(version=)和操作名称(op=)

有关操作的说明,请参见相应的 RFC:NFS 版本。 3 RFC1813,NFS 版本。 4 RFC3530,NFS 版本。 4.1 RFC5661

0/procnettcp.py

这些统计资料全部来自/proc/net/tcp{,6}。 (请注意,如果启用了 IPv6,某些 IPv4 连接似乎已放入/proc/net/tcp6)。收集器在两次间隔之间睡眠 60 秒。部分原因是较旧内核的内核性能问题,部分是由于具有许多 TCP 连接的系统,此收集器有时可能需要 5 分钟或更长时间才能运行一个时间间隔,因此数据点的频率可能会因系统而异。

对于收集器的每次运行,我们对每个连接进行分类并生成小计。 TSD 将在显示图形时自动总计这些总计,但是您可以向下钻取每个可能的总计或特定总计。每个连接都使用user=username标记进行细分(带有我们关注的固定用户列表,或者如果不在列表中,则将其置于“其他”之下)。它还用state=分解为状态(构建,time_wait 等)。它也可以通过\ service =</code>(http,mysql,memcache 等)分解为服务。请注意,一旦关闭连接,Linux 似乎会忘记谁打开/处理了连接。例如,对于 time_wait 中的连接,它们将始终显示 user = root。该收集器确实会生成大量数据点,因为点数为(S (U 1) V),其中 S = TCP 状态数,U =您跟踪的用户数和 V =服务数(端口集合)。重复数据删除程序确实可以很好地消除这种情况,因为通常只看到 10 个 TCP 状态中的 3 个。在典型的服务器上,每个间隔可以减少到 10 个以下的值。

0/procstats.py

来自/proc的其他统计信息。

See http://www.linuxhowtos.org/System/procstat.htm

0/smart-stats.py

来自 SMART 磁盘的统计信息。

Metrics 的描述可以在聪明。维基百科上的文章找到。理解/查找度量标准的最佳方法是查看生产者的规格。

Other collectors

0/couchbase.py

来自 couchbase(面向文档的 NoSQL 数据库)的统计信息。

所有 Metrics 均标有相关存储区的名称(bucket=)。存储桶是 Couchbase 服务器群集内物理资源的逻辑分组。群集中的多个 Client 端应用程序可以使用它们。存储桶提供了一种用于组织,Management 和分析数据存储资源的安全机制。

有关 Metrics 的描述,请参考以下文档:Cbstats documentation

0/elasticsearch.py

来自 Elastic Search(搜索和分析引擎)的统计信息。

有关 Metrics 的描述,请参考以下文档:ElasticSearch 集群 API

0/hadoop_datanode_jmx.py

来自 Hadoop 的统计信息(用于分布式处理的框架),DataNode 统计信息。

默认情况下,收集器会禁用以下 Metrics:修订,hdfsUser,hdfsDate,hdfsUrl,日期,hdfsRevision,用户,hdfsVersion,URL,版本,NamenodeAddress,Version,RpcPort,HttpPort,CurrentThreadCpuTime,CurrentThreadUserTime,StorageInfo,VolumeInfo。

有关 Metrics 的描述,请参考以下文档:HBase metrics

0/haproxy.py

来自 Haproxy 的统计信息(TCP/HTTP 负载平衡器)。

所有 Metrics 都标记有服务器(server=)和群集(cluster=)。

有关度量标准描述,请参见以下文档:Haproxy configuration#9.2.Unix Socket 命令

0/hbase_regionserver_jmx.py

来自 Hadoop 的统计信息(用于分布式处理的框架),RegionServer 统计信息。

默认情况下,收集器会禁用以下度量标准:修订,hdfsUser,hdfsDate,hdfsUrl,日期,hdfsRevision,用户,hdfsVersion,URL,版本,版本,RpcPort,HttpPort,HeapMemoryUsage,NonHeapMemoryUsage。

有关 Metrics 的描述,请参考以下文档:HBase metrics

0/mongo.py

来自 Mongo 的统计信息(文档 NoSQL 数据库)。

有关 Metrics 的描述,请参考以下文档:Mongo DB 服务器状态

0/mysql.py

来自 MySQL(关系数据库)的统计信息。

有关度量标准描述,请参考以下文档:InnoDB Innodb monitors,Global Show status,Engine Show engine,Slave 显示奴隶状态,Process 列表显示流程清单

0/postgresql.py

PostgreSQL(关系数据库)的统计信息。

有关 Metrics 的描述,请参考以下文档:PostgreSQL 监视统计信息

0/redis-stats.py

来自 Redis(键值存储)的统计信息。

有关 Metrics 的描述,请参考以下文档:Redis 信息命令

0/riak.py

Riak 的统计信息(文档 NoSQL 数据库)。

有关 Metrics 的描述,请参考以下文档:Riak statistics

0/varnishstat.py

来自 Varnish(HTTP 加速器)的统计信息。

默认情况下,所有收集的 Metrics 都可以通过编辑收集器的“ vstats”数组来更改。

有关度量标准的描述,请参考以下文档:运行“ varnishstat -l”列出可用的度量标准。

0/zookeeper.py

Zookeeper 的统计信息(集中式服务,用于分布式同步)。

有关 Metrics 的描述,请参考以下文档:ZookeeperManagement 员命令

首页