Telegraf适配GaussDB开源开发任务心得

举报
yangjiaxin98 发表于 2024/11/27 17:25:38 2024/11/27
【摘要】 Telegraf适配GaussDB开源开发任务心得

代码仓库

https://github.com/qixia1998/telegraf-input-gaussdb

开发过程

参考https://github.com/influxdata/telegraf/blob/master/docs/EXTERNAL_PLUGINS.md

这里开发了是一个 External 的 input plugin

External Plugin是在 Telegraf 之外构建的外部程序,可以通过execd插件运行。与内部 Telegraf 插件相比,这些外部插件具有更大的灵活性。

  • 外部插件可以用任何语言编写(内部 Telegraf 插件只能用 Go 编写)
  • 外部插件可以访问不是用 Go 编写的库
  • 使用开源社区无法获得的许可软件
  • 可以包含较大的依赖项,否则会导致 Telegraf 臃肿
  • 无需等待 Telegraf 团队发布插件并开始使用它。
  • 使用shim,您可以轻松地在内部和外部使用之间转换插件
  • 使用需要 CGO 支持的第三方库

编写inputs plugin的指南参考https://github.com/influxdata/telegraf/blob/master/docs/INPUTS.md 重点关注这两点

  • 插件必须符合telegraf.Input接口。
  • 输入插件应调用inputs.Addinit函数来注册自身。

    类型指标

    除了AddFields函数之外,累加器还支持添加类型化指标的函数:AddGaugeAddCounter等。指标类型会被 InfluxDB 输出忽略,但可以用于其他输出。

   执行 Go Shim

对于 Go 插件,有一个Execd Go Shim,它可以轻松地将内部输入、处理器或输出插件从主 Telegraf 存储库提取到独立存储库。此 shim 允许任何人使用以下插件之一将其作为单独的应用程序构建和运行execd

按照外部化插件的步骤和 构建并运行插件的步骤,使用 Execd Go Shim 正确操作。

总结

Telegraf 的外部插件允许你使用外部程序或者脚本来获取数据,并将其通过标准输出(stdout)返回给 Telegraf。Telegraf 内置了 inputs.execd 插件来支持执行外部程序。对于 Go 开发的外部插件,Telegraf 提供了 Execd Go Shim,它使得将 Go 插件独立出来作为可执行程序变得更加简单。

外部插件的基本工作流程:

  • 数据采集:外部插件通过执行外部命令(如查询数据库)来收集指标数据。
  • 数据输出:插件将采集到的数据通过可以指定输出格式,并由 Telegraf 处理。
  • 配置管理:Telegraf 配置文件中的 inputs.execd 插件配置将指定外部插件的路径和执行方式。

验证截图

验证思路

这里我们使用的是PG_STAT_ACTIVITY视图, 它显示和当前用户查询相关的信息,字段保存的是上一次执行的信息。

通过在插件中配置SQL,然后将查询字段指标通过插件添加到Telegraf进行处理,然后通过配置Telegraf的插件配置来执行,最后我们通过/metrics接口或者web UI界面查看InfluxDB写入的数据。

/metrics 接口

InfluxDB Web UI

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。