组件分享之后端组件——基于Golang实现的用于收集、处理、聚合和编写指标的代理telegraf

组件分享之后端组件——基于Golang实现的用于收集、处理、聚合和编写指标的代理telegraf

背景

近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件。欢迎大家进行持续关注。

组件基本信息

  • 组件:telegraf
  • 开源协议:MIT license

内容

本节我们分享一个基于Golang实现的用于收集、处理、聚合和编写指标的代理telegraf

image.png

它有四种不同类型的插件:

  1. 输入插件从系统、服务或第 3 方 API 收集指标
  2. 处理器插件转换、装饰和/或过滤指标
  3. 聚合器插件创建聚合指标(例如平均值、最小值、最大值、分位数等)
  4. 输出插件将指标写入各种目的地

最低要求

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{} })
}

更多详细文档可以参考官方提供的文档说明

本文声明:

88x31.png

知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。

你可能感兴趣的:(组件分享之后端组件——基于Golang实现的用于收集、处理、聚合和编写指标的代理telegraf)