解决 N1 ARMBIAN Prometheus 服务启动失败问题
错误日志显示 prometheus.service
启动失败,核心原因是 WorkingDirectory
设置错误和服务文件语法错误。以下是详细解决方案:
检查并修复 WorkingDirectory
确保 WorkingDirectory
路径存在且正确。编辑服务文件:
sudo vi /etc/systemd/system/prometheus.service
检查 WorkingDirectory
路径是否与实际路径一致。例如:
WorkingDirectory=/sdb1/prometheus
创建目录并设置权限:
sudo mkdir -p /sdb1/prometheus
sudo chown -R prometheus:prometheus /sdb1/prometheus
修正服务文件语法
删除所有中文注释,并确保语法正确。示例配置:
[Unit]
Description=Prometheus Monitoring System
After=network.target[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/sdb1/prometheus/prometheus \--config.file=/sdb1/prometheus/prometheus.yml \--storage.tsdb.path=/sdb1/prometheus/data \--web.listen-address=0.0.0.0:9090 \--web.enable-lifecycle
Restart=on-failure
RestartSec=5
WorkingDirectory=/sdb1/prometheus[Install]
WantedBy=multi-user.target
创建 Prometheus 用户
确保用户和组存在:
sudo useradd -rs /bin/false prometheus
设置目录权限
确保目录归属和权限正确:
sudo chown -R prometheus:prometheus /sdb1/prometheus
sudo chmod +x /sdb1/prometheus/prometheus
sudo mkdir -p /sdb1/prometheus/data
sudo chown prometheus:prometheus /sdb1/prometheus/data
重新加载并启动服务
重新加载配置并启动服务:
sudo systemctl daemon-reload
sudo systemctl start prometheus.service
sudo systemctl status prometheus.service
查看日志:
sudo journalctl -u prometheus.service --no-pager -n 50
验证服务状态
检查进程和端口:
ps aux | grep prometheus
ss -tulnp | grep 9090
curl -v http://localhost:9090
验证服务文件语法
使用 systemd-analyze
检查语法:
sudo systemd-analyze verify /etc/systemd/system/prometheus.service
问题总结
问题 | 解决方案 |
---|---|
WorkingDirectory 错误 | 检查路径并设置权限 |
服务文件语法错误 | 删除中文注释,修正语法 |
用户权限问题 | 创建用户并设置目录归属 |
执行完上述步骤后,再次检查服务状态。如果问题仍然存在,提供最新的日志以进一步分析。