На сервере CentOS 7 я создаю новую службу systemd с нуля для новой службы prometheus-slurm-exporter. (Это приложение, которое экспортирует данные из планировщика SLURM в кластер HPC.) По умолчанию оно использует порт 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:
[Ед. изм]
Description=SLURM Prometheus Exporter для Grafana
После=network.target syslog.target
[Оказание услуг]
ExecStart=/opt/prometheus-slurm-exporter/bin/prometheus-slurm-exporter --listen-address="0.0.0.0:9090"
[Установить]
WantedBy=многопользовательская.цель
После запуска systemctl демон-перезагрузка
с последующим systemctl запустить prometheus-slurm-exporter
, служба дает сбой, сообщая о неизвестном порте:
30 сентября, 12:21:14 ada prometheus-slurm-exporter: time="2021-09-30T12:21:14-04:00" level=info msg="Начальный сервер: \"0.0.0.0:9090\"" источник = "main.go: 59"
30 сентября, 12:21:14 ada prometheus-slurm-exporter: time="2021-09-30T12:21:14-04:00" level=fatal msg="прослушать tcp: адрес tcp/9090\": неизвестный порт" источник = "main.go: 62"
30 сентября, 12:21:14 ada systemd: prometheus-slurm-exporter.service: основной процесс завершен, код = завершен, статус = 1/FAILURE
30 сентября, 12:21:14 ada systemd: модуль prometheus-slurm-exporter.service перешел в состояние сбоя.
30 сентября, 12:21:14 ada systemd: prometheus-slurm-exporter.service не удалось.
Почему он запускается из командной строки, а не как служба systemd, и почему systemd не может распознать порт 9090?