如何自己写一个telegraf的插件

简介: 之前有个特殊需求要自己搞一个telegraf的插件,就顺手写了这个小指南,go初学者级别吧

telegraf introduce

telegraf github 地址

why have this blog

我要写一个特殊监控,现有的telegraf插件又没有办法实现,所以就要自己写一个input plugin

先讲一下通常方法下,现有的input插件无法满足要求的情况下怎么做:

有一个input.exec插件,可以获取命令执行后的结果,取到这个结果然后结合一下telegraf允许输入的格式,就可以了。无奈我写bash的水平实在是太低了,刚开始的时候也没有发现这个东西,所以就没有管这个,直接上手撸了个插件

how write a input plugin

先看一下官方教程

如果看懂的话大概就不太需要接下来的东西了

接下来是小白版的教程:

一个input plugin需要从以下做起:

  1. /telegraf/plugins/input/ 下增加插件文件夹
  2. 编写插件go文件
  3. /telegraf/plugins/input/all/all.go下增加编写好的路径
  4. 重新编译telegraf
  5. 运行

接下来主要看以下 插件文件的编写,以下称为 example.go

要先给定一个输入参数的结构体:

type Info struct {
  Address  []string `toml:"address"`
}

这个结构体会作为很多函数的输入用:

描述:

func (*Info) Description() string {
  return "return netconf result"
}

样例输入:

var sampleConfig = `
Address = ["西街小学"]
`
func (*Info) SampleConfig() string {
  return sampleConfig
}

初始化:

func init() {
  inputs.Add("sample", func() telegraf.Input {
    return &Info{}
  })
}

Gather函数:用来处理信息、将信息给后续组件进行处理

func (a *Info) Gather(acc telegraf.Accumulator) error {
  //内容自由发挥,填写好addGauge的四个参数就ok
  fieldsG := map[string]interface{}{
    "address": a.Address,
  } 
  tags := map[string]string{}{}
  now := time.Now()
  acc.AddGauge("test", fieldsG, tags, now)
  return nil
}

将以上几个部分组合在一起就是一个最简单的input插件。最重要的就是gather函数,自己来组织fieldsG这个结构体,将要监控的信息填进去。

相关文章
|
JSON Linux 数据安全/隐私保护
|
2月前
|
存储 数据采集 监控
Telegraf 使用小结
Telegraf 使用小结
31 1
|
3月前
|
监控 数据库 时序数据库
性能监控之Telegraf+InfluxDB+Grafana window服务器安装使用
【6月更文挑战13天】性能监控之Telegraf+InfluxDB+Grafana window服务器安装使用
106 1
|
4月前
阿里云Grafana服务支持一键安装Grafana插件
【2月更文挑战第12天】阿里云Grafana服务支持一键安装Grafana插件
85 4
|
4月前
|
运维 安全 机器人
记一次graylog-plugin-logging-alert插件在GrayLog5.1.2版本下不生效问题的解决过程
记一次graylog-plugin-logging-alert插件在GrayLog5.1.2版本下不生效问题的解决过程
45 0
|
9月前
|
Prometheus Kubernetes Cloud Native
k8s grafana 安装插件配置
k8s grafana 安装插件配置
262 1
|
网络安全 时序数据库
influxdb2.0版本部署+自启
influxdb2.0版本部署+自启
influxdb2.0版本部署+自启
|
监控 安全 Java
elasticsearch插件三—— Marvel插件安装详解
一、Marvel插件介绍 Marvel插件:在簇中从每个节点汇集数据。这个插件必须每个节点都得安装。
394 0
elasticsearch插件三—— Marvel插件安装详解
|
Prometheus Cloud Native Linux
Linux系统安装部署及配置Grafana
wget https://dl.grafana.com/oss/release/grafana-8.0.3-1.x86_64.rpm
1514 0
|
Kubernetes Go 网络安全
ECK安装elasticsearch,接入apm测试
1.以前都是用helm安装elasticsearch,最近发现elasticsearch推荐使用ECK在K8S上安装,那我们就来试试吧 2.我们会在已有的K8S上安装ECK,elasticsearch,kibana,apm,关闭ssl,loadbalancer暴露应用访问 3.测试golang接入apm
624 0
ECK安装elasticsearch,接入apm测试