Add net-mgmt/prometheus2

Rename prometheus to prometheus1 so they can coexist since upgrading is
non-trival:

https://prometheus.io/docs/prometheus/2.0/migration/

PR:		225169
Submitted by:	David O'Rourke <dor.bsd@xm0.uk>
Reviewed by:	swills
This commit is contained in:
Brad Davis 2018-02-14 21:58:37 +00:00
parent b20f91f852
commit 402866ebfd
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=461844
13 changed files with 227 additions and 2 deletions

1
MOVED
View File

@ -9961,3 +9961,4 @@ databases/postgresql-repmgr2||2018-02-10|Removed, only for PostgreSQL 9.2
www/mod_security-devel|www/mod_security3|2018-02-12|Renamed, upstream has made a release
devel/pear-channel-htmlpurifier|devel/pear-channel-htmlpurifier.org|2018-02-13|Rename for consistency
games/lolcat|games/rubygem-lolcat|2018-02-13|Rename to match our rubygems naming
net-mgmt/prometheus|net-mgmt/prometheus1|2018-02-14|Rename to include major version number in the portname

View File

@ -294,7 +294,8 @@
SUBDIR += pnp-icinga
SUBDIR += pnp-icinga2
SUBDIR += portmon
SUBDIR += prometheus
SUBDIR += prometheus1
SUBDIR += prometheus2
SUBDIR += prometheus-collectd-exporter
SUBDIR += pushgateway
SUBDIR += py-adal

View File

@ -3,9 +3,10 @@
PORTNAME= prometheus
PORTVERSION= 1.8.2
PORTREVISION= 1
DISTVERSIONPREFIX= v
PORTREVISION= 1
CATEGORIES= net-mgmt
PKGNAMESUFFIX= 1
MAINTAINER= ports@ecadlabs.com
COMMENT= Systems monitoring and alerting toolkit

View File

@ -0,0 +1,53 @@
# $FreeBSD$
PORTNAME= prometheus
PORTVERSION= 2.1.0
DISTVERSIONPREFIX= v
CATEGORIES= net-mgmt
MAINTAINER= dor.bsd@xm0.uk
COMMENT= Systems monitoring and alerting toolkit
LICENSE= APACHE20
LICENSE_FILE= ${WRKSRC}/LICENSE
USES= go gmake
USE_GITHUB= yes
GH_ACCOUNT= prometheus
GH_PROJECT= prometheus
GO_PKGNAME= github.com/${GH_ACCOUNT}/${GH_PROJECT}
USE_RC_SUBR= prometheus
USERS= prometheus
GROUPS= prometheus
BUILD_USER?= ${USER}
LD_FLAG_X_PREFIX= -X ${GO_PKGNAME}/vendor/${GO_PKGNAME:H}/common/version
LD_FLAG_STRING= -s \
${LD_FLAG_X_PREFIX}.Version=${PORTVERSION} \
${LD_FLAG_X_PREFIX}.Revision=${PORTREVISION} \
${LD_FLAG_X_PREFIX}.Branch=release-${PORTVERSION:R} \
${LD_FLAG_X_PREFIX}.BuildUser=${BUILD_USER}
PROMETHEUS_BINARIES= prometheus promtool
do-build:
.for bin in ${PROMETHEUS_BINARIES}
( cd ${GO_WRKSRC}/cmd/${bin} ; \
${SETENV} ${GO_ENV} go install -ldflags "${LD_FLAG_STRING}" )
.endfor
do-install:
.for bin in ${PROMETHEUS_BINARIES}
${INSTALL_PROGRAM} ${GO_WRKDIR_BIN}/${bin} ${STAGEDIR}${PREFIX}/bin
.endfor
${INSTALL_DATA} \
${WRKSRC}/documentation/examples/prometheus.yml \
${STAGEDIR}${LOCALBASE}/etc/prometheus.yml.sample
${MKDIR} ${STAGEDIR}${DESTDIR}/var/db/prometheus
.include <bsd.port.mk>

View File

@ -0,0 +1,3 @@
TIMESTAMP = 1516749966
SHA256 (prometheus-prometheus-v2.1.0_GH0.tar.gz) = c6fc92d695c9af30574eb41af5e0e89f4fde9a04a3169ba58aa2b2f80d5862a4
SIZE (prometheus-prometheus-v2.1.0_GH0.tar.gz) = 5669858

View File

