[3/3] Added new node_exporter 1.2.0 package.

Message ID 20210726194644.85698-2-holger.sunke@posteo.de
State New
Headers show
Series [1/3] Added x86_64 i586 aarch64 armv5tel support for GO language required for node_exporter compilation. | expand

Commit Message

Holger Sunke July 26, 2021, 7:46 p.m. UTC
---
 config/node_exporter/node_exporter_options | 203 +++++++++++++++++++++
 config/rootfiles/packages/node_exporter    |   4 +
 lfs/node_exporter                          |  98 ++++++++++
 make.sh                                    |   1 +
 src/initscripts/packages/node_exporter     |  39 ++++
 src/paks/node_exporter/install.sh          |  31 ++++
 src/paks/node_exporter/uninstall.sh        |  30 +++
 src/paks/node_exporter/update.sh           |  27 +++
 src/scripts/node_exporter_starter.sh       |   7 +
 9 files changed, 440 insertions(+)
 create mode 100644 config/node_exporter/node_exporter_options
 create mode 100644 config/rootfiles/packages/node_exporter
 create mode 100644 lfs/node_exporter
 create mode 100644 src/initscripts/packages/node_exporter
 create mode 100644 src/paks/node_exporter/install.sh
 create mode 100644 src/paks/node_exporter/uninstall.sh
 create mode 100644 src/paks/node_exporter/update.sh
 create mode 100644 src/scripts/node_exporter_starter.sh

Patch

