systemd 不会重新启动依赖于另一个进程的进程

systemd 不会重新启动依赖于另一个进程的进程

我尝试在这里修复:systemd 不重启我的进程但这对我来说不起作用。

我有一个用于 Prometheus 的 Kafka 导出器。我在同一台计算机上运行 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

答案1

你能尝试 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

相关内容