0

你好,我是电报的初学者,谁能告诉我如何为“Hello World”消息编写简单的电报输入插件???

谢谢

4

1 回答 1

0

获取电报代码并制作

  1. 去你的 go-project 目录,去/src/
  2. go get -d github.com/influxdata/telegraf
  3. cd github.com/influxdata/telegraf
  4. make

用于创建一个简单的插件

  1. cd telegraf
  2. cd plugins/inputs/
  3. 创建一个包(文件夹)->mkdir sample
  4. cd sample
  5. touch sample.go

在里面写下下面的代码

package sample

import (
    "github.com/influxdata/telegraf"
    "github.com/influxdata/telegraf/plugins/inputs"
)

type Sample struct {
    Message string `toml:"message"`
}

func (s *Sample) Description() string {
    return "Intended to test"
}

var SampleConfig = `
##You can also change the message if you want to print different than Hello world  by uncommenting below line and change message.
# message = "Hello"
`

func (s *Sample) SampleConfig() string {
    return SampleConfig
}

func (s *Sample) Init() error {
    return nil
}

func (s *Sample) Gather(acc telegraf.Accumulator) error {
    greet := "Your Message is " + s.Message

    fields := make(map[string]interface{})
    fields["Message"] = greet
    //tags := make(map[string]string)

    acc.AddFields("sample", fields, nil)

    return nil
}

func init() {
    inputs.Add("sample", func() telegraf.Input { return &Sample{"Hello-World"} })
}

保存代码

您需要在 all.go 中添加/注册新创建的包(插件)的路径

go/src/ github.com/influxdata/telegraf/plugins/inputs/all/all.go

vi /go/src/github.com/influxdata/telegraf/plugins/inputs/all/all.go

由于我们已经创建了示例输入插件,我们需要在导入的末尾添加它的路径,在导入的末尾添加以下行

_ "github.com/influxdata/telegraf/plugins/inputs/sample"

然后all.go文件看起来像

import(
.
.
.
.
  _ "github.com/influxdata/telegraf/plugins/inputs/sample"
)

现在,回到电报目录

cd /go/src/github.com/influxdata/telegraf

make

这将制作新的电报二进制文件

注意:对于输出插件,我们使用文件插件,我们将输出放在文件中

telegraf.conf文件设置输入和输出插件

./telegraf --input-filter=sample --output-filter=file config > telegraf.conf

vi telegraf.conf

[[outputs.file]]的变化

1. 文件 = ["stdout", "/tmp/Your-Output-Filename.json"]

2. data_format = "json"

保存并运行使用

./telegraf --config telegraf.conf

你可以看到像这样的输出, 在此处输入图像描述

现在转到输出文件目录打开文件并查看其中的内容,

vi /tmp/Your-Output-Filename.json

就像是, 在此处输入图像描述

注意:您还可以通过取消注释来更改SampleConfig()中的消息(SampleConfig() 具有最高优先级),在运行 telegraf 二进制文件时,它会从此处读取数据,如果在此处找不到(如果已注释),则使用以下值在 init() 中传递

每次更改代码时,您都必须再次制作代码

谢谢你 !!!

于 2022-01-13T15:30:23.733 回答