~alpine/aports

testing/prometheus-node-exporter: import from sr.ht v1 APPLIED

Drew DeVault: 1
 testing/prometheus-node-exporter: import from sr.ht

 8 files changed, 45 insertions(+), 92 deletions(-)
Export patchset (mbox)
How do I use this?

Copy & paste the following snippet into your terminal to import this patchset into git:

curl -s https://lists.alpinelinux.org/~alpine/aports/patches/3226/mbox | git am -3
Learn more about email & git

[PATCH] testing/prometheus-node-exporter: import from sr.ht Export this patch

This imports the package we made for sr.ht monitoring, which is more in
line with the design of prometheus-related packages in community.
---
Tiago, what do you think of this approach? If you like it, let's take
these changes and move this package into community. I can also
adopt/maintain the package if you prefer.

 testing/prometheus-node-exporter/APKBUILD     | 49 ++++++++++---------
 .../disable-go-race-detector.patch            | 33 -------------
 .../node-exporter.confd                       |  7 ---
 .../node-exporter.initd                       | 22 ---------
 .../prometheus-node-exporter.confd            |  4 ++
 .../prometheus-node-exporter.initd            | 13 +++++
 .../prometheus-node-exporter.pre-install      |  8 ++-
 .../prometheus-node-exporter.pre-upgrade      |  1 -
 8 files changed, 45 insertions(+), 92 deletions(-)
 delete mode 100644 testing/prometheus-node-exporter/disable-go-race-detector.patch
 delete mode 100644 testing/prometheus-node-exporter/node-exporter.confd
 delete mode 100755 testing/prometheus-node-exporter/node-exporter.initd
 create mode 100644 testing/prometheus-node-exporter/prometheus-node-exporter.confd
 create mode 100644 testing/prometheus-node-exporter/prometheus-node-exporter.initd
 mode change 100755 => 100644 testing/prometheus-node-exporter/prometheus-node-exporter.pre-install
 delete mode 120000 testing/prometheus-node-exporter/prometheus-node-exporter.pre-upgrade

diff --git a/testing/prometheus-node-exporter/APKBUILD b/testing/prometheus-node-exporter/APKBUILD
index c8af5fd1be..b785d4eb56 100644
--- a/testing/prometheus-node-exporter/APKBUILD
+++ b/testing/prometheus-node-exporter/APKBUILD
@@ -1,44 +1,45 @@
# Contributor: Tiago Ilieve <tiago.myhro@gmail.com>
# Maintainer: Tiago Ilieve <tiago.myhro@gmail.com>
# Contributor: Tiago Ilieve <tiago.myhro@gmail.com>
# Contributor: Drew DeVault <sir@cmpwn.com>
pkgname=prometheus-node-exporter
_pkgname=node_exporter
pkgver=0.18.1
pkgrel=2
pkgdesc="Prometheus exporter for machine metrics"
pkgrel=3
pkgdesc="prometheus exporter for machine metrics"
url="https://github.com/prometheus/node_exporter"
arch="all"
license="Apache-2.0"
makedepends="go>=1.11 bash sed"
install="$pkgname.pre-install $pkgname.pre-upgrade"
install="prometheus-node-exporter.pre-install"
makedepends="go"
source="
	$pkgname-$pkgver.tar.gz::https://github.com/prometheus/node_exporter/archive/v$pkgver.tar.gz
	prometheus-node-exporter.initd
	prometheus-node-exporter.confd
"
subpackages="$pkgname-openrc"
source="$_pkgname-$pkgver.tar.gz::https://github.com/prometheus/node_exporter/archive/v$pkgver.tar.gz
	disable-go-race-detector.patch
	node-exporter.confd
	node-exporter.initd"
builddir="$srcdir/$_pkgname-$pkgver"
builddir="$srcdir/node_exporter-$pkgver"

build() {
	cd "$builddir"

	go build -v -ldflags "-s -w -X github.com/prometheus/common/version.Version=$pkgver" -o node_exporter
	go build
}

check() {
	cd "$builddir"

	make test
	./node_exporter --version
	go test
}

package() {
	cd "$builddir"

	install -Dm644 "$srcdir/node-exporter.confd" "$pkgdir"/etc/conf.d/node-exporter
	install -Dm755 "$srcdir/node-exporter.initd" "$pkgdir"/etc/init.d/node-exporter
	install -Dm755 ./node_exporter "$pkgdir"/usr/bin/node_exporter
    mkdir -p "$pkgdir"/usr/bin
    mkdir -p "$pkgdir"/etc/init.d
    mkdir -p "$pkgdir"/etc/conf.d
	install -Dm755 node_exporter "$pkgdir"/usr/bin/prometheus_node_exporter
	install -Dm755 "$srcdir"/prometheus-node-exporter.initd \
		"$pkgdir"/etc/init.d/prometheus-node-exporter
	install -Dm644 "$srcdir"/prometheus-node-exporter.confd \
		"$pkgdir"/etc/conf.d/prometheus-node-exporter
}