diff --git a/config/node_exporter/node_exporter_options b/config/node_exporter/node_exporter_options
new file mode 100644
index 000000000..f614b1102
--- /dev/null
+++ b/config/node_exporter/node_exporter_options
@@ -0,0 +1,203 @@ 
+# Customize node_exporter startup command line flags by editing OPTIONS below:
+
+export OPTIONS="--web.listen-address=:9100"
+
+#Flags:
+#  -h, --help                     Show context-sensitive help (also try
+#                                 --help-long and --help-man).
+#      --collector.bcache.priorityStats  
+#                                 Expose expensive priority stats.
+#      --collector.cpu.info       Enables metric cpu_info
+#      --collector.cpu.info.flags-include=COLLECTOR.CPU.INFO.FLAGS-INCLUDE  
+#                                 Filter the `flags` field in cpuInfo with a
+#                                 value that must be a regular expression
+#      --collector.cpu.info.bugs-include=COLLECTOR.CPU.INFO.BUGS-INCLUDE  
+#                                 Filter the `bugs` field in cpuInfo with a value
+#                                 that must be a regular expression
+#      --collector.diskstats.ignored-devices="^(ram|loop|fd|(h|s|v|xv)d[a-z]|nvme\\d+n\\d+p)\\d+$"  
+#                                 Regexp of devices to ignore for diskstats.
+#      --collector.filesystem.ignored-mount-points="^/(dev|proc|sys|var/lib/docker/.+)($|/)"  
+#                                 Regexp of mount points to ignore for filesystem
+#                                 collector.
+#      --collector.filesystem.ignored-fs-types="^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$"  
+#                                 Regexp of filesystem types to ignore for
+#                                 filesystem collector.
+#      --collector.ipvs.backend-labels="local_address,local_port,remote_address,remote_port,proto,local_mark"  
+#                                 Comma separated list for IPVS backend stats
+#                                 labels.
+#      --collector.netclass.ignored-devices="^$"  
+#                                 Regexp of net devices to ignore for netclass
+#                                 collector.
+#      --collector.netdev.device-include=COLLECTOR.NETDEV.DEVICE-INCLUDE  
+#                                 Regexp of net devices to include (mutually
+#                                 exclusive to device-exclude).
+#      --collector.netdev.device-exclude=COLLECTOR.NETDEV.DEVICE-EXCLUDE  
+#                                 Regexp of net devices to exclude (mutually
+#                                 exclusive to device-include).
+#      --collector.netstat.fields="^(.*_(InErrors|InErrs)|Ip_Forwarding|Ip(6|Ext)_(InOctets|OutOctets)|Icmp6?_(InMsgs|OutMsgs)|TcpExt_(Listen.*|Syncookies.*|TCPSynRetrans)|Tcp_(ActiveOpens|InSegs|OutSegs|OutRsts|PassiveOpens|RetransSegs|CurrEstab)|Udp6?_(InDatagrams|OutDatagrams|NoPorts|RcvbufErrors|SndbufErrors))$"  
+#                                 Regexp of fields to return for netstat
+#                                 collector.
+#      --collector.ntp.server="127.0.0.1"  
+#                                 NTP server to use for ntp collector
+#      --collector.ntp.protocol-version=4  
+#                                 NTP protocol version
+#      --collector.ntp.server-is-local  
+#                                 Certify that collector.ntp.server address is
+#                                 not a public ntp server
+#      --collector.ntp.ip-ttl=1   IP TTL to use while sending NTP query
+#      --collector.ntp.max-distance=3.46608s  
+#                                 Max accumulated distance to the root
+#      --collector.ntp.local-offset-tolerance=1ms  
+#                                 Offset between local clock and local ntpd time
+#                                 to tolerate
+#      --path.procfs="/proc"      procfs mountpoint.
+#      --path.sysfs="/sys"        sysfs mountpoint.
+#      --path.rootfs="/"          rootfs mountpoint.
+#      --collector.perf.cpus=""   List of CPUs from which perf metrics should be
+#                                 collected
+#      --collector.perf.tracepoint=COLLECTOR.PERF.TRACEPOINT ...  
+#                                 perf tracepoint that should be collected
+#      --collector.powersupply.ignored-supplies="^$"  
+#                                 Regexp of power supplies to ignore for
+#                                 powersupplyclass collector.
+#      --collector.qdisc.fixtures=""  
+#                                 test fixtures to use for qdisc collector
+#                                 end-to-end testing
+#      --collector.runit.servicedir="/etc/service"  
+#                                 Path to runit service directory.
+#      --collector.supervisord.url="http://localhost:9001/RPC2"  
+#                                 XML RPC endpoint.
+#      --collector.systemd.unit-include=".+"  
+#                                 Regexp of systemd units to include. Units must
+#                                 both match include and not match exclude to be
+#                                 included.
+#      --collector.systemd.unit-exclude=".+\\.(automount|device|mount|scope|slice)"  
+#                                 Regexp of systemd units to exclude. Units must
+#                                 both match include and not match exclude to be
+#                                 included.
+#      --collector.systemd.enable-task-metrics  
+#                                 Enables service unit tasks metrics
+#                                 unit_tasks_current and unit_tasks_max
+#      --collector.systemd.enable-restarts-metrics  
+#                                 Enables service unit metric
+#                                 service_restart_total
+#      --collector.systemd.enable-start-time-metrics  
+#                                 Enables service unit metric
+#                                 unit_start_time_seconds
+#      --collector.textfile.directory=""  
+#                                 Directory to read text files with metrics from.
+#      --collector.vmstat.fields="^(oom_kill|pgpg|pswp|pg.*fault).*"  
+#                                 Regexp of fields to return for vmstat
+#                                 collector.
+#      --collector.wifi.fixtures=""  
+#                                 test fixtures to use for wifi collector metrics
+#      --collector.arp            Enable the arp collector (default: enabled).
+#      --collector.bcache         Enable the bcache collector (default: enabled).
+#      --collector.bonding        Enable the bonding collector (default:
+#                                 enabled).
+#      --collector.btrfs          Enable the btrfs collector (default: enabled).
+#      --collector.buddyinfo      Enable the buddyinfo collector (default:
+#                                 disabled).
+#      --collector.conntrack      Enable the conntrack collector (default:
+#                                 enabled).
+#      --collector.cpu            Enable the cpu collector (default: enabled).
+#      --collector.cpufreq        Enable the cpufreq collector (default:
+#                                 enabled).
+#      --collector.diskstats      Enable the diskstats collector (default:
+#                                 enabled).
+#      --collector.drbd           Enable the drbd collector (default: disabled).
+#      --collector.edac           Enable the edac collector (default: enabled).
+#      --collector.entropy        Enable the entropy collector (default:
+#                                 enabled).
+#      --collector.fibrechannel   Enable the fibrechannel collector (default:
+#                                 enabled).
+#      --collector.filefd         Enable the filefd collector (default: enabled).
+#      --collector.filesystem     Enable the filesystem collector (default:
+#                                 enabled).
+#      --collector.hwmon          Enable the hwmon collector (default: enabled).
+#      --collector.infiniband     Enable the infiniband collector (default:
+#                                 enabled).
+#      --collector.interrupts     Enable the interrupts collector (default:
+#                                 disabled).
+#      --collector.ipvs           Enable the ipvs collector (default: enabled).
+#      --collector.ksmd           Enable the ksmd collector (default: disabled).
+#      --collector.loadavg        Enable the loadavg collector (default:
+#                                 enabled).
+#      --collector.logind         Enable the logind collector (default:
+#                                 disabled).
+#      --collector.mdadm          Enable the mdadm collector (default: enabled).
+#      --collector.meminfo        Enable the meminfo collector (default:
+#                                 enabled).
+#      --collector.meminfo_numa   Enable the meminfo_numa collector (default:
+#                                 disabled).
+#      --collector.mountstats     Enable the mountstats collector (default:
+#                                 disabled).
+#      --collector.netclass       Enable the netclass collector (default:
+#                                 enabled).
+#      --collector.netdev         Enable the netdev collector (default: enabled).
+#      --collector.netstat        Enable the netstat collector (default:
+#                                 enabled).
+#      --collector.network_route  Enable the network_route collector (default:
+#                                 disabled).
+#      --collector.nfs            Enable the nfs collector (default: enabled).
+#      --collector.nfsd           Enable the nfsd collector (default: enabled).
+#      --collector.ntp            Enable the ntp collector (default: disabled).
+#      --collector.perf           Enable the perf collector (default: disabled).
+#      --collector.powersupplyclass  
+#                                 Enable the powersupplyclass collector (default:
+#                                 enabled).
+#      --collector.pressure       Enable the pressure collector (default:
+#                                 enabled).
+#      --collector.processes      Enable the processes collector (default:
+#                                 disabled).
+#      --collector.qdisc          Enable the qdisc collector (default: disabled).
+#      --collector.rapl           Enable the rapl collector (default: enabled).
+#      --collector.runit          Enable the runit collector (default: disabled).
+#      --collector.schedstat      Enable the schedstat collector (default:
+#                                 enabled).
+#      --collector.sockstat       Enable the sockstat collector (default:
+#                                 enabled).
+#      --collector.softnet        Enable the softnet collector (default:
+#                                 enabled).
+#      --collector.stat           Enable the stat collector (default: enabled).
+#      --collector.supervisord    Enable the supervisord collector (default:
+#                                 disabled).
+#      --collector.systemd        Enable the systemd collector (default:
+#                                 disabled).
+#      --collector.tcpstat        Enable the tcpstat collector (default:
+#                                 disabled).
+#      --collector.textfile       Enable the textfile collector (default:
+#                                 enabled).
+#      --collector.thermal_zone   Enable the thermal_zone collector (default:
+#                                 enabled).
+#      --collector.time           Enable the time collector (default: enabled).
+#      --collector.timex          Enable the timex collector (default: enabled).
+#      --collector.udp_queues     Enable the udp_queues collector (default:
+#                                 enabled).
+#      --collector.uname          Enable the uname collector (default: enabled).
+#      --collector.vmstat         Enable the vmstat collector (default: enabled).
+#      --collector.wifi           Enable the wifi collector (default: disabled).
+#      --collector.xfs            Enable the xfs collector (default: enabled).
+#      --collector.zfs            Enable the zfs collector (default: enabled).
+#      --collector.zoneinfo       Enable the zoneinfo collector (default:
+#                                 disabled).
+#      --web.listen-address=":9100"  
+#                                 Address on which to expose metrics and web
+#                                 interface.
+#      --web.telemetry-path="/metrics"  
+#                                 Path under which to expose metrics.
+#      --web.disable-exporter-metrics  
+#                                 Exclude metrics about the exporter itself
+#                                 (promhttp_*, process_*, go_*).
+#      --web.max-requests=40      Maximum number of parallel scrape requests. Use
+#                                 0 to disable.
+#      --collector.disable-defaults  
+#                                 Set all collectors to disabled by default.
+#      --web.config=""            [EXPERIMENTAL] Path to config yaml file that
+#                                 can enable TLS or authentication.
+#      --log.level=info           Only log messages with the given severity or
+#                                 above. One of: [debug, info, warn, error]
+#      --log.format=logfmt        Output format of log messages. One of: [logfmt,
+#                                 json]
+#      --version                  Show application version.
+
diff --git a/config/rootfiles/packages/node_exporter b/config/rootfiles/packages/node_exporter
new file mode 100644
index 000000000..d20fb58a4
--- /dev/null
+++ b/config/rootfiles/packages/node_exporter
@@ -0,0 +1,4 @@ 
+usr/bin/node_exporter
+usr/bin/node_exporter_starter.sh
+etc/node_exporter_options
+etc/rc.d/init.d/node_exporter
diff --git a/lfs/node_exporter b/lfs/node_exporter
new file mode 100644
index 000000000..8427eb18a
--- /dev/null
+++ b/lfs/node_exporter
@@ -0,0 +1,98 @@ 
+##############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 1.2.0
+
+THISAPP    = node_exporter-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+SUP_ARCH   = x86_64 i586 aarch64 armv5tel
+PROG       = node_exporter
+PAK_VER    = 1
+
+DEPS       = ""
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 54a096edcaa0a3e1100573d603864fa6
+
+install : $(TARGET)
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download : $(patsubst %,$(DIR_DL)/%,$(objects))
+
+md5 : $(subst %,%_MD5,$(objects))
+
+dist :
+	@$(PAK)
+
+###############################################################################
+# Downloading, checking, md5sum
+###############################################################################
+
+$(patsubst %,$(DIR_CHK)/%,$(objects)) :
+	@$(CHECK)
+
+$(patsubst %,$(DIR_DL)/%,$(objects)) :
+	@$(LOAD)
+
+$(subst %,%_MD5,$(objects)) :
+	@$(MD5)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+	@$(PREBUILD)
+	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+	cd $(DIR_APP) && make build $(MAKETUNING) $(EXTRA_MAKE)
+
+	# install compiled binary
+	cd $(DIR_APP) && cp node_exporter /usr/bin
+
+	# install configuration file
+	install -v -m 644 $(DIR_SRC)/config/node_exporter/node_exporter_options \
+		/etc/node_exporter_options
+
+	# install startup script
+	install -v -m 744 $(DIR_SRC)/src/scripts/node_exporter_starter.sh \
+		/usr/bin/node_exporter_starter.sh
+
+	# install initscript
+	$(call INSTALL_INITSCRIPT,node_exporter)
+
+	@rm -rf $(DIR_APP)
+	@$(POSTBUILD)
+
diff --git a/make.sh b/make.sh
index 83bd9faeb..3dcfaf1db 100755
--- a/make.sh
+++ b/make.sh
@@ -1624,6 +1624,7 @@  buildipfire() {
   lfsmake2 socat
   lfsmake2 libcdada
   lfsmake2 pmacct
+  lfsmake2 node_exporter
 }
 
 buildinstaller() {
diff --git a/src/initscripts/packages/node_exporter b/src/initscripts/packages/node_exporter
new file mode 100644
index 000000000..7c19642d9
--- /dev/null
+++ b/src/initscripts/packages/node_exporter
@@ -0,0 +1,39 @@ 
+#!/bin/sh
+########################################################################
+# Begin $rc_base/init.d/
+#
+# Description : Prometheus Node Exporter daemon
+#
+########################################################################
+
+. /etc/sysconfig/rc
+. ${rc_functions}
+
+case "${1}" in
+	start)
+		boot_mesg "Starting Node Exporter..."
+		loadproc /usr/bin/node_exporter_starter.sh
+		;;
+
+	stop)
+		boot_mesg "Stopping Node Exporter..."
+		killproc /usr/bin/node_exporter
+		;;
+
+	restart)
+		${0} stop
+		sleep 1
+		${0} start
+		;;
+
+	status)
+		statusproc /usr/bin/node_exporter
+		;;
+
+	*)
+		echo "Usage: ${0} {start|stop|restart|status}"
+		exit 1
+		;;
+esac
+
+# End $rc_base/init.d/
diff --git a/src/paks/node_exporter/install.sh b/src/paks/node_exporter/install.sh
new file mode 100644
index 000000000..e9272d7cb
--- /dev/null
+++ b/src/paks/node_exporter/install.sh
@@ -0,0 +1,31 @@ 
+#!/bin/bash
+############################################################################
+#                                                                          #
+# This file is part of the IPFire Firewall.                                #
+#                                                                          #
+# IPFire is free software; you can redistribute it and/or modify           #
+# it under the terms of the GNU General Public License as published by     #
+# the Free Software Foundation; either version 2 of the License, or        #
+# (at your option) any later version.                                      #
+#                                                                          #
+# IPFire is distributed in the hope that it will be useful,                #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of           #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
+# GNU General Public License for more details.                             #
+#                                                                          #
+# You should have received a copy of the GNU General Public License        #
+# along with IPFire; if not, write to the Free Software                    #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA #
+#                                                                          #
+# Copyright (C) 2007 IPFire-Team <info@ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+extract_files
+restore_backup ${NAME}
+start_service --background ${NAME}
+
+ln -svf  ../init.d/node_exporter /etc/rc.d/rc0.d/K30node_exporter
+ln -svf  ../init.d/node_exporter /etc/rc.d/rc3.d/S40node_exporter
+ln -svf  ../init.d/node_exporter /etc/rc.d/rc6.d/K30node_exporter
diff --git a/src/paks/node_exporter/uninstall.sh b/src/paks/node_exporter/uninstall.sh
new file mode 100644
index 000000000..710baf8b4
--- /dev/null
+++ b/src/paks/node_exporter/uninstall.sh
@@ -0,0 +1,30 @@ 
+#!/bin/bash
+############################################################################
+#                                                                          #
+# This file is part of the IPFire Firewall.                                #
+#                                                                          #
+# IPFire is free software; you can redistribute it and/or modify           #
+# it under the terms of the GNU General Public License as published by     #
+# the Free Software Foundation; either version 2 of the License, or        #
+# (at your option) any later version.                                      #
+#                                                                          #
+# IPFire is distributed in the hope that it will be useful,                #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of           #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
+# GNU General Public License for more details.                             #
+#                                                                          #
+# You should have received a copy of the GNU General Public License        #
+# along with IPFire; if not, write to the Free Software                    #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA #
+#                                                                          #
+# Copyright (C) 2007 IPFire-Team <info@ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+/etc/init.d/node_exporter stop
+make_backup ${NAME}
+remove_files
+
+rm -rfv /etc/rc.d/rc*.d/*node_exporter
+
diff --git a/src/paks/node_exporter/update.sh b/src/paks/node_exporter/update.sh
new file mode 100644
index 000000000..99776659c
--- /dev/null
+++ b/src/paks/node_exporter/update.sh
@@ -0,0 +1,27 @@ 
+#!/bin/bash
+############################################################################
+#                                                                          #
+# This file is part of the IPFire Firewall.                                #
+#                                                                          #
+# IPFire is free software; you can redistribute it and/or modify           #
+# it under the terms of the GNU General Public License as published by     #
+# the Free Software Foundation; either version 2 of the License, or        #
+# (at your option) any later version.                                      #
+#                                                                          #
+# IPFire is distributed in the hope that it will be useful,                #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of           #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
+# GNU General Public License for more details.                             #
+#                                                                          #
+# You should have received a copy of the GNU General Public License        #
+# along with IPFire; if not, write to the Free Software                    #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA #
+#                                                                          #
+# Copyright (C) 2007-2020 IPFire-Team <info@ipfire.org>.                   #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+extract_backup_includes
+./uninstall.sh
+./install.sh
diff --git a/src/scripts/node_exporter_starter.sh b/src/scripts/node_exporter_starter.sh
new file mode 100644
index 000000000..ec6d3582b
--- /dev/null
+++ b/src/scripts/node_exporter_starter.sh
@@ -0,0 +1,7 @@ 
+#/bin/bash
+
+# read configurable OPTIONS
+. /etc/node_exporter_options
+
+/usr/bin/node_exporter $OPTIONS >> /var/log/node_exporter.log 2>&1 &
+