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.Add其init函数来注册自身。

    类型指标

    除了AddFields函数之外,累加器还支持添加类型化指标的函数:AddGauge、AddCounter等。指标类型会被 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个月内不可修改。