systemd 服务报告“未知端口”

systemd 服务报告“未知端口”

在 CentOS 7 服务器上,我正在为新服务 prometheus-slurm-exporter 从头创建新的 systemd 服务。(这是一个从 HPC 集群上的 SLURM 调度程序导出数据的应用程序。)默认情况下,它使用端口 8080,但由于该端口已被其他服务使用,因此我将其设置为使用端口 9090。从命令行运行,命令如下所示:

/opt/prometheus-slurm-exporter/bin/prometheus-slurm-exporter --listen-address="0.0.0.0:9090"

它可以从命令行正常运行,但我想从它创建一个 systemd 服务,因此我创建了以下文件 /etc/systemd/system/prometheus-slurm-exporter.service:

[Unit]
Description=SLURM Prometheus Exporter for Grafana
After=network.target syslog.target

[Service]
ExecStart=/opt/prometheus-slurm-exporter/bin/prometheus-slurm-exporter --listen-address="0.0.0.0:9090"

[Install]
WantedBy=multi-user.target

运行systemctl daemon-reload后再执行systemctl start prometheus-slurm-exporter,服务失败,报告未知端口:

Sep 30 12:21:14 ada prometheus-slurm-exporter: time="2021-09-30T12:21:14-04:00" level=info msg="Starting Server: \"0.0.0.0:9090\"" source="main.go:59"
Sep 30 12:21:14 ada prometheus-slurm-exporter: time="2021-09-30T12:21:14-04:00" level=fatal msg="listen tcp: address tcp/9090\": unknown port" source="main.go:62"
Sep 30 12:21:14 ada systemd: prometheus-slurm-exporter.service: main process exited, code=exited, status=1/FAILURE
Sep 30 12:21:14 ada systemd: Unit prometheus-slurm-exporter.service entered failed state.
Sep 30 12:21:14 ada systemd: prometheus-slurm-exporter.service failed.

为什么它是从命令行运行而不是作为 systemd 服务运行,并且为什么 systemd 无法识别端口 9090?

答案1

我已经回答了自己的问题。似乎您无法将命令行参数传递给 ExecStart。相反,我需要使用

EnvironmentFile=-/etc/default/prometheus-slurm-exporter
ExecStart=/opt/prometheus-slurm-exporter/bin/prometheus-slurm-exporter $OPTIONS

在环境文件中,我有

OPTIONS=--listen-address="0.0.0.0:9090"

现在工作正常。

答案2

虽然很旧,但以防其他人遇到此问题,请回答 - 您可以传递命令行参数,但引用并不像预期的那样:https://github.com/systemd/systemd/issues/624. 没有引号,例如这个可以正常工作:

ExecStart=/usr/local/bin/prometheus-slurm-exporter --listen-address=0.0.0.0:9341

相关内容