如何不使用systemctl启停Prometheus Server/AlertManager并实现后台持续运行
以下是几种不同场景下的可行方案,所有操作均无需依赖systemctl:
方法1:nohup + 后台符号(最简原生方案)
无需额外安装任何工具,适合临时测试、快速部署场景。
- 启动Prometheus:
nohup ./prometheus --config.file=prometheus.yml --web.listen-address=:9090 > prometheus.log 2>&1 &
命令说明:nohup会忽略终端挂断信号,&将进程放入后台运行,所有运行日志会输出到prometheus.log文件中,启动后返回的数字为进程PID。 - 启动AlertManager:
nohup ./alertmanager --config.file=alertmanager.yml > alertmanager.log 2>&1 & - 停止服务:
- 查找对应进程PID:
ps -ef | grep prometheus/ps -ef | grep alertmanager - 终止进程:
kill <对应PID>,进程无响应时可使用kill -9 <对应PID>强制终止
注意:该方案不支持开机自启、异常自动拉起,服务器重启后需要手动重新启动服务
方法2:screen/tmux终端复用(支持随时切回前台查看运行输出)
适合需要频繁查看服务实时输出、调试配置的场景,进程退出终端后仍会持续运行。
screen操作示例:
- 安装screen:Debian/Ubuntu执行
apt install screen,CentOS/RHEL执行yum install screen - 新建Prometheus专属会话:
screen -S prometheus - 进入会话后正常执行启动命令:
./prometheus --config.file=prometheus.yml - 按
Ctrl+A+D快捷键退出会话,进程将在后台持续运行 - 回到会话查看日志/操作:
screen -r prometheus - 停止服务:进入会话按
Ctrl+C终止进程,或直接删除会话screen -S prometheus -X quit
tmux操作与screen逻辑一致,仅命令和快捷键不同:
新建会话命令:tmux new -s prometheus,退出会话快捷键为Ctrl+B+D,重回会话命令为tmux a -t prometheus
方法3:supervisor进程管理(生产环境推荐)
轻量级进程管理工具,支持开机自启、异常自动重启、日志自动切割,配置灵活,普通用户也可配置用户级服务。
- 安装supervisor:Debian/Ubuntu执行
apt install supervisor,CentOS/RHEL执行yum install supervisor - 新建Prometheus配置文件
/etc/supervisor/conf.d/prometheus.conf,参考内容:
[program:prometheus]
command=/你的二进制文件路径/prometheus --config.file=/你的配置文件路径/prometheus.yml
user=运行服务的用户名
autostart=true
autorestart=true
stderr_logfile=/var/log/prometheus.err.log
stdout_logfile=/var/log/prometheus.out.log
- 新建AlertManager配置文件
/etc/supervisor/conf.d/alertmanager.conf,参考内容:
[program:alertmanager]
command=/你的二进制文件路径/alertmanager --config.file=/你的配置文件路径/alertmanager.yml
user=运行服务的用户名
autostart=true
autorestart=true
stderr_logfile=/var/log/alertmanager.err.log
stdout_logfile=/var/log/alertmanager.out.log
- 重载配置使服务生效:
supervisorctl update
- 常用启停命令:
启动服务:supervisorctl start prometheus alertmanager
停止服务:supervisorctl stop prometheus alertmanager
重启服务:supervisorctl restart prometheus alertmanager
查看服务运行状态:supervisorctl status
方法4:Docker容器运行(无需配置运行环境)
已安装Docker环境的场景下最省心的方案,所有依赖官方镜像已打包,直接启动即可。
- 启动Prometheus:
docker run -d --name prometheus -p 9090:9090 -v /你的配置路径/prometheus.yml:/etc/prometheus/prometheus.yml --restart=always prom/prometheus - 启动AlertManager:
docker run -d --name alertmanager -p 9093:9093 -v /你的配置路径/alertmanager.yml:/etc/alertmanager/alertmanager.yml --restart=always prom/alertmanager
参数说明:--restart=always表示容器异常退出、服务器重启时会自动拉起服务。 - 常用启停命令:
停止服务:docker stop prometheus alertmanager
启动服务:docker start prometheus alertmanager
重启服务:docker restart prometheus alertmanager
内容的提问来源于stack exchange,提问作者redred1114

