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

    数据格式

  这里要注意格式需要设置为 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个月内不可修改。