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

举报
yangjiaxin98 发表于 2024/12/12 11:35:04 2024/12/12
【摘要】 InfluxDB适配GaussDB开源开发任务心得

代码仓库

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

开发过程

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

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

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

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

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

  • 输出必须符合telegraf.Output接口。
  • 输入插件应调用outputs.Add其init函数来注册自身。

    数据格式

  这里要注意格式需要设置为 data_format = "influx"。设置为json会出问题。

   执行 Go Shim

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

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

总结

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

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

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

这里展示一个 CPU 的 telegraf.conf

[[outputs.execd]]
  command = ["./gauss_output", "-config", "plugin.conf"]
  data_format = "influx"


[[outputs.influxdb_v2]]
  urls = ["your_url"]
  token = "your_token"
  organization = "your_org"
  bucket = "your_bucket"



# Read metrics about cpu usage
[[inputs.cpu]]
  ## Whether to report per-cpu stats or not
  percpu = true
  ## Whether to report total system cpu stats or not
  totalcpu = true
  ## If true, collect raw CPU time metrics
  collect_cpu_time = false
  ## If true, compute and report the sum of all non-idle CPU states
  ## NOTE: The resulting 'time_active' field INCLUDES 'iowait'!
  report_active = false
  ## If true and the info is available then add core_id and physical_id tags
  core_tags = false

验证截图

验证思路

这里修改我们的配置文件,配置需要采集的Metrics数据这里以CPU为例,然后通过 

telegraf --config telegraf.conf 

启动Telegraf,我们会在Telegraf控制台中看到日志信息 "Data written successfully" 代表已经成功写入数据。

进入到我们的InfluxDB中查看时序数据,然后再进入GaussDB中查看是否有新建表和写入的时序数据。

InfluxDB 的 Web UI

GaussDB中的时序数据

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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