sha512sums="cf2b854fbec1ba39b18432cdc11ab507ebc5b2828e6b34b4f49af9b949fcd365cb3e5eb1e265d0825783810c6b1572a8b3512ec27a46e5c83f89a505590159c0  node_exporter-0.18.1.tar.gz
36952039e5db39aa06a2ca16fa5d318f22eb967e3e9b1363508b2f3d3d0b14e5df111c77ce951bea2f65dd2be0a0a1582be245acfe4641623381a940204e53d9  disable-go-race-detector.patch
592d3f17a3cf487d97a14c803dded07d2dfb112b159ab1a3575310fc0176fc3255ddad6657f16a8d6d3c161bfb03c203a6271ec6e6395b75716a14b0de8baced  node-exporter.confd
df006b184c3b2d5e773044838db7143dc3a64e621f4da6b106f41915a07d5cef32933ab9bb44464f10c132f86997ae7753ae19627afd4ba6cfb125161786dfe0  node-exporter.initd"
sha512sums="cf2b854fbec1ba39b18432cdc11ab507ebc5b2828e6b34b4f49af9b949fcd365cb3e5eb1e265d0825783810c6b1572a8b3512ec27a46e5c83f89a505590159c0  prometheus-node-exporter-0.18.1.tar.gz
fe8320b47d93c9590ccf9a3456f74b90a960fd46a7561202470687de2fc5d2caebded682d2274bec71602e694b778f282d5876400da60d716ce3d3cee5e45b99  prometheus-node-exporter.initd
a19cb380e12a292af3645de18d59ebac6ce4b521281f1761d069b5d8bd574a83c92265a3a4023e372fce7ec9bab0f1849e9953cf81801fc24576acec20afb964  prometheus-node-exporter.confd"
diff --git a/testing/prometheus-node-exporter/disable-go-race-detector.patch b/testing/prometheus-node-exporter/disable-go-race-detector.patch
deleted file mode 100644
index ba3c4cf571..0000000000
--- a/testing/prometheus-node-exporter/disable-go-race-detector.patch
@@ -1,33 +0,0 @@
From 5136eb5266b2ff022a44a3316a07d02b4dcc9e08 Mon Sep 17 00:00:00 2001
From: Tiago Ilieve <tiago.myhro@gmail.com>
Date: Sun, 12 May 2019 11:21:01 +0200
Subject: [PATCH] Disable Go race detector

Go race detector is not supported on musl[1].

[1]: https://github.com/golang/go/issues/14481
---
 Makefile.common | 7 -------
 1 file changed, 7 deletions(-)

diff --git a/Makefile.common b/Makefile.common
index 4f18ea5..18085e4 100644
--- a/Makefile.common
+++ b/Makefile.common
@@ -94,13 +94,6 @@ BUILD_DOCKER_ARCHS = $(addprefix common-docker-,$(DOCKER_ARCHS))
 PUBLISH_DOCKER_ARCHS = $(addprefix common-docker-publish-,$(DOCKER_ARCHS))
 TAG_DOCKER_ARCHS = $(addprefix common-docker-tag-latest-,$(DOCKER_ARCHS))
 
-ifeq ($(GOHOSTARCH),amd64)
-        ifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux freebsd darwin windows))
-                # Only supported on amd64
-                test-flags := -race
-        endif
-endif
--
 # This rule is used to forward a target like "build" to "common-build".  This
 # allows a new "build" target to be defined in a Makefile which includes this
 # one and override "common-build" without override warnings.
--- 
2.17.1

diff --git a/testing/prometheus-node-exporter/node-exporter.confd b/testing/prometheus-node-exporter/node-exporter.confd
deleted file mode 100644
index 39c80a46be..0000000000
--- a/testing/prometheus-node-exporter/node-exporter.confd
@@ -1,7 +0,0 @@
# /etc/conf.d/node-exporter

# Custom arguments can be specified like:
#
# ARGS="--web.listen-address=':9100'"

ARGS=""
diff --git a/testing/prometheus-node-exporter/node-exporter.initd b/testing/prometheus-node-exporter/node-exporter.initd
deleted file mode 100755
index 5bd9839fe8..0000000000
--- a/testing/prometheus-node-exporter/node-exporter.initd
@@ -1,22 +0,0 @@
#!/sbin/openrc-run

