首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基于Telegraf的数据收集系统

Telegraf是一个用Golang写的开源数据收集Agent,基于插件驱动。本身提供的输入和输出插件非常丰富,当然有需求也可以自行编写(需要重新编译)。Telegraf是influxdata公司的时间序列平台TICK技术栈中的“T”,主要用于收集时间序列型数据,比如服务器CPU指标、内存指标、各种IoT设备产生的数据等等。后面抽空会介绍TICK栈中的其他技术及其应用。

1. 核心概念

Telegraf工作原理大概是这样:定时去执行输入插件收集数据,数据经过处理插件和聚合插件,批量输出到数据存储。

1> 数据指标(Metrics)

指标名(Measurement name):指标描述和命名。

标签集合(Tags):Key/Value键值对,可以类比为关系型数据库的键值,常用于快速索引和唯一标识。标签在设计的时候,尽量避免各种数值型,尽量使用有限集合。

字段集合(Fields):Key/Value键值对,包含指标描述的数据类型和值。

时间戳(Timestamp):此条指标数据的时间戳。

2> 插件(Plugins)

Telegraf有四种类型的插件:

输入插件(Inputs):收集各种时间序列性指标,包含各种系统信息和应用信息的插件。

处理插件(Process):当收集到的指标数据流要进行一些简单处理时,比如给所有指标添加、删除、修改一个Tag。只是针对当前的指标数据进行。

聚合插件(Aggregate):聚合插件有别于处理插件,就在于它要处理的对象是某段时间流经该插件的所有数据(所以,每个聚合插件都有一个设置,只会处理时间段内的数据),比如取最大值、最小值、平均值等操作。

输出插件(Outputs):收集到的数据,经过处理和聚合后,输出到数据存储系统,可以是各种地方,如:文件、InfluxDB、各种消息队列服务等等。

一般在使用的时候,关注Inputs和Outputs会比较多。

2. 简单用法

快速生成配置并启动

查看输出

输入测试

3. 常用插件

Telegraf所有插件都对应配置中的一段,下面快速了解一下常用的几个插件,详情查看Github主页,介绍的非常全面,用到时再详情了解也不迟。

常用输入插件

:系统CPU信息,如用户态和系统态利用率等等。

:系统内存信息,如物理、虚拟、交换内存量等等。

:磁盘占用信息。

:磁盘IO性能。

和:网卡和网络信息。

:当前系统负载信息,类似信息。

:每个时间周期读取文件所有信息。

:收集满足条件的进程信息,包含进程CPU占用、内存占用等信息。

:定时执行某个可执行文件,可执行文件根据要求输出到标准输出即可。

常用输出插件

:输出到InfluxDB。

:输出到文件。

:输出到某个HTTP服务器。

4. 常见需求

1> 同种类型的输入和输出插件可以配置多个吗?

可以支持!比如:可以根据命名规则把不同的指标,写到不同influxdb里面。

2> 所有指标都打一个相同的标签怎么做?

方法一:telegraf.conf里面段里面直接配置。

方法二:telegraf.conf里面段里面配置环境变量。此方法意义非常大,这样运维同学在部署好环境的时候,设置好环境变量,telegraf.conf保持一份即可。

方法三:使用process插件

3> 自己怎么写插件?

有需求,先看官方提供的插件是否能满足需求,实在不行就自行开发,也很简单。说来话长,改日再聊。自行编译通过先:

5. 参考资料

https://docs.influxdata.com/telegraf

https://github.com/influxdata/telegraf

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181226G1J56F00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券