From 6037b7ae1103dc6fdf3ba68d590f52c97eae13dd Mon Sep 17 00:00:00 2001 From: Pavel Timofeev Date: Thu, 30 Nov 2023 11:04:06 -0700 Subject: [PATCH] New net-mgmt/promxy port --- GIDs | 2 +- UIDs | 2 +- net-mgmt/promxy/Makefile | 40 +++++++++++++++++ net-mgmt/promxy/distinfo | 5 +++ net-mgmt/promxy/files/promxy.in | 77 +++++++++++++++++++++++++++++++++ net-mgmt/promxy/pkg-descr | 5 +++ net-mgmt/promxy/pkg-plist | 4 ++ 7 files changed, 133 insertions(+), 2 deletions(-) create mode 100644 net-mgmt/promxy/Makefile create mode 100644 net-mgmt/promxy/distinfo create mode 100644 net-mgmt/promxy/files/promxy.in create mode 100644 net-mgmt/promxy/pkg-descr create mode 100644 net-mgmt/promxy/pkg-plist diff --git a/GIDs b/GIDs index ebfa48fa4eeb..f1e4a3bf3d0c 100644 --- a/GIDs +++ b/GIDs @@ -421,7 +421,7 @@ fiche:*:477: prometheus:*:478: alertmanager:*:479: datadog:*:480: -# free: 481 +promxy:*:481: # free: 482 # free: 483 # free: 484 diff --git a/UIDs b/UIDs index 1f590ce112ba..c93d58395dba 100644 --- a/UIDs +++ b/UIDs @@ -426,7 +426,7 @@ fiche:*:477:477::0:0:fiche Daemon:/usr/local/www/fiche:/usr/sbin/nologin prometheus:*:478:478::0:0:Prometheus Daemon:/var/tmp/prometheus:/usr/sbin/nologin alertmanager:*:479:479::0:0:Alertmanager Daemon:/var/tmp/alertmanager:/usr/sbin/nologin datadog:*:480:480::0:0:DataDog Agent:/var/db/datadog:/usr/sbin/nologin -# free: 481 +promxy:*:481:481::0:0:Promxy Daemon:/nonexistent:/usr/sbin/nologin # free: 482 # free: 483 # free: 484 diff --git a/net-mgmt/promxy/Makefile b/net-mgmt/promxy/Makefile new file mode 100644 index 000000000000..99e58d763247 --- /dev/null +++ b/net-mgmt/promxy/Makefile @@ -0,0 +1,40 @@ +PORTNAME= promxy +DISTVERSIONPREFIX= v +DISTVERSION= 0.0.84 +CATEGORIES= net-mgmt + +MAINTAINER= timp87@gmail.com +COMMENT= Aggregating proxy to enable HA prometheus +WWW= https://github.com/jacksontj/promxy + +LICENSE= MIT +LICENSE_FILE= ${WRKSRC}/LICENSE + +USES= go:modules +GO_MODULE= github.com/jacksontj/promxy +GO_TARGET= ./cmd/promxy +GO_BUILDFLAGS= -ldflags=" \ + -X github.com/prometheus/common/version.Version=v${DISTVERSION} \ + -X github.com/prometheus/common/version.Revision=${PORTREVISION} \ + -X github.com/prometheus/common/version.Branch=release-${PORTVERSION:R} \ + -X github.com/prometheus/common/version.BuildUser=${USER} \ + -X github.com/prometheus/common/version.BuildDate=$$(date +'%Y%m%d-%T')" + +USE_RC_SUBR= promxy + +USERS= promxy +GROUPS= promxy + +SUB_LIST= USERS=${USERS} \ + GROUPS=${GROUPS} + +post-patch: + @${REINPLACE_CMD} 's|"\*rule"|"${ETCDIR}/*rule"|' ${WRKSRC}/cmd/promxy/config.yaml + +post-install: + ${MKDIR} ${STAGEDIR}${ETCDIR} +.for f in alert_example.rule config.yaml + ${INSTALL_DATA} ${WRKSRC}/cmd/promxy/${f} ${STAGEDIR}${ETCDIR}/${f}.sample +.endfor + +.include diff --git a/net-mgmt/promxy/distinfo b/net-mgmt/promxy/distinfo new file mode 100644 index 000000000000..1111bef26585 --- /dev/null +++ b/net-mgmt/promxy/distinfo @@ -0,0 +1,5 @@ +TIMESTAMP = 1701360073 +SHA256 (go/net-mgmt_promxy/promxy-v0.0.84/v0.0.84.mod) = 454e38c3f942c3130d9f76917166a119e2420ec99f8ef3fa1784054e3e9ebe92 +SIZE (go/net-mgmt_promxy/promxy-v0.0.84/v0.0.84.mod) = 8438 +SHA256 (go/net-mgmt_promxy/promxy-v0.0.84/v0.0.84.zip) = 90f6d9c0c0bd1c1ca33c17f3e7ebcc0358afdb1ee186484638955d9a7d522674 +SIZE (go/net-mgmt_promxy/promxy-v0.0.84/v0.0.84.zip) = 224472 diff --git a/net-mgmt/promxy/files/promxy.in b/net-mgmt/promxy/files/promxy.in new file mode 100644 index 000000000000..b9adc225918c --- /dev/null +++ b/net-mgmt/promxy/files/promxy.in @@ -0,0 +1,77 @@ +#!/bin/sh + +# PROVIDE: promxy +# REQUIRE: NETWORKING SERVERS DAEMON +# KEYWORD: shutdown +# +# Add the following lines to /etc/rc.conf or /etc/rc.conf.local +# to enable this service: +# +# promxy_enable: Enable Promxy +# Default: NO +# promxy_user: Username to run Promxy +# Default: %%USERS%% +# promxy_config: Configuration file to run Promxy +# Default: %%ETCDIR%%/config.yaml +# promxy_pidfile: Full path of the Promxy process PID file +# Default: /var/run/promxy.pid +# promxy_remediate_enable: Enable auto-restart if Promxy's been terminated +# Default: NO +# promxy_remediate_delay: Auto-restart delay if auto-restart enabled +# Default: 5 +# promxy_syslog_output_enable: Enable syslog output. +# Default: YES +# promxy_syslog_output_tag: Syslog tag if syslog output enabled. +# Default: promxy +# promxy_syslog_output_priority: Syslog priority if syslog output enabled. +# Default: info +# promxy_syslog_output_facility: Syslog facility if syslog output enabled. +# Default: daemon + +. /etc/rc.subr + +name=promxy +rcvar=promxy_enable + +load_rc_config "${name}" + +: ${promxy_enable:="NO"} +: ${promxy_user:="%%USERS%%"} +: ${promxy_config:="%%ETCDIR%%/config.yaml"} +: ${promxy_pidfile:=/var/run/promxy.pid} +: ${promxy_remediate_enable:="NO"} +: ${promxy_remediate_delay="5"} +: ${promxy_syslog_output_enable:="YES"} +: ${promxy_syslog_output_tag:="${name}"} +: ${promxy_syslog_output_priority:="info"} +: ${promxy_syslog_output_facility:="daemon"} + +if checkyesno promxy_syslog_output_enable; then + if [ -n "${promxy_syslog_output_tag}" ]; then + promxy_syslog_output_flags="-T ${promxy_syslog_output_tag}" + fi + if [ -n "${promxy_syslog_output_priority}" ]; then + promxy_syslog_output_flags="${promxy_syslog_output_flags} -s ${promxy_syslog_output_priority}" + fi + if [ -n "${promxy_syslog_output_facility}" ]; then + promxy_syslog_output_flags="${promxy_syslog_output_flags} -l ${promxy_syslog_output_facility}" + fi +fi + +if checkyesno promxy_remediate_enable; then + if [ -n "${promxy_remediate_delay}" ]; then + promxy_remediate_flags="-R ${promxy_remediate_delay}" + fi +fi + +pidfile="${promxy_pidfile}" +required_files="${promxy_config}" + +promxy_bin="%%PREFIX%%/bin/promxy" +command="/usr/sbin/daemon" +command_args="-u ${promxy_user} ${promxy_remediate_flags} -f ${promxy_syslog_output_flags} -P ${pidfile} ${promxy_bin} --config=${promxy_config}" + +# Run daemon(8) as root +unset promxy_user + +run_rc_command "$1" diff --git a/net-mgmt/promxy/pkg-descr b/net-mgmt/promxy/pkg-descr new file mode 100644 index 000000000000..8a15049bfbb3 --- /dev/null +++ b/net-mgmt/promxy/pkg-descr @@ -0,0 +1,5 @@ +Promxy is a prometheus proxy that makes many shards of prometheus appear as +a single API endpoint to the user. This significantly simplifies operations +and use of prometheus at scale (when you have more than one prometheus host). +Promxy delivers this unified access endpoint without requiring any sidecars, +custom-builds, or other changes to your prometheus infrastructure. diff --git a/net-mgmt/promxy/pkg-plist b/net-mgmt/promxy/pkg-plist new file mode 100644 index 000000000000..41552c1b70ab --- /dev/null +++ b/net-mgmt/promxy/pkg-plist @@ -0,0 +1,4 @@ +bin/promxy +@dir %%ETCDIR%% +@sample %%ETCDIR%%/alert_example.rule.sample +@sample %%ETCDIR%%/config.yaml.sample -- 2.43.0