7 系统服务的自动发现

概述

系统单元 (服务, 默认设置)可被Zabbix 自动发现.

监控项的键

自动发现规则 中使用这个监控项

  1. systemd.unit.discovery

监控项 的键只有Zabbix agent 2版本支持.

此监控项返回一个包含系统单元的JSON数据,如下所示:

  1. [{
  2. "{#UNIT.NAME}": "mysqld.service",
  3. "{#UNIT.DESCRIPTION}": "MySQL Server",
  4. "{#UNIT.LOADSTATE}": "loaded",
  5. "{#UNIT.ACTIVESTATE}": "active",
  6. "{#UNIT.SUBSTATE}": "running",
  7. "{#UNIT.FOLLOWED}": "",
  8. "{#UNIT.PATH}": "/org/freedesktop/systemd1/unit/mysqld_2eservice",
  9. "{#UNIT.JOBID}": 0,
  10. "{#UNIT.JOBTYPE}": ""
  11. "{#UNIT.JOBPATH}": "/",
  12. "{#UNIT.UNITFILESTATE}": "enabled"
  13. }, {
  14. "{#UNIT.NAME}": "systemd-journald.socket",
  15. "{#UNIT.DESCRIPTION}": "Journal Socket",
  16. "{#UNIT.LOADSTATE}": "loaded",
  17. "{#UNIT.ACTIVESTATE}": "active",
  18. "{#UNIT.SUBSTATE}": "running",
  19. "{#UNIT.FOLLOWED}": "",
  20. "{#UNIT.PATH}": "/org/freedesktop/systemd1/unit/systemd_2djournald_2esocket",
  21. "{#UNIT.JOBID}": 0,
  22. "{#UNIT.JOBTYPE}": "",
  23. "{#UNIT.JOBPATH}": "/"
  24. "{#UNIT.UNITFILESTATE}": "enabled"
  25. }]
发现的禁用systemd 单元

从 Zabbix 6.0.1 开始,还可以发现禁用的systemd 单元。在这种情况下,生成的 JSON 中会返回三个宏:

  • · {#UNIT.PATH}
  • · {#UNIT.ACTIVESTATE}
  • · {#UNIT.UNITFILESTATE}.

要从禁用的 systemd 单元的原型创建监控项和触发器,请确保调整(或删除)针对 {#UNIT.ACTIVESTATE} 和 {#UNIT.UNITFILESTATE} 的禁止 LLD 过滤器

支持的宏

在自动发现规则的 过滤器 和监控项、触发器、图形的原型配置中支持的宏如下所示:

描述
{#UNIT.NAME}主单元名称。
{#UNIT.DESCRIPTION}通俗易懂的描述。
{#UNIT.LOADSTATE}加载状态 (比如单元文件是否成功加载)
{#UNIT.ACTIVESTATE}激活状态 (比如单元是否已启动)
{#UNIT.SUBSTATE}子状态 (激活状态的另一个更加细致的版本,根据单元类型不同而不同, 而激活状态更加通用)
{#UNIT.FOLLOWED}此单元所跟踪的单元的状态; 如果没有则显示空字符串。
{#UNIT.PATH}单元对象路径。
{#UNIT.JOBID}如果在任务单元中有排队的任务,则显示任务ID的数字; 否则为0。
{#UNIT.JOBTYPE}任务类型。
{#UNIT.JOBPATH}任务对象路径。
{#UNIT.UNITFILESTATE}单元文件的安装状态。

监控项原型

监控项原型基于系统服务自动发现来创建, 比如:

  • 监控项名称: {#UNIT.DESCRIPTION}; 监控项的键: systemd.unit.info["{#UNIT.NAME}"]
  • 监控项名称: {#UNIT.DESCRIPTION}; 监控项的键: systemd.unit.info["{#UNIT.NAME}",LoadState]

从 Zabbix 4.4开始支持systemd.unit.info agent 监控项.