【问题标题】:How to add a plugin to Telegraf?如何向 Telegraf 添加插件?
【发布时间】:2016-05-25 12:25:57
【问题描述】:

您好,我想知道是否有人准备好了为 Influxdb 添加一个插件到 telegraf。 我有我的运行代码。接下来我需要什么以及将这些文件放在哪里?

我发现我需要做这样的事情:

type ReadFile struct {
    //buf []byte
    //MemoryBytes int64
   //PID int
}

func (s *ReadFile) Description() string {
   return "This is a test plugin to read data from a file and send them to influxdb" }

func (s *ReadFile) SampleConfig() string {
    return "ok = true # indicate if everything is fine"
}

func Gather(acc plugins.Accumulator) error {

     readFile(alarmFile)

    acc.Add("alarm", result_of_readFile_here, tags)
    }
  }

    func init() {
    plugins.Add("readFile", func() plugins.Plugin { &ReadFile{} })
 }

但这是我的整个 Go 插件还是 Go 中要添加到我的 Go 程序中的另一个文件?

file.conf 存储在哪里?

[tags]
dc = "alarm"

[agent]
interval = "10s"

# OUTPUTS
[outputs]
[outputs.influxdb]
url = "http://127.0.0.1:8086" # required.
database = "summer" # required.
precision = "s"

# PLUGINS
[readFile]

如果你有我需要的清单,如何构建它,我存储文件的位置或者一个示例可能真的很有帮助。

谢谢!!

【问题讨论】:

    标签: plugins go influxdb


    【解决方案1】:

    -> 我收到了这个,它让我有了更好的理解,我认为它可能会有所帮助:

    https://github.com/influxdata/telegraf/blob/master/CONTRIBUTING.md

    “他的插件代码看起来不错。他需要将该文件放在 $GOPATH/src/github.com/influxdata/telegraf/plugin/inputs/testPlugin/testPlugin.go 中

    他应该为插件编写一个测试并将其放在 $GOPATH/src/github.com/influxdata/telegraf/plugin/inputs/testPlugin/testPlugin_test.go

    完成后他需要在 $GOPATH/src/github.com/influxdata/telegraf/plugin/inputs/all/all.go 注册插件

    然后他应该从 $GOPATH/src/github.com/influxdata/telegraf 运行 make。这会将新的 telegraf 二进制文件放在 $GOPATH/bin/telegraf 中。

    使用以下标志运行二进制文件以生成有效配置:

    $GOPATH/bin/telegraf -sample-config -input-filter testPlugin -output-filter influxdb > testPlugin_config.conf

    您可以从那里通过传递示例配置来运行带有 -test 标志的二进制文件:

    $GOPATH/bin/telegraf -config testPlugin_config.conf -test

    这将输出要插入数据库的线路协议。”

    -> 还有他所说的 testPlugin.go

    package testPlugin
    
    import (
        "time"
    )
    
    type ReadFile struct {
     counter int64
    }
    
    func (s *TestPlugin) Description() string {
      return "This is a test plugin to write data to influxdb with a plugin"
    }
    
    func (s *TestPlugin) SampleConfig() string {
      return "ok = true # indicate if everything is fine"
    }
    
    func Gather(acc telegraf.Accumulator) error {
    
    c := time.Tick(10 * time.Second)
    for now := range c {
    
        counter := counter + 1
        acc.Add("counter",counter, tags)
     }
    } 
    
    func init() {
      inputs.Add("testPlugin", func() telegraf.Input { return &TestPlugin{} })
    }
    

    【讨论】:

      【解决方案2】:

      external plugin support 有一个未解决的问题,它可能是 Telegraf 1.4.0 的一部分。如果可能会加载external *.so files

      在此之前,所有插件都应该合并到主repository via PRs。已经有很多插件在审​​核过程中等待。这个模型显然不是很可扩展。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-12
        • 1970-01-01
        • 2013-01-14
        • 1970-01-01
        • 2021-03-02
        • 2012-11-29
        • 1970-01-01
        相关资源
        最近更新 更多