From 2b93edf3a2cf06cdfe3ba0563e251f285f792f6d Mon Sep 17 00:00:00 2001 From: Jonathan Pagel Date: Wed, 28 Jul 2021 09:33:15 +0200 Subject: [PATCH] telegraf: Add package for telegraf Telegraf is a plugin-driven agent for collecting and sending metrics and events. It supports various inputs (including prometheus endpoints) and is able to send data into InfluxDB. https://www.influxdata.com/time-series-platform/telegraf/ Signed-off-by: Jonathan Pagel --- utils/telegraf/Makefile | 84 +++++++++++++++++++ utils/telegraf/files/etc/init.d/telegraf | 14 ++++ .../plugins/aggregators/all/all.go | 5 ++ .../variant-small/plugins/inputs/all/all.go | 30 +++++++ .../variant-small/plugins/outputs/all/all.go | 12 +++ .../plugins/processors/all/all.go | 5 ++ 6 files changed, 150 insertions(+) create mode 100644 utils/telegraf/Makefile create mode 100755 utils/telegraf/files/etc/init.d/telegraf create mode 100644 utils/telegraf/variant-small/plugins/aggregators/all/all.go create mode 100644 utils/telegraf/variant-small/plugins/inputs/all/all.go create mode 100644 utils/telegraf/variant-small/plugins/outputs/all/all.go create mode 100644 utils/telegraf/variant-small/plugins/processors/all/all.go diff --git a/utils/telegraf/Makefile b/utils/telegraf/Makefile new file mode 100644 index 000000000..3bb9f1d26 --- /dev/null +++ b/utils/telegraf/Makefile @@ -0,0 +1,84 @@ +# SPDX-License-Identifier: GPL-2.0-or-later + +include $(TOPDIR)/rules.mk + +PKG_NAME:=telegraf +PKG_VERSION:=1.19.1 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=https://codeload.github.com/influxdata/telegraf/tar.gz/v$(PKG_VERSION)? +PKG_HASH:=cec43bb0acfff8b4c963ffec6e3eab44ffb52c8f34e6a697207977cfd05882aa + +PKG_MAINTAINER:=Jonathan Pagel +PKG_LICENSE:=MIT +PKG_LICENSE_FILES:=LICENSE + +PKG_BUILD_DEPENDS:=golang/host +PKG_BUILD_PARALLEL:=1 +PKG_USE_MIPS16:=0 + +GO_PKG:=github.com/influxdata/telegraf +GO_PKG_BUILD_PKG:=github.com/influxdata/telegraf/cmd/telegraf +GO_PKG_LDFLAGS_X:=main.version=$(PKG_VERSION) + +include $(INCLUDE_DIR)/package.mk +include ../../lang/golang/golang-package.mk + +define Package/telegraf/Default + SECTION:=utils + CATEGORY:=Utilities + TITLE:=Telegraf + DEPENDS:=$(GO_ARCH_DEPENDS) +endef + +define Package/telegraf-full + $(call Package/telegraf/Default) + TITLE+= (Full) + VARIANT:=full +endef + +define Package/telegraf + $(call Package/telegraf/Default) + TITLE+= (Small) + VARIANT:=small +endef + +define Package/telegraf/description/Default + Telegraf is a plugin-driven agent for collecting and sending metrics and events. + It supports various inputs (including prometheus endpoints) and is able to send data into InfluxDB. +endef + +define Package/telegraf/description + $(call Package/telegraf/description/Default) + (Small build. Most plugins excluded) +endef + +define Package/telegraf-full/description + $(call Package/telegraf/description/Default) + (Full build. including all plugins) +endef + +define Build/Prepare + $(call Build/Prepare/Default) +ifeq ($(BUILD_VARIANT),small) + $(CP) ./variant-$(BUILD_VARIANT)/* $(PKG_BUILD_DIR)/ +endif +endef + +define Package/telegraf/install + $(call GoPackage/Package/Install/Bin,$(1)) + $(INSTALL_DIR) $(1)/etc/init.d $(1)/etc/config + $(INSTALL_BIN) ./files/etc/init.d/telegraf $(1)/etc/init.d/telegraf + $(INSTALL_DATA) $(PKG_BUILD_DIR)/etc/telegraf.conf $(1)/etc/config/telegraf.conf +endef + +define Package/telegraf-full/install + $(call Package/telegraf/install,$(1)) +endef + +$(eval $(call GoBinPackage,telegraf)) +$(eval $(call BuildPackage,telegraf)) + +$(eval $(call GoBinPackage,telegraf-full)) +$(eval $(call BuildPackage,telegraf-full)) diff --git a/utils/telegraf/files/etc/init.d/telegraf b/utils/telegraf/files/etc/init.d/telegraf new file mode 100755 index 000000000..9faef6611 --- /dev/null +++ b/utils/telegraf/files/etc/init.d/telegraf @@ -0,0 +1,14 @@ +#!/bin/sh /etc/rc.common + +USE_PROCD=1 + +START=95 +STOP=01 + +start_service() { + procd_open_instance + procd_set_param command /usr/bin/telegraf --config /etc/config/telegraf.conf + procd_set_param stdout 1 + procd_set_param stderr 1 + procd_close_instance +} diff --git a/utils/telegraf/variant-small/plugins/aggregators/all/all.go b/utils/telegraf/variant-small/plugins/aggregators/all/all.go new file mode 100644 index 000000000..001f1303f --- /dev/null +++ b/utils/telegraf/variant-small/plugins/aggregators/all/all.go @@ -0,0 +1,5 @@ +package all + +import ( + //Blank imports for plugins to register themselves +) diff --git a/utils/telegraf/variant-small/plugins/inputs/all/all.go b/utils/telegraf/variant-small/plugins/inputs/all/all.go new file mode 100644 index 000000000..1b30a03a9 --- /dev/null +++ b/utils/telegraf/variant-small/plugins/inputs/all/all.go @@ -0,0 +1,30 @@ +package all + +import ( + //Blank imports for plugins to register themselves + _ "github.com/influxdata/telegraf/plugins/inputs/cpu" + _ "github.com/influxdata/telegraf/plugins/inputs/ethtool" + _ "github.com/influxdata/telegraf/plugins/inputs/internal" + _ "github.com/influxdata/telegraf/plugins/inputs/interrupts" + _ "github.com/influxdata/telegraf/plugins/inputs/ipset" + _ "github.com/influxdata/telegraf/plugins/inputs/iptables" + _ "github.com/influxdata/telegraf/plugins/inputs/kernel" + _ "github.com/influxdata/telegraf/plugins/inputs/mem" + _ "github.com/influxdata/telegraf/plugins/inputs/net" + _ "github.com/influxdata/telegraf/plugins/inputs/net_response" + _ "github.com/influxdata/telegraf/plugins/inputs/ping" + _ "github.com/influxdata/telegraf/plugins/inputs/processes" + _ "github.com/influxdata/telegraf/plugins/inputs/procstat" + _ "github.com/influxdata/telegraf/plugins/inputs/prometheus" + _ "github.com/influxdata/telegraf/plugins/inputs/sensors" + _ "github.com/influxdata/telegraf/plugins/inputs/snmp" + _ "github.com/influxdata/telegraf/plugins/inputs/socket_listener" + _ "github.com/influxdata/telegraf/plugins/inputs/swap" + _ "github.com/influxdata/telegraf/plugins/inputs/syslog" + _ "github.com/influxdata/telegraf/plugins/inputs/system" + _ "github.com/influxdata/telegraf/plugins/inputs/tail" + _ "github.com/influxdata/telegraf/plugins/inputs/tcp_listener" + _ "github.com/influxdata/telegraf/plugins/inputs/udp_listener" + _ "github.com/influxdata/telegraf/plugins/inputs/wireguard" + _ "github.com/influxdata/telegraf/plugins/inputs/wireless" +) diff --git a/utils/telegraf/variant-small/plugins/outputs/all/all.go b/utils/telegraf/variant-small/plugins/outputs/all/all.go new file mode 100644 index 000000000..f0b7694f7 --- /dev/null +++ b/utils/telegraf/variant-small/plugins/outputs/all/all.go @@ -0,0 +1,12 @@ +package all + +import ( + //Blank imports for plugins to register themselves + _ "github.com/influxdata/telegraf/plugins/outputs/exec" + _ "github.com/influxdata/telegraf/plugins/outputs/file" + _ "github.com/influxdata/telegraf/plugins/outputs/graphite" + _ "github.com/influxdata/telegraf/plugins/outputs/http" + _ "github.com/influxdata/telegraf/plugins/outputs/influxdb" + _ "github.com/influxdata/telegraf/plugins/outputs/prometheus_client" + _ "github.com/influxdata/telegraf/plugins/outputs/syslog" +) diff --git a/utils/telegraf/variant-small/plugins/processors/all/all.go b/utils/telegraf/variant-small/plugins/processors/all/all.go new file mode 100644 index 000000000..001f1303f --- /dev/null +++ b/utils/telegraf/variant-small/plugins/processors/all/all.go @@ -0,0 +1,5 @@ +package all + +import ( + //Blank imports for plugins to register themselves +)