如何自己写一个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这个结构体,将要监控的信息填进去。

相关文章
|
6天前
|
存储 Prometheus 监控
Grafana 系列文章(十四):Helm 安装 Loki
Grafana 系列文章(十四):Helm 安装 Loki
|
存储 监控 数据可视化
elasticsearch插件二—— kibana插件安装详解
一、kibana 插件介绍 kibana 插件提供了Marvel监控的UI界面。
371 0
elasticsearch插件二—— kibana插件安装详解
|
JSON Linux 数据安全/隐私保护
|
6天前
|
Prometheus 监控 Cloud Native
Prometheus 安装与配置
Prometheus 安装与配置
|
6天前
阿里云Grafana服务支持一键安装Grafana插件
【2月更文挑战第12天】阿里云Grafana服务支持一键安装Grafana插件
35 4
|
5月前
|
Prometheus Kubernetes Cloud Native
k8s grafana 安装插件配置
k8s grafana 安装插件配置
153 1
|
6天前
|
存储 JSON Cloud Native
Grafana Loki初体验
Loki介绍Loki是Grafana Labs在2018年开始研发的一款日志系统,使用的开源协议是AGPLv3,Github Star数目前是15.8k。 过去几年Star的趋势增长稳定。 属于日志存储领域的一颗新星。Grana Loki的应用架构采集侧使用 PromtailLoki核心程序(单一二...
Grafana Loki初体验
|
Prometheus Cloud Native Docker
Prometheus安装与配置
Prometheus安装与配置
197 0
Prometheus安装与配置
|
Prometheus Cloud Native 数据安全/隐私保护
Grafana安装与配置
Grafana安装与配置
416 0
Grafana安装与配置
|
监控 安全 Java
elasticsearch插件三—— Marvel插件安装详解
一、Marvel插件介绍 Marvel插件:在簇中从每个节点汇集数据。这个插件必须每个节点都得安装。
356 0
elasticsearch插件三—— Marvel插件安装详解