[2/2] Added new node_exporter package.
Commit Message
---
config/node_exporter/node_exporter_options | 203 +++++++++++++++++++++
config/rootfiles/packages/node_exporter | 3 +
lfs/node_exporter | 94 ++++++++++
make.sh | 1 +
src/initscripts/packages/node_exporter | 42 +++++
src/paks/node_exporter/install.sh | 31 ++++
src/paks/node_exporter/uninstall.sh | 30 +++
src/paks/node_exporter/update.sh | 27 +++
8 files changed, 431 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
Comments
Hello,
This looks quite good, too.
Just a minor detail below...
> On 6 Jun 2021, at 18:48, Holger Sunke <holger.sunke@posteo.de> wrote:
>
> ---
> config/node_exporter/node_exporter_options | 203 +++++++++++++++++++++
> config/rootfiles/packages/node_exporter | 3 +
> lfs/node_exporter | 94 ++++++++++
> make.sh | 1 +
> src/initscripts/packages/node_exporter | 42 +++++
> src/paks/node_exporter/install.sh | 31 ++++
> src/paks/node_exporter/uninstall.sh | 30 +++
> src/paks/node_exporter/update.sh | 27 +++
> 8 files changed, 431 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
>
> 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..994c8365b
> --- /dev/null
> +++ b/config/rootfiles/packages/node_exporter
> @@ -0,0 +1,3 @@
> +usr/bin/node_exporter
> +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..942816754
> --- /dev/null
> +++ b/lfs/node_exporter
> @@ -0,0 +1,94 @@
> +##############################################################################
> +# #
> +# 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.1.2
> +
> +THISAPP = node_exporter-$(VER)
> +DL_FILE = $(THISAPP).tar.gz
> +DL_FROM = https://github.com/prometheus/node_exporter/archive/v$(VER)/
> +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 = 33c2be846dbd502f9c0efab149a8cbc5
> +
> +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 initscript
> + $(call INSTALL_INITSCRIPT,node_exporter)
> +
> + @rm -rf $(DIR_APP)
> + @$(POSTBUILD)
> +
> diff --git a/make.sh b/make.sh
> index 4af0081e9..671f15558 100755
> --- a/make.sh
> +++ b/make.sh
> @@ -1632,6 +1632,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..b9cbc6ab9
> --- /dev/null
> +++ b/src/initscripts/packages/node_exporter
> @@ -0,0 +1,42 @@
> +#!/bin/sh
> +########################################################################
> +# Begin $rc_base/init.d/
> +#
> +# Description : Prometheus Node Exporter daemon
> +#
> +########################################################################
> +
> +. /etc/sysconfig/rc
> +. ${rc_functions}
> +
> +# read configurable OPTIONS
> +. /etc/node_exporter_options
> +
> +case "${1}" in
> + start)
> + boot_mesg "Starting..."
The “Starting…” line normally has the name of the program.
> + loadproc /usr/bin/node_exporter $OPTIONS > /dev/null 2>&1 &
You are throwing away the output of loadproc as well as any potential error messages.
Does this program have a way to fork itself into the background?
> + ;;
> +
> + stop)
> + boot_mesg "Stopping..."
Same here.
> + 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
> --
> 2.30.2
>
Hello Michael,
the node exporter does not have a daemon mode.
I could alternatively pip the output into a log file:
loadproc /usr/bin/node_exporter $OPTIONS >> /var/log/node_exporter.log
2>&1 &
Should I add a third patch to do my fixes or adjust patch 1 & 2 each?
Kind regards
Holger
Am 08.06.21 um 18:56 schrieb Michael Tremer:
> Hello,
>
> This looks quite good, too.
>
> Just a minor detail below...
>
>> On 6 Jun 2021, at 18:48, Holger Sunke <holger.sunke@posteo.de> wrote:
>>
>> ---
>> config/node_exporter/node_exporter_options | 203 +++++++++++++++++++++
>> config/rootfiles/packages/node_exporter | 3 +
>> lfs/node_exporter | 94 ++++++++++
>> make.sh | 1 +
>> src/initscripts/packages/node_exporter | 42 +++++
>> src/paks/node_exporter/install.sh | 31 ++++
>> src/paks/node_exporter/uninstall.sh | 30 +++
>> src/paks/node_exporter/update.sh | 27 +++
>> 8 files changed, 431 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
>>
>> 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..994c8365b
>> --- /dev/null
>> +++ b/config/rootfiles/packages/node_exporter
>> @@ -0,0 +1,3 @@
>> +usr/bin/node_exporter
>> +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..942816754
>> --- /dev/null
>> +++ b/lfs/node_exporter
>> @@ -0,0 +1,94 @@
>> +##############################################################################
>> +# #
>> +# 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.1.2
>> +
>> +THISAPP = node_exporter-$(VER)
>> +DL_FILE = $(THISAPP).tar.gz
>> +DL_FROM = https://github.com/prometheus/node_exporter/archive/v$(VER)/
>> +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 = 33c2be846dbd502f9c0efab149a8cbc5
>> +
>> +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 initscript
>> + $(call INSTALL_INITSCRIPT,node_exporter)
>> +
>> + @rm -rf $(DIR_APP)
>> + @$(POSTBUILD)
>> +
>> diff --git a/make.sh b/make.sh
>> index 4af0081e9..671f15558 100755
>> --- a/make.sh
>> +++ b/make.sh
>> @@ -1632,6 +1632,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..b9cbc6ab9
>> --- /dev/null
>> +++ b/src/initscripts/packages/node_exporter
>> @@ -0,0 +1,42 @@
>> +#!/bin/sh
>> +########################################################################
>> +# Begin $rc_base/init.d/
>> +#
>> +# Description : Prometheus Node Exporter daemon
>> +#
>> +########################################################################
>> +
>> +. /etc/sysconfig/rc
>> +. ${rc_functions}
>> +
>> +# read configurable OPTIONS
>> +. /etc/node_exporter_options
>> +
>> +case "${1}" in
>> + start)
>> + boot_mesg "Starting..."
>
> The “Starting…” line normally has the name of the program.
>
>> + loadproc /usr/bin/node_exporter $OPTIONS > /dev/null 2>&1 &
>
> You are throwing away the output of loadproc as well as any potential error messages.
>
> Does this program have a way to fork itself into the background?
>
>> + ;;
>> +
>> + stop)
>> + boot_mesg "Stopping..."
>
> Same here.
>
>> + 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
>> --
>> 2.30.2
>>
>
Hello,
> On 9 Jun 2021, at 07:14, Holger Sunke <holger.sunke@posteo.de> wrote:
>
> Hello Michael,
>
> the node exporter does not have a daemon mode.
> I could alternatively pip the output into a log file:
>
> loadproc /usr/bin/node_exporter $OPTIONS >> /var/log/node_exporter.log 2>&1 &
Hmm, so there are two problems here:
* loadproc shows [ OK ] or [ ERROR ] so that the user knows if the program was started successfully. That is now being thrown away.
* Anything useful that node_exporter would print is also being thrown away
This seems to become a common thing that they remove the fork mode, maybe we need a special version of loadproc() that can handle that.
> Should I add a third patch to do my fixes or adjust patch 1 & 2 each?
Let’s work on Go first and get that merged and then come back to this one.
We need to have a solution first and then implement it.
-Michael
> Kind regards
>
> Holger
>
>
> Am 08.06.21 um 18:56 schrieb Michael Tremer:
>> Hello,
>> This looks quite good, too.
>> Just a minor detail below...
>>> On 6 Jun 2021, at 18:48, Holger Sunke <holger.sunke@posteo.de> wrote:
>>>
>>> ---
>>> config/node_exporter/node_exporter_options | 203 +++++++++++++++++++++
>>> config/rootfiles/packages/node_exporter | 3 +
>>> lfs/node_exporter | 94 ++++++++++
>>> make.sh | 1 +
>>> src/initscripts/packages/node_exporter | 42 +++++
>>> src/paks/node_exporter/install.sh | 31 ++++
>>> src/paks/node_exporter/uninstall.sh | 30 +++
>>> src/paks/node_exporter/update.sh | 27 +++
>>> 8 files changed, 431 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
>>>
>>> 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..994c8365b
>>> --- /dev/null
>>> +++ b/config/rootfiles/packages/node_exporter
>>> @@ -0,0 +1,3 @@
>>> +usr/bin/node_exporter
>>> +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..942816754
>>> --- /dev/null
>>> +++ b/lfs/node_exporter
>>> @@ -0,0 +1,94 @@
>>> +##############################################################################
>>> +# #
>>> +# 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.1.2
>>> +
>>> +THISAPP = node_exporter-$(VER)
>>> +DL_FILE = $(THISAPP).tar.gz
>>> +DL_FROM = https://github.com/prometheus/node_exporter/archive/v$(VER)/
>>> +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 = 33c2be846dbd502f9c0efab149a8cbc5
>>> +
>>> +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 initscript
>>> + $(call INSTALL_INITSCRIPT,node_exporter)
>>> +
>>> + @rm -rf $(DIR_APP)
>>> + @$(POSTBUILD)
>>> +
>>> diff --git a/make.sh b/make.sh
>>> index 4af0081e9..671f15558 100755
>>> --- a/make.sh
>>> +++ b/make.sh
>>> @@ -1632,6 +1632,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..b9cbc6ab9
>>> --- /dev/null
>>> +++ b/src/initscripts/packages/node_exporter
>>> @@ -0,0 +1,42 @@
>>> +#!/bin/sh
>>> +########################################################################
>>> +# Begin $rc_base/init.d/
>>> +#
>>> +# Description : Prometheus Node Exporter daemon
>>> +#
>>> +########################################################################
>>> +
>>> +. /etc/sysconfig/rc
>>> +. ${rc_functions}
>>> +
>>> +# read configurable OPTIONS
>>> +. /etc/node_exporter_options
>>> +
>>> +case "${1}" in
>>> + start)
>>> + boot_mesg "Starting..."
>> The “Starting…” line normally has the name of the program.
>>> + loadproc /usr/bin/node_exporter $OPTIONS > /dev/null 2>&1 &
>> You are throwing away the output of loadproc as well as any potential error messages.
>> Does this program have a way to fork itself into the background?
>>> + ;;
>>> +
>>> + stop)
>>> + boot_mesg "Stopping..."
>> Same here.
>>> + 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
>>> --
>>> 2.30.2
>>>
new file mode 100644
@@ -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.
+
new file mode 100644
@@ -0,0 +1,3 @@
+usr/bin/node_exporter
+etc/node_exporter_options
+etc/rc.d/init.d/node_exporter
new file mode 100644
@@ -0,0 +1,94 @@
+##############################################################################
+# #
+# 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.1.2
+
+THISAPP = node_exporter-$(VER)
+DL_FILE = $(THISAPP).tar.gz
+DL_FROM = https://github.com/prometheus/node_exporter/archive/v$(VER)/
+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 = 33c2be846dbd502f9c0efab149a8cbc5
+
+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 initscript
+ $(call INSTALL_INITSCRIPT,node_exporter)
+
+ @rm -rf $(DIR_APP)
+ @$(POSTBUILD)
+
@@ -1632,6 +1632,7 @@ buildipfire() {
lfsmake2 socat
lfsmake2 libcdada
lfsmake2 pmacct
+ lfsmake2 node_exporter
}
buildinstaller() {
new file mode 100644
@@ -0,0 +1,42 @@
+#!/bin/sh
+########################################################################
+# Begin $rc_base/init.d/
+#
+# Description : Prometheus Node Exporter daemon
+#
+########################################################################
+
+. /etc/sysconfig/rc
+. ${rc_functions}
+
+# read configurable OPTIONS
+. /etc/node_exporter_options
+
+case "${1}" in
+ start)
+ boot_mesg "Starting..."
+ loadproc /usr/bin/node_exporter $OPTIONS > /dev/null 2>&1 &
+ ;;
+
+ stop)
+ boot_mesg "Stopping..."
+ 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/
new file mode 100644
@@ -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
new file mode 100644
@@ -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
+
new file mode 100644
@@ -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