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

相关文章
|
9月前
|
存储 Prometheus 监控
Grafana 系列文章(十四):Helm 安装 Loki
Grafana 系列文章(十四):Helm 安装 Loki
|
JSON Linux 数据安全/隐私保护
|
7月前
|
存储 数据采集 监控
Telegraf 使用小结
Telegraf 使用小结
119 1
|
8月前
|
监控 数据库 时序数据库
性能监控之Telegraf+InfluxDB+Grafana window服务器安装使用
【6月更文挑战13天】性能监控之Telegraf+InfluxDB+Grafana window服务器安装使用
294 1
|
9月前
|
Kubernetes API 数据中心
Grafana 系列 -GaC-1-Grafana 即代码的几种实现方式
Grafana 系列 -GaC-1-Grafana 即代码的几种实现方式
|
Prometheus Kubernetes Cloud Native
k8s grafana 安装插件配置
k8s grafana 安装插件配置
387 1
|
9月前
|
存储 JSON Cloud Native
Grafana Loki初体验
Loki介绍Loki是Grafana Labs在2018年开始研发的一款日志系统,使用的开源协议是AGPLv3,Github Star数目前是15.8k。 过去几年Star的趋势增长稳定。 属于日志存储领域的一颗新星。Grana Loki的应用架构采集侧使用 PromtailLoki核心程序(单一二...
633 7
Grafana Loki初体验
|
数据采集 监控 Linux
​数据采集神器Telegraf对接开源日志服务器GrayLog
​数据采集神器Telegraf对接开源日志服务器GrayLog
808 0
​数据采集神器Telegraf对接开源日志服务器GrayLog
|
JSON Linux Go
grafana怎么读取ganglia的rrd展示到dashboard中
grafana怎么读取ganglia的rrd展示到dashboard中
429 0
grafana怎么读取ganglia的rrd展示到dashboard中
|
监控 NoSQL 网络协议
iLogtail 入门-采集Telegraf Metrics 数据
# 前言阿里已经正式[开源](https://mp.weixin.qq.com/s/hcCYBZ0qvs8q4Wp1zFt-lg) 了可观测数据采集器iLogtail。作为阿里内部可观测数据采集的基础设施,iLogtail承载了阿里巴巴集团、蚂蚁的日志、监控、Trace、事件等多种可观测数据的采集工作。本文将介绍iLogtail如何与Telegraf协同工作,采集指标数据。# 采集配置iLogta
307 0