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 插件,有一个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中的时序数据
- 点赞
- 收藏
- 关注作者
评论(0)