如何全局监控 systemd 单元状态?

如何全局监控 systemd 单元状态?

我一直在尝试编写一个脚本来监视单元故障并通过全球电子邮件发出警报(即不在OnFailure=我想要监视的每个单元中使用)。

在文档中,我找到了JobRemovedD-Bus 信号,这听起来与我正在寻找的完全一样,只是用于工作。特别是,这意味着Type=simple单元将在子进程创建后立即触发JobRemoved,而不会等待其结束。

是否有类似的信号来全局监控单元状态变化?

(这是我目前的尝试:关联

答案1

您可以连接到属性已更改每当单元的属性发生变化时,每个单元上都会发出信号。该物业活动状态

包含反映单元当前是否处于活动状态的状态值。当前定义了以下状态:活动、重新加载、非活动、失败、激活、停用。 active 表示该单元处于活动状态(显然......)。重新加载表示该单元处于活动状态并且当前正在重新加载其配置。 inactive 表示它处于非活动状态并且先前的运行已成功或尚未发生先前的运行。 failed 表示它处于非活动状态,并且之前的运行不成功(有关其原因的更多信息可在单元类型特定接口上找到,例如“结果”属性中的服务,请参见下文)。激活表示该单元之前处于非活动状态,但当前正在进入活动状态。相反,停用表示该单元当前处于停用过程中。

(来自systemd dbus 文档)。

要获取单位的初始列表,您可以使用该ListUnits方法并订阅UnitNewUnitRemoved信号,以便在添加/删除单位时收到通知。

有多个现有项目已经使用它,包括系统监控程序萨格贝沙伊德

相关内容