Рейтинг:0

Служба systemd сообщает «неизвестный порт»

флаг fr

На сервере 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?

AlexAvardo avatar
флаг fr
Попробуйте `--listen-address=:9090`
Рейтинг:0
флаг fr

Я ответил на свой вопрос. Кажется, вы не можете передать аргументы командной строки в ExecStart. Вместо этого мне нужно использовать

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

И в файле среды у меня есть

ОПЦИИ=--listen-address="0.0.0.0:9090"

Теперь работает нормально.

Рейтинг:0
флаг mx

Старый, но отвечающий на случай, если кто-то еще нажмет на это - вы можете передавать аргументы командной строки, но цитирование не соответствует ожиданиям: https://github.com/systemd/systemd/issues/624. Без кавычек, например. это отлично работает:

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

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.