From 51313ee0f53b98dbb61d9774ebc6a11207a2b53f Mon Sep 17 00:00:00 2001 From: Christian Breunig Date: Fri, 4 Sep 2026 11:22:25 +0200 Subject: telegraf: T9277: only compile plugins that can be instantiated from the CLI --- scripts/package-build/telegraf/build.sh | 41 +++++++++--- .../telegraf/plugins/inputs/all/all.go | 72 ---------------------- .../telegraf/plugins/outputs/all/all.go | 9 --- 3 files changed, 33 insertions(+), 89 deletions(-) delete mode 100644 scripts/package-build/telegraf/plugins/inputs/all/all.go delete mode 100644 scripts/package-build/telegraf/plugins/outputs/all/all.go (limited to 'scripts') diff --git a/scripts/package-build/telegraf/build.sh b/scripts/package-build/telegraf/build.sh index 2ba511d0..09e6c1ca 100755 --- a/scripts/package-build/telegraf/build.sh +++ b/scripts/package-build/telegraf/build.sh @@ -1,5 +1,4 @@ #!/bin/sh -CWD=$(pwd) set -e BUILD_ARCH=$(dpkg-architecture -qDEB_TARGET_ARCH) @@ -10,18 +9,44 @@ if [ ! -d ${SRC} ]; then exit 1 fi -PLUGIN_DIR=${CWD}/plugins +# T9277: Only compile in the plugins that can actually be instantiated from the +# VyOS CLI. Telegraf ships ~240 inputs and ~60 outputs, which produces a 198 MB +# binary; the list below brings that down to about 28 MB. +# +# These names are the plugins referenced by the vyos-1x telegraf templates in +# data/templates/telegraf/. When a plugin is added there, it MUST be added here +# too, otherwise telegraf fails to start with an "unknown plugin" error. +TELEGRAF_INPUTS="chrony conntrack cpu disk diskio ethtool exec internal + interrupts kernel linux_sysctl_fs mem net netstat nstat + processes syslog system systemd_units" +TELEGRAF_OUTPUTS="azure_data_explorer http influxdb_v2 loki prometheus_client" +# "influx" backs [[inputs.exec]] data_format, "splunkmetric" backs the Splunk +# [[outputs.http]] data_format. +TELEGRAF_PARSERS="influx" +TELEGRAF_SERIALIZERS="splunkmetric" -echo "I: Selecting Input plugins" -cp ${PLUGIN_DIR}/inputs/all/all.go ${SRC}/plugins/inputs/all/all.go +# Telegraf selects plugins via Go build tags: the "custom" tag disables the +# compile-everything default, and every plugin is then opted back in by name. +BUILDTAGS="custom" +for plugin in ${TELEGRAF_INPUTS}; do + BUILDTAGS="${BUILDTAGS},inputs.${plugin}" +done +for plugin in ${TELEGRAF_OUTPUTS}; do + BUILDTAGS="${BUILDTAGS},outputs.${plugin}" +done +for plugin in ${TELEGRAF_PARSERS}; do + BUILDTAGS="${BUILDTAGS},parsers.${plugin}" +done +for plugin in ${TELEGRAF_SERIALIZERS}; do + BUILDTAGS="${BUILDTAGS},serializers.${plugin}" +done -echo "I: Selecting Output plugins" -cp ${PLUGIN_DIR}/outputs/all/all.go ${SRC}/plugins/outputs/all/all.go +echo "I: Selected plugins: ${BUILDTAGS}" echo "I: Build Debian ${BUILD_ARCH} package" cd ${SRC} export PATH=/opt/go/bin:$PATH # Generate default telegraf config -go run ./cmd/telegraf config > etc/telegraf.conf -LDFLAGS=-w make "${BUILD_ARCH}.deb" +go run -tags "${BUILDTAGS}" ./cmd/telegraf config > etc/telegraf.conf +make BUILDTAGS="${BUILDTAGS}" "${BUILD_ARCH}.deb" diff --git a/scripts/package-build/telegraf/plugins/inputs/all/all.go b/scripts/package-build/telegraf/plugins/inputs/all/all.go deleted file mode 100644 index 8265681b..00000000 --- a/scripts/package-build/telegraf/plugins/inputs/all/all.go +++ /dev/null @@ -1,72 +0,0 @@ -package all - -import ( - //Blank imports for plugins to register themselves - _ "github.com/influxdata/telegraf/plugins/inputs/azure_storage_queue" - _ "github.com/influxdata/telegraf/plugins/inputs/bond" - _ "github.com/influxdata/telegraf/plugins/inputs/cgroup" - _ "github.com/influxdata/telegraf/plugins/inputs/chrony" - _ "github.com/influxdata/telegraf/plugins/inputs/conntrack" - _ "github.com/influxdata/telegraf/plugins/inputs/cpu" - _ "github.com/influxdata/telegraf/plugins/inputs/disk" - _ "github.com/influxdata/telegraf/plugins/inputs/diskio" - _ "github.com/influxdata/telegraf/plugins/inputs/disque" - _ "github.com/influxdata/telegraf/plugins/inputs/dmcache" - _ "github.com/influxdata/telegraf/plugins/inputs/dns_query" - _ "github.com/influxdata/telegraf/plugins/inputs/docker" - _ "github.com/influxdata/telegraf/plugins/inputs/docker_log" - _ "github.com/influxdata/telegraf/plugins/inputs/ethtool" - _ "github.com/influxdata/telegraf/plugins/inputs/exec" - _ "github.com/influxdata/telegraf/plugins/inputs/execd" - _ "github.com/influxdata/telegraf/plugins/inputs/file" - _ "github.com/influxdata/telegraf/plugins/inputs/filecount" - _ "github.com/influxdata/telegraf/plugins/inputs/filestat" - _ "github.com/influxdata/telegraf/plugins/inputs/fireboard" - _ "github.com/influxdata/telegraf/plugins/inputs/hddtemp" - _ "github.com/influxdata/telegraf/plugins/inputs/hugepages" - _ "github.com/influxdata/telegraf/plugins/inputs/influxdb" - _ "github.com/influxdata/telegraf/plugins/inputs/influxdb_listener" - _ "github.com/influxdata/telegraf/plugins/inputs/influxdb_v2_listener" - _ "github.com/influxdata/telegraf/plugins/inputs/intel_pmu" - _ "github.com/influxdata/telegraf/plugins/inputs/intel_powerstat" - _ "github.com/influxdata/telegraf/plugins/inputs/intel_rdt" - _ "github.com/influxdata/telegraf/plugins/inputs/internal" - _ "github.com/influxdata/telegraf/plugins/inputs/internet_speed" - _ "github.com/influxdata/telegraf/plugins/inputs/interrupts" - _ "github.com/influxdata/telegraf/plugins/inputs/ipmi_sensor" - _ "github.com/influxdata/telegraf/plugins/inputs/ipset" - _ "github.com/influxdata/telegraf/plugins/inputs/iptables" - _ "github.com/influxdata/telegraf/plugins/inputs/ipvs" - _ "github.com/influxdata/telegraf/plugins/inputs/kernel" - _ "github.com/influxdata/telegraf/plugins/inputs/kernel_vmstat" - _ "github.com/influxdata/telegraf/plugins/inputs/mdstat" - _ "github.com/influxdata/telegraf/plugins/inputs/mem" - _ "github.com/influxdata/telegraf/plugins/inputs/net" - _ "github.com/influxdata/telegraf/plugins/inputs/netstat" - _ "github.com/influxdata/telegraf/plugins/inputs/nstat" - _ "github.com/influxdata/telegraf/plugins/inputs/ping" - _ "github.com/influxdata/telegraf/plugins/inputs/powerdns_recursor" - _ "github.com/influxdata/telegraf/plugins/inputs/processes" - _ "github.com/influxdata/telegraf/plugins/inputs/procstat" - _ "github.com/influxdata/telegraf/plugins/inputs/sensors" - _ "github.com/influxdata/telegraf/plugins/inputs/sflow" - _ "github.com/influxdata/telegraf/plugins/inputs/slab" - _ "github.com/influxdata/telegraf/plugins/inputs/smart" - _ "github.com/influxdata/telegraf/plugins/inputs/snmp" - _ "github.com/influxdata/telegraf/plugins/inputs/snmp_legacy" - _ "github.com/influxdata/telegraf/plugins/inputs/snmp_trap" - _ "github.com/influxdata/telegraf/plugins/inputs/socket_listener" - _ "github.com/influxdata/telegraf/plugins/inputs/socketstat" - _ "github.com/influxdata/telegraf/plugins/inputs/syslog" - _ "github.com/influxdata/telegraf/plugins/inputs/sysstat" - _ "github.com/influxdata/telegraf/plugins/inputs/system" - _ "github.com/influxdata/telegraf/plugins/inputs/systemd_units" - _ "github.com/influxdata/telegraf/plugins/inputs/tail" - _ "github.com/influxdata/telegraf/plugins/inputs/tcp_listener" - _ "github.com/influxdata/telegraf/plugins/inputs/temp" - _ "github.com/influxdata/telegraf/plugins/inputs/twemproxy" - _ "github.com/influxdata/telegraf/plugins/inputs/udp_listener" - _ "github.com/influxdata/telegraf/plugins/inputs/wireguard" - _ "github.com/influxdata/telegraf/plugins/inputs/wireless" - _ "github.com/influxdata/telegraf/plugins/inputs/x509_cert" -) diff --git a/scripts/package-build/telegraf/plugins/outputs/all/all.go b/scripts/package-build/telegraf/plugins/outputs/all/all.go deleted file mode 100644 index 49f7e63d..00000000 --- a/scripts/package-build/telegraf/plugins/outputs/all/all.go +++ /dev/null @@ -1,9 +0,0 @@ -package all - -import ( - //Blank imports for plugins to register themselves - _ "github.com/influxdata/telegraf/plugins/outputs/azure_data_explorer" - _ "github.com/influxdata/telegraf/plugins/outputs/http" - _ "github.com/influxdata/telegraf/plugins/outputs/influxdb_v2" - _ "github.com/influxdata/telegraf/plugins/outputs/prometheus_client" -) -- cgit v1.2.3