context : prometheus 2.0 を含むいくつかの監視ツールをインストールするために、いくつかのスクリプトを空の centos VM に追加しました。
問題: root 以外の sudo ユーザーのホーム ディレクトリにインストールしたら、作成した prometheus.service を "/etc/systemd/system" にコピーして実行しますsudo systemctl daemon-reload, sudo systemctl enable prometheus.service, sudo systemctl start prometheus.service
が、サービスが失敗します。
注: 同じコマンドを使用してターミナルでプロメテウス バイナリを問題なく直接実行できますが、サービスとして実行することはできません。
これが私の .service ファイルです:
[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
ログの一部を次に示します。
...
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 に変更する
...