Telegraf&Categraf 主题学习(I)

发布时间 2023-07-22 14:39:16作者: 大元王保保

基于Telegraf的数据收集系统

https://zhuanlan.zhihu.com/p/53376293
https://flashcat.cloud/docs/content/flashcat-monitor/categraf/1-introduction/
https://n9e.github.io/docs/agent/telegraf/
Telegraf监控客户端调研笔记1
https://mp.weixin.qq.com/s/JeBa_YOJdsv_QOlCVDHdtw
Telegraf监控客户端调研笔记2
https://mp.weixin.qq.com/s/alvO9k73wGHJFy5XjvMMsQ

Telegraf是一个用Golang写的开源数据收集Agent,基于插件驱动。本身提供的输入和输出插件非常丰富,当然有需求也可以自行编写(需要重新编译)。
Telegraf主要用于收集时间序列型数据,比如服务器CPU指标、内存指标、各种IoT设备产生的数据等等。

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

1> 数据指标
指标名(Measurement name):指标描述和命名。
标签集合(Tags):Key/Value键值对,可以类比为关系型数据库的键值,常用于快速索引和唯一标识。标签在设计的时候,尽量避免各种数值型,尽量使用有限集合。
字段集合(Fields):Key/Value键值对,包含指标描述的数据类型和值。
时间戳(Timestamp):此条指标数据的时间戳。

2> 有4种类型的插件(Plugins):输入、输出、处理、聚合
输入插件(Inputs):收集各种时间序列性指标,包含各种系统信息和应用信息的插件;
处理插件(Process):当收集到的指标数据流要进行一些简单处理时,比如给所有指标添加、删除、修改一个Tag。只是针对当前的指标数据进行;
聚合插件(Aggregate):聚合插件有别于处理插件,就在于它要处理的对象是某段时间流经该插件的所有数据(所以,每个聚合插件都有一个period设置,只会处理now()-period时间段内的数据),比如取最大值、最小值、平均值等操作;
输出插件(Outputs):收集到的数据,经过处理和聚合后,输出到数据存储系统,可以是各种地方,如:文件、InfluxDB、各种消息队列服务等;

Telegraf的架构设计
https://juejin.cn/post/6994320746616979464

使用 Telegraf 代理收集 Linux VM 的自定义指标

https://learn.microsoft.com/zh-cn/azure/azure-monitor/essentials/collect-custom-metrics-linux-telegraf?tabs=ubuntu
这里画一下架构图就清晰了,把Telegraf 当成工具用

Telegraf 源码阅读笔记:https://ifatrabbit.com/2020/02/28/telegraf-source-code-read-1/
为 telegraf 写插件:https://ifatrabbit.com/2020/02/29/how-to-write-telegraf-plugin-1/