2016-05-25 51 views
2

你好,我想知道是否有人已經準備好了添加一個插件,以telegraf 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{} }) 
} 

但是,這是我的整個圍棋插件或轉到另一個文件與我的圍棋程序添加?

那麼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] 

如果你有什麼我需要一個列表,如何構建它,在那裏我存儲文件或也許一個例子可能是很有益的。

謝謝!

回答

2

- >我收到此,它給了我一個更好的瞭解,我認爲這可能是有益的:

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 /插件/輸入/所有/ all.go

那麼他應該從$ GOPATH/src目錄運行make /github.com/influxdata/telegraf。這將把新的telegraf二進制文件放在$ GOPATH/bin/telegraf中。

運行具有以下標誌二進制生成有效的配置:

$ GOPATH /斌/ telegraf - 抽樣 - 配置 - 輸入濾波器testPlugin - 輸出濾波器influxdb> testPlugin_config.conf

從那裏,你可以通過它傳遞的樣本配置運行與-test標誌二進制:

$ GOPATH /斌/ 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{} }) 
}