首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Prometheus 2.0 centos服务不会启动,因为“打开存储失败”,“权限被拒绝”

Prometheus 2.0 centos服务不会启动,因为“打开存储失败”,“权限被拒绝”
EN

Stack Overflow用户
提问于 2017-11-21 18:03:19
回答 3查看 5K关注 0票数 1

context:我向一个空的centos添加了一些脚本来安装一些监控工具,包括Prometheus2.0。

problem:一旦安装到非根sudo用户的主目录中,我就复制我写到"/etc/systemd/system“的prometheus.service,运行sudo systemctl daemon-reload, sudo systemctl enable prometheus.service, sudo systemctl start prometheus.service,但是服务失败。

注意事项:我可以使用相同的命令直接在终端中运行prometheus二进制文件,没有任何问题,但我不能将它作为服务运行。

这是我的.service文件:

代码语言:javascript
复制
[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network-online.target

[Service]
User=centos
ExecStart=/home/centos/prometheus/prometheus --config.file="/home/centos/prometheus/prometheus.yml" --storage.tsdb.path="/home/centos/prometheus/data"

[Install]
WantedBy=multi-user.target

下面是一些日志:

代码语言:javascript
复制
...
Nov 21 12:41:55 localhost.localdomain prometheus[1554]: level=info ts=2017-11-21T17:41:55.114757834Z caller=main.go:314 msg="Starting TSDB"
Nov 21 12:41:55 localhost.localdomain prometheus[1554]: level=error ts=2017-11-21T17:41:55.114819195Z caller=main.go:323 msg="Opening storage failed" err="mkdir \": permission denied"
Nov 21 12:41:55 localhost.localdomain systemd[1]: prometheus.service: control process exited, code=exited status=1
Nov 21 12:41:55 localhost.localdomain systemd[1]: Failed to start Prometheus Server.
...

我是linux服务管理的新手,我花了很多时间在线阅读,但我不确定服务的权限是如何工作的,以及为什么它不能创建需要创建的目录。

我试过:

  • 将"SELINUX=enforcing“改为"SELINUX=permissive”
  • 将prometheus目录的权限更改为777
  • ..。
EN

回答 3

Stack Overflow用户

发布于 2017-12-02 07:21:27

您还必须设置--web.console.templates--web.console.libraries。您可以从超出的存档中复制这些目录。例如:

代码语言:javascript
复制
sudo cp -R ~/prometheus-2.0.0.linux-amd64/consoles /etc/prometheus
sudo cp -R ~/prometheus-2.0.0.linux-amd64/console_libraries /etc/prometheus

工作服务示例(更改您的路径):

代码语言:javascript
复制
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus --config.file=/etc/prometheus/prometheus.yml \
    --storage.tsdb.path=/var/lib/prometheus/ \
    --web.console.templates=/etc/prometheus/consoles \
    --web.console.libraries=/etc/prometheus/console_libraries

[Install]
WantedBy=multi-user.target

P.S.受这里建议的启发。

票数 2
EN

Stack Overflow用户

发布于 2019-05-03 15:52:54

Prometheus的数据目录应该具有prometheus应用程序用户的写权限。如果您从容器中运行它并从外部挂载数据目录,则可以在原始文件夹上设置777权限。

票数 0
EN

Stack Overflow用户

发布于 2020-11-22 16:02:31

如果SELinux停止启动,请始终查阅日记-xe查看SELinux警报。建议采取行动。

我用SELinux在CentOS 8上安装了prometheus,没有问题。我也不同意那些建议禁用SELinux的人。

作为参考,Redhat有一个很好的视频供您观看:

WOKRaM-HI4&t=1464 s

这是我的prometheus.service文件。

代码语言:javascript
复制
[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network-online.target

[Service]
User=prometheus
#Restart=on-failure

#Change this line if you download the
#Prometheus on different path user
ExecStart=/home/prometheus/prometheus-2.22.0.linux-amd64/prometheus \
  --config.file=/home/prometheus/prometheus-2.22.0.linux-amd64/prometheus.yml \
  --storage.tsdb.path=/home/prometheus/prometheus-2.22.0.linux-amd64/data \
  --web.listen-address="0.0.0.0:9091"

[Install]
WantedBy=multi-user.target
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47419765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档