From 38be6c13f76e893cf47636257071b440dec0c5b2 Mon Sep 17 00:00:00 2001 From: Robert Günzler Date: Sun, 7 Sep 2025 17:32:13 +0200 Subject: initial commit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Robert Günzler --- bundles/s6/files/etc/periodic/15min/s6-rc-metrics | 61 +++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100755 bundles/s6/files/etc/periodic/15min/s6-rc-metrics (limited to 'bundles/s6/files/etc/periodic') diff --git a/bundles/s6/files/etc/periodic/15min/s6-rc-metrics b/bundles/s6/files/etc/periodic/15min/s6-rc-metrics new file mode 100755 index 0000000..4fa7625 --- /dev/null +++ b/bundles/s6/files/etc/periodic/15min/s6-rc-metrics @@ -0,0 +1,61 @@ +#!/bin/sh +set -eu + +textfile_directory=/run/prom + +s6rc_service_is_up() { + if s6-rc -a list | grep -q "${1:?}"; then printf '1'; else printf '0'; fi +} + +printmetric() { + local name=${1:?} + local labels=${2:?} + local value=${3:?} + printf '%s{%s} %s\n' "$name" "$labels" "$value" +} + +services_count() { + printf '# HELP s6_rc_services_count number of services\n' + printf '# TYPE s6_rc_services_count gauge\n' + for bundle in $(s6-rc-db list bundles); do + printmetric 's6_rc_services_count' \ + $(printf 'bundle="%s"' $bundle) \ + $(s6-rc list $bundle | wc -l) + done +} + +services_up() { + printf '# HELP s6_rc_service_up if a service is running\n' + #printf '# TYPE s6_rc_service_up stateset\n' + for bundle in $(s6-rc-db list bundles) + do + for service in $(s6-rc-db contents "$bundle") + do + printmetric 's6_rc_service_up' \ + $(printf 'bundle="%s",service="%s"' $bundle $service) \ + $(s6rc_service_is_up $service) + done + done +} + +write_textfile() { + mkdir -p "$textfile_directory" || exit 1 + + tmp=$(mktemp --tmpdir metrics_s6_rc.XXXXX) + + ( + services_count + services_up + ) | tee "$tmp" + + mv -v "$tmp" "$textfile_directory"/s6_rc.prom || exit 1 + + chmod +r "$textfile_directory"/s6_rc.prom + chown nobody:nobody "$textfile_directory"/s6_rc.prom +} + +main() { + write_textfile +} + +main >/dev/null 2>&1 -- cgit 1.4.1