Telegraf 1.18.0 新功能:Beat、Directory、NFS、XML、Sensu、SignalFX 及更多!
作者:Samantha Wang / 用例, 产品, 开发者
2021 年 3 月 24 日
导航至
上周我们发布了 Telegraf 1.18,其中包含一系列新插件,包括 Elastic Beats、目录监控、NFS、XML 解析 以及一些聚合器和处理器,以帮助您进行数据摄取。所有这些包均使用 Go 1.16.2 编写。
这是我们一段时间以来最大的版本之一,如果没有 70 多位 Telegraf 社区成员 的贡献,编写插件、修复错误、审查代码以及为改进 Telegraf 所做的一切都无法完成!
以下快速了解我们在 Telegraf 1.18 中推出的一些新插件和功能。
如何使用 Telegraf 监控您的 NFS 设备
NFS(网络文件系统) 由 Sun Microsystems 于 1984 年设计。NFS 是一种分布式文件系统协议,允许客户端计算机上的用户通过网络访问文件,就像访问本地存储文件一样。
Telegraf NFS 客户端输入插件 收集 NFS 客户端 每个挂载统计信息 (/proc/self/mountstats
) 数据。默认情况下,仅收集有限数量的通用系统级 指标,包括基本的读取/写入计数、操作期间交换的总字节数、处理操作所花费的毫秒数以及操作的往返时间。根据插件中的配置设置,您可能会检索有关 NFS 操作的 其他指标。
NFS 插件一直是 Telegraf 社区的要求,因此非常感谢 Telegraf 社区成员 @pmoranga 将插件的最终版本完成并纳入我们的 1.18 版本。
如何使用 Telegraf 监控您的 Elastic beat 实例
Elastic beats 是轻量级数据传输器,由 Filebeat、Kafkabeat、Metricbeat 等组成。Telegraf Beat 输入插件 提供了收集 Beat 实例指标的功能。该插件收集 Beats 元数据、读取/写入错误、内存使用情况以及 更多 信息,具体取决于您正在监控的 beat 类型。
感谢 Telegraf 社区成员 Nathan Ferch (@nerfch) 提供的插件!
如何使用 Telegraf 监控文件目录
使用 Telegraf 读取文件的人员通常会使用 File Input Plugin 或 Tail Input Plugin。对于每个指定的间隔,inputs.file
插件解析 CSV、Line Protocol 或任何其他支持的 输入数据格式 的完整内容。同时,恰如其名的 Tail Input Plugin “tail” 或仅读取文件中新追加的行。
但是,这些插件都无法监控整个文件目录,同时能够移动处理后的文件或处理错误。Telegraf 1.18 中的新 Telegraf Directory Monitoring Input Plugin 监控单个目录(不查看子目录),并解析和摄取放置在该目录中的每个文件。支持的输入格式 包括 Prometheus、line protocol、JSON、XML、CSV 等。
该插件将在可配置的间隔内收集目录中的所有文件,并解析尚未拾取的文件。收集文件后,它将被放置在另一个目录中,以便插件不再拾取它。
此插件旨在读取移动或复制到指定监控目录的文件,因此文件也不应被另一个进程使用,否则它们可能无法被收集。与 File 和 Tail 插件一样,目录监控插件期望消息采用支持的 输入数据格式 之一。
非常感谢 Influxer David Bennett (@jagularr) 创建此插件。
如何使用 Telegraf 丰富您的 AWS EC2 指标
此版本还添加了一个新的 AWS EC2 Metadata Processor Plugin。此处理器从您的 EC2 实例收集元数据,包括帐户 ID、镜像 ID、实例 ID、区域和 更多 信息。
非常感谢来自 Sumo Logic 的 Patryk Malek (@pmalek-sumo) 提供的处理器!
如何使用地理数据丰富 Telegraf 指标
Telegraf 社区成员 a-bali 添加了一个 GeoIP Processor Plugin,该插件在 MaxMind GeoLite2 数据库 中查找 IP 地址,并添加相应的 ISO 国家/地区代码、城市名称、纬度和经度。从那里,您可以使用 Telegraf s2 geo processor 处理您的纬度/经度坐标。请确保包含您希望处理器运行的 顺序,使用 order=n
,否则它们将以随机顺序运行。当您的数据在 InfluxDB 中时,使用 Flux Geo package 查询数据,以查找指定区域内的数据点,使用 s2 geometry,它可以表示地球上的任何区域,从数英里宽到约一厘米宽。
这使您可以更好地了解时间序列数据点的来源,这在各种物联网(Internet of Things)用例中通常很有用,例如在地图上查看固定建筑物或结构。当查看客户参与度指标时也很有用,例如 最终用户响应时间监控。
如何使用 Telegraf 解析您的 XML 数据
XML(可扩展标记语言) 旨在存储和传输数据,重点是描述数据的含义。XML 具有标识数据的标签,用于存储和组织数据。它提供了一种灵活的方式来创建标签并以电子方式共享您的结构化数据。
借助 Telegraf XML parser,XML 现在是 Telegraf 支持的 输入数据格式 之一。任何包含 data_format
选项的输入插件都可以设置为 xml
并开始解析您的 XML 数据。XML 解析器将使用 XPath 表达式 将您的 XML 字符串分解为指标字段。XML 数据中的指标可以指定为标签,字段可以指定为子表,使用 [inputs.file.xml.tags]
和 [inputs.file.xml.fields]
。查看 parser documentation 以获取有关如何配置插件以读取 XML 数据的完整详细信息。
非常感谢我们的 Telegraf 社区开发者之一,来自 Honda Research Institute-Europe 的 Sven Rebhan (@srebhan),将此解析器纳入 Telegraf。
使用 Telegraf 对您的数据执行分位数和导数计算
Telegraf 1.18 还引入了两个新的聚合器:quantile 和 derivative。Telegraf Quantile Plugin 聚合它看到的每个指标的指定 分位数,并为您指定的每个周期发出分位数。作为背景,百分位数将分布划分为 100 个相等的部分,四分位数将分布划分为四个相等的部分,十分位数将分布划分为十个相等的部分。分位数将分布划分为任意数量的相等部分,因此比百分位数、四分位数和十分位数更通用。再次感谢 Sven Rebhan 提供的此插件!
新的 Telegraf Derivative Aggregator Plugin 估计指定时间间隔内聚合指标的所有字段的导数。默认情况下,聚合器确定指定时间间隔的第一个和最后一个指标。从这些指定中计算以秒为单位的时间差,并用于使用以下公式除以每个字段的差值
导数聚合器将发出一个字段,其命名模式为 <fieldname>_rate
。因此,在 插件示例 中,如果您正在读取 bytes_sent
或 packets_sent
,则导数聚合器将生成 bytes_sent_rate
和 packets_sent_rate
的字段。您可以在 插件文档 中阅读有关如何使用聚合器计算自定义导数的更多信息。
感谢 Telegraf 社区成员 Karsten Schnitter (@KarstenSchnitter) of SAP 提供的出色聚合器和插件的精彩文档。
如何使用 Telegraf 将数据发送到 Grafana Loki
Grafana 一直是 InfluxData 的长期 技术合作伙伴 之一,因为许多用户在 Grafana 仪表板中可视化他们的 InfluxDB 数据。Grafana Loki 专门是一组组件,可以组合成一个功能齐全的日志记录堆栈。
Telegraf Loki Output Plugin 可用于将日志发送到 Loki。该插件可以轻松配置为同时输出到 Grafana Loki 和任何版本的 InfluxDB,允许您双写日志并减少一个供应商锁定点。说到日志,请密切关注即将发布的 InfluxDB IOx,它大大增强了 InfluxDB 处理日志数据的能力。
非常感谢 Telegraf 社区成员 Labesse Kévin (@Eraac) of AB Tasty 贡献此插件。
如何使用 Telegraf 将数据发送到 Google BigQuery
此插件写入 Google Cloud BigQuery。由 Telegraf 社区成员 @gkatzioura 贡献
如何使用 Telegraf 将数据发送到 Splunk SignalFX
此插件将指标发送到 SignalFx。由 Telegraf 社区成员 Ben Keith (@keitwb) of Splunk/SignalFX 贡献。
如何使用 Telegraf 将数据发送到 Sensu
Sensu 是 InfluxData 的另一个 技术合作伙伴。Sensu Go 旨在为容器、应用程序、云基础设施等提供监控和可观测性。Sensu 团队编写了 Telegraf Sensu output plugin,通过 Sensu 的 Events API 将指标事件写入 Sensu Go。如果您碰巧已经在 Sensu 中拥有数据,并且想知道如何将指标从 Sensu 发送到 InfluxDB,Sensu 提供了一个 集成,用于将 Sensu 指标转换为 InfluxDB Line Protocol。
感谢 Sensu 的 Telegraf 社区成员 Todd Campbell (@nixwiz) 提供的此插件。
Windows 和 Mac Telegraf 二进制文件的代码签名
在 Telegraf 1.18 中,我们为 Windows 和 macOS 的 Telegraf 构建过程实现了 数字签名。这些签名的可执行文件确认 Telegraf 代码自签名后未被更改和损坏。
Windows 签名的 Telegraf 可执行文件
在 Telegraf 1.18 之前,Telegraf 构建的可执行文件上不包含数字签名证书。对于许多想要使用 Telegraf 的 具有严格访问控制的企业 来说,这已成为一个问题。在 Telegraf 1.18 中,Windows 二进制文件包含一个签名的可执行文件,可以在 telegraf.exe
属性中查看。最终用户 下载 和 在 Windows 上运行 Telegraf 的体验没有任何变化。
macOS 签名的 Telegraf 可执行文件
对于 macOS,Big Sur 中出现了一个要求,即二进制文件必须经过签名和公证。用户可以通过从 Telegraf GitHub 发布页面下载 <a href="https://www.howtogeek.com/362166/what-is-a-dmg-file-and-how-do-i-use-one/">.dmg</a>
版本的 Telegraf 来访问此数字签名的 macOS 构建版本。下载此文件后,将下载一个 Telegraf 应用程序,并且需要将其移动到您的计算机。如果您正在寻找适用于 macOS 的 Telegraf 1.18.0 .dmg 文件,您可以在此处下载。
将 Telegraf 应用程序移动到您的计算机后,您将收到警报,提示此应用程序是从互联网下载的,并提示您单击“打开”以运行 Telegraf。
之后,将生成一个配置文件,并且可以通过访问 ~usr/bin/telegraf
,通过终端运行 Telegraf。甚至可以通过在您的计算机上打开 Telegraf 应用程序来运行 Telegraf,并且将运行生成的 telegraf.conf
文件。
...以及更多、更多令人兴奋的插件和功能
此版本中包含的其他输入插件包括 CS:GO 输入插件 和 RavenDB 输入插件。CS:GO 插件收集来自 Counter-Strike: Global Offensive 服务器的指标,由 oofdog 贡献。如果您希望开始使用您的 API 密钥和 Steam 用户 ID 监控 CS:GO 官方服务器上玩家的数据,我们还提供了用于 CS:GO 的 InfluxDB 模板。
RavenDB 插件通过监控端点 API 从您的 RavenDB 服务器读取指标。感谢 Telegraf 社区成员 Marcin Lewandowski (@ml054) 和 Casey Barton (@bartoncasey) 开发此插件!
Telegraf 1.18 还引入了另一种 Telegraf 的输出数据格式。MessagePack 序列化器将指标转换为 MessagePack 格式,这是一种高效的二进制序列化格式。通过将 data_format
选项设置为 msgpack
,可以在配置输出插件时使用该序列化器,并且您的所有数据都将以 MessagePack 格式发送出去。感谢 Telegraf 社区成员 Jason Kim (@dialogbox) 编写了此序列化器!
在此版本中,我们还在外部插件列表中添加了内容
- InfluxData 自己的 Russ Savage (@russorat) 构建了一个 Plex Webhook 输入插件。该插件监听来自 Plex Media Server Webhook 的事件,并允许您收集有关所有 Plex 电影和电视观看情况的统计信息。
- Telegraf 社区成员 @jhpope 贡献了我们的第一个 Python 外部插件 — SMCIPMITool 输入插件。此插件将 SMCIPMITool 的输出解析为行协议。
所有这些插件都可以与其各自的 execd
插件无缝使用。阅读更多关于如何编写您自己的外部插件的信息。再次感谢所有这些贡献者!
查看 完整列表,了解 Telegraf 各方面的功能和错误修复改进。然后继续下载或升级到 Telegraf 1.18 以试用它们。与往常一样,欢迎随时通过我们的 Telegraf GitHub 页面、InfluxData Slack 频道或 社区网站联系我们或与社区互动。