组件分享之后端组件——基于Golang实现的用于收集、处理、聚合和编写指标的代理telegraf
背景
近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件。欢迎大家进行持续关注。
组件基本信息
- 组件:telegraf
- 开源协议:MIT license
内容
本节我们分享一个基于Golang实现的用于收集、处理、聚合和编写指标的代理telegraf
它有四种不同类型的插件:
最低要求
Telegraf与 Go具有相同的最低要求:
- Linux 内核版本 2.6.23 或更高版本
- Windows 7 或更高版本
- FreeBSD 11.2 或更高版本
- MacOS 10.11 El Capitan 或更高版本
以下是其中输入插件的使用实例:
输入插件指南
- 插件必须符合telegraf.Input接口。
- 输入插件应该调用
inputs.Add
它们的init
函数来注册自己。请参阅下面的快速示例。 - 输入插件必须添加到
github.com/influxdata/telegraf/plugins/inputs/all/all.go
文件中。 - 每个插件都需要一个名为的文件,
sample.conf
其中包含 TOML 格式的插件示例配置。请查阅示例配置页面以获取最新的样式指南。 - 每个插件
README.md
文件都应该通过在表单中sample.conf
指定一个部分来将文件包含在描述配置的部分中。然后将指定的文件自动注入自述文件中。toml``toml @sample.conf
- 遵循推荐的代码风格。
//go:generate ../../../tools/readme_config_includer/generator
package simple
import (
_ "embed"
"github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/plugins/inputs"
)
// DO NOT REMOVE THE NEXT TWO LINES! This is required to embed the sampleConfig data.
//go:embed sample.conf
var sampleConfig string
type Simple struct {
Ok bool `toml:"ok"`
Log telegraf.Logger `toml:"-"`
}
func (*Simple) SampleConfig() string {
return sampleConfig
}
// Init用于设置和验证配置。
func (s *Simple) Init() error {
return nil
}
func (s *Simple) Gather(acc telegraf.Accumulator) error {
if s.Ok {
acc.AddFields("state", map[string]interface{}{"value": "pretty good"}, nil)
} else {
acc.AddFields("state", map[string]interface{}{"value": "not great"}, nil)
}
return nil
}
func init() {
inputs.Add("simple", func() telegraf.Input { return &Simple{} })
}
更多详细文档可以参考官方提供的文档说明
本文声明:
知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。