Назад | Перейти на главную страницу

systemd не перезапускает процесс, который зависит от запущенного другого процесса

Я попробовал исправить здесь: systemd не перезапускает мой процесс и это не сработало для меня.

У меня есть экспортер Кафки для Прометея. У меня на том же компьютере запущен Kafka. Когда я останавливаю Kafka, экспортер Kakfa умирает (это зависит от возможности общаться с процессами Kafka). Я хотел бы, чтобы экспортер автоматически перезапускался после повторного запуска Kafka, но это не работает.

Вот мой файл systemd ниже. Я пробовал здесь разные вещи. Что я могу сделать, чтобы обеспечить запуск экспортера Kafka после окончательного перезапуска / восстановления Kafka?

[Unit]
Requires=kafka.service
After=kafka.service

[Service]
Type=simple
User=kafka
# give kafka time to start up first
ExecStartPre=/bin/sleep 15
ExecStart=/opt/kafka_exporter/kafka_exporter --kafka.server=localhost:9092
Restart=always
RestartSec=30
StartLimitInterval=0s

[Install]
WantedBy=multi-user.target

Вы можете попробовать PartOf? Из руководства:

PartOf= Configures dependencies similar to Requires=, but limited to stopping and restarting of units. When systemd stops or restarts the units listed here, the action is propagated to this unit. Note that this is a one-way dependency — changes to this unit do not affect the listed units.

В этом случае устройство должно быть таким, как показано ниже.

[Unit]
After=kafka.service
Requires=kafka.service
PartOf=kafka.service