Telegraf 入门指南
作者:Josh Powers / 用例,产品,开发者,入门
2021年10月21日
导航至
Telegraf 是一个插件驱动的代理,用于收集、处理、聚合和写入指标和事件。Telegraf 作为单个二进制文件提供,没有外部依赖,具有最小的占用空间和插件系统,支持许多流行的服务。
Telegraf 用于从其运行的系统、应用程序、远程物联网设备和其他输入收集指标。Telegraf 还可以捕获事件驱动的操作的数据。一旦处理完成,Telegraf 可以将指标和事件发送到各种数据存储、服务和消息队列。
插件
Telegraf 内置了超过 300 个可用的插件。用户可以根据其特定的用例启用和配置所需的插件。
以下是 Telegraf 可以收集指标的输入和可以发送指标到输出的介绍
输入
可用的输入插件超过 200 个。以下是可用的几个插件类别的示例
- 应用程序:与 Apache Kafka、MongoDB、MySQL、PostgreSQL、Apache Web 服务器、NGINX、postfix 等进行交互。
- 云:连接到 Amazon CloudWatch、Amazon ECS、Azure 存储队列、Google Cloud PubSub、Salesforce、VMware vSphere 等。
- 容器:检查 Kubernetes 集群、Docker 等。
- 硬件:收集系统 CPU、内存、网络和磁盘利用率的信息。Redfish 和 IPMI 允许直接从硬件收集指标。
- 物联网:从通用传感器、IPMI、KNX、MQTT 等其他物联网传感器项目中收集。
- 通用:文件、tail、listener、poller、exec 和 execd 插件提供通用的机制来收集可能未涵盖的指标。
要查看所有可用的输入插件列表,请访问文档网站上输入插件列表。
输出
输出插件定义了 Telegraf 将将收集的指标发送到何处。
这样的输出之一是 InfluxDB,这是一个开源的时间序列数据库,非常适合操作监控、应用指标、物联网传感器数据和实时分析。InfluxDB提供了一个存储收集的指标的地方,并能够在指标上绘图和发出警报。InfluxDB以云服务的形式提供,也可以下载用于本地运行。因此,InfluxDB是收集Telegraf收集的指标的理想输出。
其他示例输出包括将指标发送到Apache Kafka、Amazon CloudWatch、Datadog、文件或通过AMPQ等。有关超过50个可用输出插件的完整列表,请查看文档网站上的输出插件列表。
处理器和聚合器
Telegraf还有处理器和聚合器的概念。这些插件允许在收集数据并在将其发送到输出之前对其进行处理和分组。如果用户希望收集平均值、向数据添加特定标签或过滤某些数据,这可能会很有帮助。
下载
Telegraf可在多种操作系统和架构上下载。Telegraf作为一个单一的二进制文件,没有外部依赖项,使其在所有地方部署变得非常容易。
包含构建二进制的存档文件可以在Microsoft Windows、Linux、OS X、FreeBSD和各种系统架构上轻松获取。用户可以将Telegraf集成到物联网设备中,如Raspberry Pi、路由器和传感器,以及到巨大的IBM Power和s390x大型机,以及服务器、PC或云实例。
操作系统 | 支持的架构 |
Linux | amd64, arm64, armv5, armv6, i386, mips, mipsle, ppc64le, s390x |
Microsoft Windows | amd64, i386 |
OS X | amd64 |
FreeBSD | amd64, i386, armv7 |
还有针对Linux下载子集的RPM和DEB包可用。
所有Telegraf的下载均可在发布页面找到。还有一个官方的telegrafDockerHub镜像,适用于容器部署。
配置文件
有了Telegraf,下一步是提供一个配置文件,以说明启用了哪些插件以及如何配置它们。配置文件是一个TOML格式的文件。
以下是一个非常简单的配置文件,它启用了收集各种系统指标,并使用文件输出输出指标。
[[inputs.cpu]]
[[inputs.disk]]
ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]
[[inputs.mem]]
[[inputs.net]]
[[outputs.file]]
此示例启用了CPU、磁盘、内存和网络输入以及文件输出。
生成配置文件
配置子命令可以生成一个Telegraf配置文件,其中所有可能的插件和配置选项均已注释,以帮助用户快速开始。
telegraf config > telegraf.conf
然后用户可以使用此文件查看所有可能的插件和配置选项。然后,用户可以取消注释所需的所有输入和输出。
有关配置文件以及使用环境变量的详细信息,请参阅配置文档页面。
使用Telegraf
以下是一个简要示例,说明收集有关本地系统的指标并将这些输出发送到文件。此示例将使用CPU、内存、磁盘和网络输入并将输出输出到文件。
配置
首先,生成一个只包含所需特定输入和输出的配置文件。配置子命令可以接受过滤器以减小文件大小并仅输出所需的章节。以下示例将生成一个包含四个输入和一个输出的配置文件
telegraf --input-filter cpu:mem:disk:net --output-filter file \
--aggregator-filter : --processor-filter : \
config > system-metrics.toml
用户可以使用冒号(例如 cpu:memory:disk
)分隔多个插件,如果不需要特定类型的插件来省略该章节,可以使用单个冒号(例如 :
)。
在此阶段,如果某个插件需要额外的配置,如凭证、主机名或其他修改,用户可以编辑文件以添加这些设置。
执行
要运行 Telegraf,将其指向配置文件并运行
$ telegraf --config system-metrics.conf
2021-09-14T16:58:25Z I! Starting Telegraf 1.20.0
2021-09-14T16:58:25Z I! Loaded inputs: cpu disk mem net
2021-09-14T16:58:25Z I! Loaded aggregators:
2021-09-14T16:58:25Z I! Loaded processors:
2021-09-14T16:58:25Z I! Loaded outputs: file
2021-09-14T16:58:25Z I! Tags enabled: host=nexus
2021-09-14T16:58:25Z I! [agent] Config: Interval:10s, Quiet:false, Hostname:"nexus", Flush Interval:10s
disk,device=sda2,fstype=ext4,host=nexus,mode=rw,path=/ inodes_used=117039i,total=244529823744i,free=224543232000i,used=7494070272i,used_percent=3.2296834166841246,inodes_total=15237120i,inodes_free=15120081i 1631638710000000000
disk,device=sda1,fstype=vfat,host=nexus,mode=rw,path=/boot/efi inodes_used=0i,total=535805952i,free=530321408i,used=5484544i,used_percent=1.0236063969666391,inodes_total=0i,inodes_free=0i 1631638710000000000
net,host=nexus,interface=enp0s25 err_out=0i,drop_in=35774i,drop_out=0i,bytes_sent=36403085i,bytes_recv=27820439i,packets_sent=122460i,packets_recv=105161i,err_in=0i 1631638710000000000
mem,host=nexus active=505004032i,high_free=0i,shared=1593344i,high_total=0i,inactive=288256000i,mapped=142225408i,low_total=0i,swap_total=4294963200i,used=215592960i,available_percent=94.0998533929871,committed_as=711008256i,swap_free=4294963200i,vmalloc_chunk=0i,write_back_tmp=0i,commit_limit=8400543744i,low_free=0i,sreclaimable=61390848i,page_tables=2625536i,vmalloc_total=35184372087808i,vmalloc_used=14512128i,cached=707207168i,free=7237840896i,huge_pages_total=0i,huge_pages_free=0i,huge_page_size=2097152i,slab=126316544i,swap_cached=0i,used_percent=2.625607391507568,buffered=50524160i,dirty=49152i,write_back=0i,total=8211165184i,available=7726694400i,sunreclaim=64925696i 1631638710000000000
net,host=nexus,interface=all icmp_outredirects=0i,icmpmsg_intype9=159i,udp_sndbuferrors=0i,udp_noports=0i,udplite_noports=0i,udplite_inerrors=0i,icmp_incsumerrors=0i,icmp_outerrors=0i,udplite_indatagrams=0i,tcp_estabresets=1i,tcp_outsegs=116186i,icmp_indestunreachs=2i,icmp_outtimestampreps=0i,tcp_insegs=51398i,tcp_currestab=2i,udp_indatagrams=70i,ip_outdiscards=0i,ip_forwarding=2i,icmp_outechoreps=0i,icmp_outtimeexcds=0i,udp_incsumerrors=0i,ip_indelivers=52105i,icmp_outechos=0i,icmp_intimestamps=0i,tcp_inerrs=0i,icmp_outparmprobs=0i,tcp_rtomin=200i,tcp_incsumerrors=0i,udp_inerrors=0i,udplite_outdatagrams=0i,udplite_rcvbuferrors=0i,ip_fragfails=0i,icmp_inaddrmasks=0i,ip_reasmreqds=0i,tcp_activeopens=134i,ip_reasmoks=0i,icmp_intimestampreps=0i,tcp_outrsts=10i,ip_reasmfails=0i,ip_inhdrerrors=0i,tcp_rtoalgorithm=1i,icmp_inechoreps=0i,icmp_outmsgs=2i,ip_outrequests=114218i,icmp_outdestunreachs=2i,tcp_attemptfails=2i,tcp_retranssegs=8i,ip_forwdatagrams=0i,ip_inunknownprotos=0i,icmp_outaddrmasks=0i,icmp_inechos=0i,icmp_outsrcquenchs=0i,udp_ignoredmulti=476i,udp_outdatagrams=71i,udplite_sndbuferrors=0i,ip_outnoroutes=4i,icmp_insrcquenchs=0i,udplite_ignoredmulti=0i,ip_indiscards=0i,icmp_inmsgs=161i,icmpmsg_outtype3=2i,ip_inreceives=52105i,ip_reasmtimeout=0i,udp_rcvbuferrors=0i,ip_defaultttl=64i,icmp_inparmprobs=0i,udplite_incsumerrors=0i,icmp_intimeexcds=0i,icmp_inaddrmaskreps=0i,ip_inaddrerrors=0i,icmp_inerrors=159i,icmp_inredirects=0i,icmp_outtimestamps=0i,icmpmsg_intype3=2i,tcp_maxconn=-1i,ip_fragoks=0i,ip_fragcreates=0i,tcp_rtomax=120000i,icmp_outaddrmaskreps=0i,tcp_passiveopens=4i 1631638710000000000
从顶部开始,显示正在运行的 Telegraf 版本和所有加载的插件。用户首先会看到配置文件中指定的加载的输入和输出列表。
接下来是标签和代理特定的配置值。
最后一行是指标本身。使用 文件输出插件,随着指标被收集,这些指标的输出将以 InfluxDB 行协议格式打印到 stdout 和 /tmp/metrics.out
,这两个都可以配置为其他输出类型或位置。
InfluxDB 行协议
上述情况下指标的输出是以称为 行协议 的格式。行协议是 InfluxDB 使用的协议,它显示了 Telegraf 如何收集和解析数据,因此它可以由多个输出之一使用。
格式包括一个指标名称、标签集、字段集和由换行符分隔的时间戳。以下是对各项的分解
- measurement: 必要的,指标本身的名称
- tags: 可选的,包含关于指标字符串元数据的键值对。InfluxDB 将索引这些值。
- fields: 至少需要一个,包含键值对。这些是实际的指标数据。
- timestamp: 可选的 Unix 时间戳表示数据点。如果行不包含时间戳,则通常使用当前系统时间。
以下是行协议的正则表达式
measurement(,tag_key=tag_val)* field_key=field_val(,field_key_n=field_value_n)* (nanoseconds-timestamp)?
今天试试 Telegraf
查看收集和存储指标的完整列表 输入插件 和 输出插件,下载 Telegraf,让 Telegraf 帮助您收集指标!