From 98912df8268de76a70cc7f498685c8c697cdad1e Mon Sep 17 00:00:00 2001 From: Pavel Timofeev Date: Fri, 27 Jan 2023 21:05:53 -0700 Subject: [PATCH] New net-mgmt/promxy port --- GIDs | 2 +- UIDs | 2 +- net-mgmt/promxy/Makefile | 35 +++++++++++++++ net-mgmt/promxy/distinfo | 5 +++ net-mgmt/promxy/files/promxy.in | 77 +++++++++++++++++++++++++++++++++ net-mgmt/promxy/pkg-descr | 5 +++ net-mgmt/promxy/pkg-plist | 5 +++ 7 files changed, 129 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 23d9c2564c1b..53658dd40de4 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 b41b0f6ccb9c..8ba69dc29a08 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..8e92400e6284 --- /dev/null +++ b/net-mgmt/promxy/Makefile @@ -0,0 +1,35 @@ +PORTNAME= promxy +DISTVERSIONPREFIX= v +DISTVERSION= 0.0.75 +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 main.Version=v${PORTVERSION}" + +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 recording_example.rule + ${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..6fd475e397ce --- /dev/null +++ b/net-mgmt/promxy/distinfo @@ -0,0 +1,5 @@ +TIMESTAMP = 1674764410 +SHA256 (go/net-mgmt_promxy/promxy-v0.0.75/v0.0.75.mod) = 8e828d987d4cb983c02e3d21731d79048c2ebcdf66d6de7624d10a68277f088c +SIZE (go/net-mgmt_promxy/promxy-v0.0.75/v0.0.75.mod) = 1127 +SHA256 (go/net-mgmt_promxy/promxy-v0.0.75/v0.0.75.zip) = 802e4d5894891000e1abf3b5c872a2e8884ea347b2a94563ead27aa15632187e +SIZE (go/net-mgmt_promxy/promxy-v0.0.75/v0.0.75.zip) = 201553 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..093ef7bc589f --- /dev/null +++ b/net-mgmt/promxy/pkg-plist @@ -0,0 +1,5 @@ +bin/promxy +@dir %%ETCDIR%% +@sample %%ETCDIR%%/alert_example.rule.sample +@sample %%ETCDIR%%/config.yaml.sample +@sample %%ETCDIR%%/recording_example.rule.sample -- 2.39.1