@ -0,0 +1,100 @@
#!/bin/sh
# PROVIDE: prometheus
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
# to enable this service:
#
# prometheus_enable (bool): Set to NO by default
# Set it to YES to enable prometheus
# prometheus_user (string): Set user to run prometheus
# Default is "prometheus"
# prometheus_group (string): Set group to run prometheus
# Default is "prometheus"
# prometheus_data_dir (string): Set dir to run prometheus in
# Default is "/var/db/prometheus"
# prometheus_log_file (string): Set file that prometheus will log to
# Default is "/var/log/prometheus.log"
# prometheus_args (string): Set additional command line arguments
# Default is ""
. /etc/rc.subr
name=prometheus
rcvar=prometheus_enable
load_rc_config $name
: ${prometheus_enable:="NO"}
: ${prometheus_user:="prometheus"}
: ${prometheus_group:="prometheus"}
: ${prometheus_config:="%%PREFIX%%/etc/prometheus.yml"}
: ${prometheus_data_dir:="/var/db/prometheus"}
: ${prometheus_log_file:="/var/log/prometheus.log"}
: ${prometheus_args:=""}
pidfile="/var/run/${name}.pid"
required_files="${prometheus_config}"
command="/usr/sbin/daemon"
procname="%%PREFIX%%/bin/${name}"
sig_reload="HUP"
extra_commands="reload"
command_args="-p ${pidfile} /usr/bin/env ${procname} \
--config.file=${prometheus_config} \
--storage.tsdb.path=${prometheus_data_dir} \
${prometheus_args} >> ${prometheus_log_file} 2>&1"
start_precmd=prometheus_startprecmd
# This checks for the existence of a prometheus 1.x data dir at the
# $prometheus_data_dir location. If one is found, Prometheus will not start.
prometheus_check_data_dir_version()
{
local data_dir_version_file="${prometheus_data_dir}/VERSION"
if [ -f "${data_dir_version_file}" ]; then
local data_dir_version="0"
read data_dir_version < "${data_dir_version_file}"
if [ "${data_dir_version}" = "1" ]; then
return 1
fi
fi
}
prometheus_startprecmd()
{
if [ ! -e ${pidfile} ]; then
install \
-o ${prometheus_user} \
-g ${prometheus_group} \
/dev/null ${pidfile};
fi
if [ ! -f "${prometheus_log_file}" ]; then
install \
-o ${prometheus_user} \
-g ${prometheus_group} \
-m 640 \
/dev/null ${prometheus_log_file};
fi
if [ ! -d ${prometheus_data_dir} ]; then
install \
-d \
-o ${prometheus_user} \
-g ${prometheus_group} \
-m 750 \
${prometheus_data_dir}
else
# The directory already existed. Ensure it's not a prometheus 1.x
# data dir.
if ! prometheus_check_data_dir_version; then
err 1 "Found net-mgmt/prometheus1 data dir, refusing to start."
fi
fi
}
load_rc_config $name
run_rc_command "$1"

View File

@ -0,0 +1,19 @@
Prometheus is a systems and service monitoring system. It collects metrics
from configured targets at given intervals, evaluates rule expressions,
displays the results, and can trigger alerts if some condition is observed
to be true.
Prometheus' main distinguishing features as compared to other monitoring
systems are:
- a multi-dimensional data model (timeseries defined by metric name and
set of key/value dimensions)
- a flexible query language to leverage this dimensionality
- no dependency on distributed storage; single server nodes are autonomous
- timeseries collection happens via a pull model over HTTP
- pushing timeseries is supported via an intermediary gateway
- targets are discovered via service discovery or static configuration
- multiple modes of graphing and dashboarding support
- support for hierarchical and horizontal federation
WWW: https://prometheus.io/

View File

@ -0,0 +1,43 @@
If you are a user of Prometheus 1.x, the following information may be relevant.
Prometheus 2 contains a number of breaking changes, including:
- Changes to how command line flags are parsed (double dash is now required)
- Removal of some command line flags
- Alert Manager options moved into prometheus.yaml
- Alerting / Recording Rules format changes
- Rules are now in YAML format
- Changes to the storage engine
- These changes mean that old data will be unreadable by Prometheus 2,
refer to the Prometheus 2 migration guide for more information on this
issue
Any existing Prometheus 1 `prometheus.yml` should continue to work with
Prometheus 2.
As a safety measure, the Prometheus 2 init script will refuse to start
Prometheus if it finds a Prometheus 1 data dir at the $prometheus_data_dir
location.
You will likely wish to review the Prometheus 2 migration guide at
https://prometheus.io/docs/prometheus/2.1/migration/
Brief migration steps:
- Stop the running Prometheus 1.
- Move any existing `prometheus_` rcconf variables to their equivalent
`prometheus1_` rcconf variable.
- Move the Prometheus 1 data dir to a suitable location.
- A new $prometheus_data_dir for Prometheus 2 will be created by the init
script.
- Set the `prometheus1_data_dir` rcconf variable to the location that you
moved the Prometheus 1 data dir to.
- Copy your existing `prometheus.yml` to `prometheus1.yml`.
- Prometheus 2 should be able to use your existing Prometheus 1 config.
- Put Prometheus 1 into a read-only mode on a different port making changes
described at: https://prometheus.io/docs/prometheus/2.0/migration/#storage
- You can use the `prometheus1_args` rcconf setting to pass additional
arguments.
- Add a `remote_read` section to the `prometheus.yml` used by Prometheus 2,
this allows Prometheus 2 to have access to the metrics previously gathered
by Prometheus 1.
- Start both Prometheus 1 and 2.

View File

@ -0,0 +1,4 @@
bin/prometheus
bin/promtool
@sample etc/prometheus.yml.sample
@dir(prometheus,prometheus) /var/db/prometheus