官网下载链接
这里选择下载最新版
wget https://github.com/prometheus/prometheus/releases/download/v2.40.4/prometheus-2.40.4.linux-amd64.tar.gz
tar -xf prometheus-2.40.4.linux-amd64.tar.gz
cd prometheus-2.40.4.linux-amd64
将可执行命令转移到/usr/bin
mv prometheus promtool /usr/bin/
将配置文件转移
mkdir /etc/prometheus/
cp -r console_libraries consoles /etc/prometheus/
添加prometheus用户
useradd -M -r -s /bin/false prometheus
创建所需路径并赋予权限
mkdir /etc/prometheus /var/lib/prometheus/metrics2 /var/run/prometheus /var/log/prometheus
chown -R prometheus:prometheus /var/lib/prometheus/ /etc/prometheus/ /var/run/prometheus /var/log/prometheus
创建prometheus服务启动配置文件
cd /etc/init.d/
vim prometheus
配置文件参考内容
#!/bin/sh
# kFreeBSD do not accept scripts as interpreters, using #!/bin/sh and sourcing.
if [ true != "$INIT_D_SCRIPT_SOURCED" ] ; then
set "$0" "$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script
fi
### BEGIN INIT INFO
# Provides: prometheus
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Monitoring system and time series database
# Description: Prometheus is a systems and services 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.
### END INIT INFO
# Author: Martín Ferrari <tincho@debian.org>
DESC="monitoring system and time series database"
DAEMON=/usr/bin/prometheus
NAME=prometheus
USER=prometheus
PIDFILE=/var/run/prometheus/prometheus.pid
LOGFILE=/var/log/prometheus/prometheus.log
CFGFILE=/etc/prometheus/prometheus.yml
HELPER=/usr/bin/daemon
HELPER_ARGS="--name=$NAME --output=$LOGFILE --pidfile=$PIDFILE --user=$USER"
ARGS="--config.file=/etc/prometheus/prometheus.yml \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries \
--storage.tsdb.path=/var/lib/prometheus/metrics2/ \
--storage.tsdb.retention.time=180d \
--query.max-samples=200000000 \
--web.enable-admin-api \
--storage.tsdb.wal-compression \
--web.enable-lifecycle"
config_check()
{
retcode=0
errors="$(/usr/bin/promtool check config $CFGFILE 2>&1)" || retcode=$?
if [ $retcode -ne 0 ]; then
log_failure_msg
echo "Configuration test failed. Output of config test was:" >&2
echo "$errors" >&2
return $retcode
fi
}
do_start_prepare()
{
mkdir -p `dirname $PIDFILE` || true
chown -R $USER: /var/lib/prometheus/metrics2
chown -R $USER: `dirname $LOGFILE`
chown -R $USER: `dirname $PIDFILE`
}
do_start_cmd()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
$HELPER $HELPER_ARGS --running && return 1
config_check || return 2
$HELPER $HELPER_ARGS -- $DAEMON $ARGS || return 2
return 0
}
do_stop_cmd()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
$HELPER $HELPER_ARGS --running || return 1
$HELPER $HELPER_ARGS --stop || return 2
# wait for the process to really terminate
for n in 1 2 3 4 5; do
sleep $n
$HELPER $HELPER_ARGS --running || break
done
$HELPER $HELPER_ARGS --running || return 0
return 2
}
do_reload()
{
log_daemon_msg "Reloading $DESC configuration files" "$NAME"
$HELPER $HELPER_ARGS --running || return 1
config_check || return 2
helper_pid=$(cat $PIDFILE)
if [ -z "$helper_pid" ]; then
log_failure_msg "Unable to find PID"
return 1
fi
start-stop-daemon --stop --signal 1 --quiet \
--ppid "$helper_pid" --exec "$DAEMON"
log_end_msg $?
}
服务的启 停 重启
chmod +x /etc/init.d/prometheus
/etc/init.d/prometheus start/stop/restart
proemtheus配置文件重新加载(前提是开启了–web.enable-admin-api选项)
curl -X POST http://localhost:9090/-/reload