当前位置: 首页 > 面试题库 >

如何将插件添加到Telegraf?

杭曦
2023-03-14
问题内容

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

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

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]

如果您有我需要的清单,如何组织清单,将文件存储在什么地方,或者举个例子可能会很有帮助。

谢谢!!


问题答案:

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

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上注册插件。

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

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

$ GOPATH / bin / telegraf -sample-config-输入过滤器testPlugin-输出过滤器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{} })
}


 类似资料:
  • 最近我安装了WebStorm。我想用它做Vue和Laravel项目。我试图添加Laravel插件,但在插件描述中说,我需要 在“Settings>Language&Frameworks>PHP>Laravel”下激活每个项目的it 问题是我在语言和框架中没有“PHP”选项可供选择。 如何安装到我的WebStorm应用程序?

  • JAXB2-Basics-0.6.2 JAXB2-Basics-Annotate-0.6.2 在我们的maven文件中,我们还包含了-xannotate和-xtoString 绑定文件如下 这也没有在注释中添加任何include部分。

  • 一些子项目有自己的build.gradle文件应用的java插件。在根项目的build.gradle中,我想将plugin findbugs应用于已经有java插件的每个子项目。build.gradle我尝试过: 和 外部循环确实会为每个子项目运行一次,但内部闭包在这两种情况下都不会运行。我怀疑这是因为子项目构建脚本在外部脚本之前生效。除了手动将findbugs插件应用到每个子项目之外,还有什么方

  • 这是我有生以来第一次为IDEA开发插件。已经几乎完全实现了所有功能。现在需要向文件中添加一项-

  • 我在自己的GitHub存储库中有一个Phonegap/Cordova插件,我想将此插件添加到GitHub上的Phonegap插件存储库中https://github.com/phonegap/phonegap-plugins.我怎样才能做到这一点? 编辑 Phonegap插件库说: 我们不想再用代码“搅乱”这份回购协议。作者应该在自己的repos中维护代码,只需在自述中放置一个指针。本回购协议中的

  • 问题内容: 我想将先前从其他文件(已经完成)中提取的一系列文件添加到jar中。这些文件将覆盖JAR中的文件。最有效的方法是什么?我需要它快。谢谢! 问题答案: 请记住,JAR文件是ZIP文件。 只需使用一些ZIP库。