无法使用systemd启动Prometheus

时间:2018-09-25 03:19:26

标签: systemd prometheus

操作系统级别:CentOS Linux release 7.4.1708
普罗米修斯等级:2.4.2
prometheus.service:

[Unit]
Description=Prometheus

[Service]
User=prometheus
ExecStart=/usr/local/prometheus/prometheus

[Install]
WantedBy=default.target

当我使用systemctl start prometheus启动Prometheus服务时,它始终会自行退出主进程。并且systemctl的日志显示如下:

● prometheus.service - Prometheus
   Loaded: loaded (/etc/systemd/system/prometheus.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Tue 2018-09-25 10:43:56 CST; 6s ago
  Process: 5174 ExecStart=/usr/local/prometheus/prometheus (code=exited, status=1/FAILURE)
 Main PID: 5174 (code=exited, status=1/FAILURE)

Sep 25 10:43:56 devtestserver systemd[1]: Started Prometheus.
Sep 25 10:43:56 devtestserver systemd[1]: Starting Prometheus...
Sep 25 10:43:56 devtestserver prometheus[5174]: level=info ts=2018-09-25T02:43:56.736457704Z caller=main.go:238 msg="Starting Prometheus" version="(version=2.4.2, branch=HE...13b1190a0)"
Sep 25 10:43:56 devtestserver systemd[1]: prometheus.service: main process exited, code=exited, status=1/FAILURE
Sep 25 10:43:56 devtestserver systemd[1]: Unit prometheus.service entered failed state.
Sep 25 10:43:56 devtestserver systemd[1]: prometheus.service failed.
Hint: Some lines were ellipsized, use -l to show in full.

我不知道这个问题。我为node_exporter使用了相同的配置,但是node_exporter可以正常启动。请帮忙。非常感谢。

5 个答案:

答案 0 :(得分:1)

您还没有添加配置文件,即 prometheus.yml

考虑到 prometheus.service 文件的 Service 部分,

ExecStart=/usr/local/prometheus/prometheus \
--config.file /prometheus-2.26.0.linux-amd64/prometheus.yml

这里,我的 .yml 文件位于 /prometheus-2.26.0.linux-amd64/ 位置。 你的可能不一样。 Befre 运行检查您的两个路径,即您的可执行文件在“ExecStart”中给出的路径上,而 yml 文件在 --config.file 中

然后通过

重新加载您的系统
systemctl daemon-reload
systemctl start prometheus
systemctl enable prometheus

然后使用,

检查状态
systemctl status prometheus

它应该是活动的(正在运行)。

这应该可以解决您的问题。让我知道它是否有帮助:)

答案 1 :(得分:0)

WantedBy = default.target的末尾还有一个额外的“ i”。

要获取有关服务无法启动的更多详细信息,请尝试sudo journalctl -ex

我的猜测是,这是多余的“ i”或Prometheus可能无法解析您的剪贴规则或警报文件。它带有“ promtool”来检查您的配置文件,并且与prometheus安装在同一目录中。您的第一步应该是尝试“ promtool检查配置/path/to/prometheus.yml”

答案 2 :(得分:0)

配置文件在哪里? systemd默认由/执行。 prometheus默认读取./prometheus.yml的设置。也许您需要在systemd的单元文件中添加以下config选项。

[Unit]
Description=Prometheus

[Service]
User=prometheus
ExecStart=/usr/local/prometheus/prometheus --config.file /path/to/your/config

[Install]
WantedBy=default.target

答案 3 :(得分:0)

我在Ubuntu 16.04上遇到了相同的问题。原来是一个权限问题。 您应该检查用户是否拥有安装二进制文件的目录以及这些目录中的文件。

答案 4 :(得分:0)

我在redhat / Centos中遇到了类似的问题。我通过临时运行“ sudo setenforce 0”解决了该问题。您还可以编辑/ etc / selinux / config文件并将SELINUX设置为禁用