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

相关文章
|
Shell 开发工具
【优化篇】telegraf+shell脚本实现秒级的服务状态异常监测与告警
【优化篇】telegraf+shell脚本实现秒级的服务状态异常监测与告警
317 0
|
存储 监控 数据可视化
日志分析对决:揭示 ELK 与 GrayLog 的优势和差异
日志分析对决:揭示 ELK 与 GrayLog 的优势和差异
3198 0
|
Ubuntu Linux KVM
分享一些OpenStack的qcow2格式实例镜像
分享一些OpenStack的qcow2格式实例镜像
12988 0
分享一些OpenStack的qcow2格式实例镜像
|
Oracle Java Unix
Java/JDK下载、安装与环境变量配置超详细教程(2022更新)保姆级,秒会
Java/JDK下载、安装与环境配置超详细教程(2022更新)保姆级,小白秒会[学习必备,建议收藏]。包含JDK8、JDK11、JDK17、JDK19等,本文将从JDK的下载与安装讲起,在从配置到第一个HelloWrold实践结束。在观看本文前我们需要知道JDK是什么,有什么作用?JDK是Java的开发工具包,包括JVM虚拟机,核心类库,开发工具。
26783 0
Java/JDK下载、安装与环境变量配置超详细教程(2022更新)保姆级,秒会
|
Go
golang run时报undefined错误【已解决】
golang run时报undefined错误【已解决】
3650 0
golang run时报undefined错误【已解决】
|
缓存 Linux 开发工具
CentOS 7- 配置阿里镜像源
阿里镜像官方地址http://mirrors.aliyun.com/ 1、点击官方提供的相应系统的帮助 :2、查看不同版本的系统操作: 下载源1、安装wget yum install -y wget2、下载CentOS 7的repo文件wget -O /etc/yum.
250726 0
|
监控 时序数据库
Telegraf+Influxdb+Chronograf+Kapacitor主机性能监控告警
一.简述 通过TICK(Telegraf+Influxdb+Chronograf+Kapacitor)进行主机性能监控告警,职责描述如下: Telegraf的职能是数据采集,用于主机性能数据,包括主机CPU、内存、IO、进程状态、服务状态等 Influxdb的职能是时序数据库,用于存储Teleg.
5126 0
|
存储 数据采集 监控
Telegraf 使用小结
Telegraf 使用小结
226 1
|
数据采集 监控 Unix
性能监控之Telegraf+InfluxDB+Grafana实现结构化日志实时监控
【8月更文挑战第1天】性能监控之Telegraf+InfluxDB+Grafana实现结构化日志实时监控
904 0