command="/usr/bin/node_exporter"
command_args="$ARGS"
command_background="yes"
group="prometheus"
user="prometheus"

logdir="/var/log/prometheus"
logfile="$logdir/${SVCNAME}.log"
pidfile="/var/run/${SVCNAME}.pid"
start_stop_daemon_args="--stderr $logfile --user $user --group $group"

depend() {
	need net
	after firewall
}

start_pre() {
	checkpath -d -o $user:$group -m755 $logdir
	checkpath -f -o $user:$group -m644 $logfile
}
diff --git a/testing/prometheus-node-exporter/prometheus-node-exporter.confd b/testing/prometheus-node-exporter/prometheus-node-exporter.confd
new file mode 100644
index 0000000000..8843b48c8f
--- /dev/null
+++ b/testing/prometheus-node-exporter/prometheus-node-exporter.confd
@@ -0,0 +1,4 @@
prometheus_node_exporter_web_listen_address=127.0.0.1:9100

output_log=/var/log/prometheus-node-exporter.log
error_log=/var/log/prometheus-node-exporter.log
diff --git a/testing/prometheus-node-exporter/prometheus-node-exporter.initd b/testing/prometheus-node-exporter/prometheus-node-exporter.initd
new file mode 100644
index 0000000000..e7ac0b74a9
--- /dev/null
+++ b/testing/prometheus-node-exporter/prometheus-node-exporter.initd
@@ -0,0 +1,13 @@
#!/sbin/openrc-run
name="prometheus-node-exporter"
description="Prometheus node monitoring daemon"
supervisor=supervise-daemon
command=/usr/bin/prometheus_node_exporter
command_args="--web.listen-address=$prometheus_node_exporter_web_listen_address"

start_pre() {
	[ -n "$output_log" ] && checkpath -f "$output_log" \
		-m 644 -o prometheus:prometheus || true
	[ -n "$error_log" ] && checkpath -f "$error_log" \
		-m 644 -o prometheus:prometheus || true
}
diff --git a/testing/prometheus-node-exporter/prometheus-node-exporter.pre-install b/testing/prometheus-node-exporter/prometheus-node-exporter.pre-install
old mode 100755
new mode 100644
index 120995cf35..004fd0bcb9
--- a/testing/prometheus-node-exporter/prometheus-node-exporter.pre-install
+++ b/testing/prometheus-node-exporter/prometheus-node-exporter.pre-install
@@ -1,6 +1,4 @@
#!/bin/sh

addgroup -S prometheus 2>/dev/null
adduser -S -D -h /var/lib/prometheus -s /sbin/nologin -G prometheus -g prometheus prometheus 2>/dev/null

exit 0
grep '^prometheus:' /etc/group >/dev/null || addgroup -S prometheus 2>/dev/null
grep '^prometheus:' /etc/passwd >/dev/null || adduser -SDh/var/lib/prometheus \
	-s/sbin/nologin -Gprometheus -gprometheus prometheus prometheus 2>/dev/null
diff --git a/testing/prometheus-node-exporter/prometheus-node-exporter.pre-upgrade b/testing/prometheus-node-exporter/prometheus-node-exporter.pre-upgrade
deleted file mode 120000
index b87af95334..0000000000
--- a/testing/prometheus-node-exporter/prometheus-node-exporter.pre-upgrade
@@ -1 +0,0 @@
prometheus-node-exporter.pre-install
\ No newline at end of file
-- 
2.24.1
Hi Drew,

Your message arrived at the spam folder and I almost ended-up missing
it. I'd like to clarify a few points about the changes:

- Doesn't the patch make sense anymore? I've not been following the
state of Go race condition check in musl lately.
- Does it make sense to drop the version information from the binary?
I'm inferring that, as the software is being installed by a package
manager, you are considering this information to be irrelevant.
- If the binary name is being changed, why opt for
'prometheus_node_exporter' (with underscores) instead of
'prometheus-node-exporter' (with hyphens), like other distributions[1]
are doing?
- Changing the default binding to 127.0.0.1:9100 might break user
expectations, as it currently defaults to 0.0.0.0:9100. My use cases,
for instance, always involved fetching data from it remotely. Binding
it to localhost by default seems too restrictive in this case, akin to
doing the same to a HTTP server.

I'm all in for moving it to the community repos as soon as we agree on
the mentioned topics.

Regards,
Tiago.

[1]: https://packages.ubuntu.com/bionic/amd64/prometheus-node-exporter/filelist

On Tue, 14 Jan 2020 at 20:46, Drew DeVault <sir@cmpwn.com> wrote: