Telegraf 入门指南
作者: Josh Powers / 用例, 产品, 开发者, 入门指南
2021 年 10 月 21 日
导航至
Telegraf 是一个插件驱动的代理,用于收集、处理、聚合和写入指标和事件。Telegraf 以单个二进制文件形式发布,没有外部依赖项,以最小的占用空间运行,并具有支持许多流行服务的插件系统。
Telegraf 用于从其运行的系统、应用程序、远程物联网设备和许多其他输入中收集指标。Telegraf 还可以捕获来自事件驱动操作的数据。处理后,Telegraf 可以将指标和事件发送到各种数据存储、服务和消息队列。
插件
Telegraf 包含 300 多个即用型插件。用户启用和配置其特定用例所需的任何插件。
下面简要介绍 Telegraf 可以从中收集指标的输入以及 Telegraf 可以将指标发送到的输出
输入
输入插件适用于 200 多种不同的输入。以下是一些可用插件类别的示例
- 应用程序: 与 Apache Kafka、MongoDB、MySQL、PostgreSQL、Apache Web Server、NGINX、postfix 和许多其他应用程序交互。
- 云: 连接 Amazon CloudWatch、Amazon ECS、Azure Storage Queue、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 |
还有 RPM 和 DEB 软件包可用于 Linux 下载的子集。
所有 Telegraf 下载都在发布页面上提供。还有一个官方 telegraf DockerHub 镜像可用于容器部署。
配置文件
有了 Telegraf,下一步是为 Telegraf 提供一个配置文件,其中概述了启用了哪些插件以及如何配置它们。配置文件是 TOML 格式的文件。
这是一个非常简单的配置文件,它启用了各种系统指标的收集,并使用文件输出输出指标
[[inputs.cpu]]
[[inputs.disk]]
ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]
[[inputs.mem]]
[[inputs.net]]
[[outputs.file]]
此示例启用 CPU、磁盘、内存和网络输入以及文件输出。
生成配置文件
config 子命令可以生成一个 telegraf 配置文件,其中注释掉了所有可能的插件和配置选项,以帮助用户快速入门
telegraf config > telegraf.conf
然后,用户可以使用此文件查看所有可能的插件和配置选项。然后,用户可以取消注释所需的任何输入和输出。
有关配置文件以及使用环境变量的详细信息,请参阅配置文档页面。
使用 Telegraf
这是一个简短的示例,说明如何收集有关本地系统的指标并将这些输出发送到文件。此示例将使用 CPU、内存、磁盘和网络输入并输出到文件。
配置
首先,生成一个仅包含特定输入和输出的配置文件。config 子命令可以采用过滤器来减小大小,并且仅输出所需的部分。以下命令将生成一个配置文件,其中仅包含此示例使用的四个输入和一个输出
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 行协议和 /tmp/metrics.out
打印到 stdout,这两者都可以配置为其他输出类型或位置。
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 帮助您收集指标!