systemd 服务的发现

概述

可以使用Zabbix 自动发现系统单元 (默认是服务)。

监控项键值

要配置发现规则,请使用 Zabbix agent 监控项键值 systemd.unit.discovery

此监控项键值仅受 Zabbix agent 2 支持。

此监控项返回一个包含 systemd 单元信息的 JSON,例如:

[{
    "{#UNIT.NAME}": "mysqld.service",
    "{#UNIT.DESCRIPTION}": "MySQL Server",
    "{#UNIT.LOADSTATE}": "loaded",
    "{#UNIT.ACTIVESTATE}": "active",
    "{#UNIT.SUBSTATE}": "running",
    "{#UNIT.FOLLOWED}": "",
    "{#UNIT.PATH}": "/org/freedesktop/systemd1/unit/mysqld_2eservice",
    "{#UNIT.JOBID}": 0,
    "{#UNIT.JOBTYPE}": "",
    "{#UNIT.JOBPATH}": "/",
    "{#UNIT.UNITFILESTATE}": "enabled"
    "{#UNIT.SERVICETYPE}": "simple"
}, {
    "{#UNIT.NAME}": "systemd-journald.socket",
    "{#UNIT.DESCRIPTION}": "Journal Socket",
    "{#UNIT.LOADSTATE}": "loaded",
    "{#UNIT.ACTIVESTATE}": "active",
    "{#UNIT.SUBSTATE}": "running",
    "{#UNIT.FOLLOWED}": "",
    "{#UNIT.PATH}": "/org/freedesktop/systemd1/unit/systemd_2djournald_2esocket",
    "{#UNIT.JOBID}": 0,
    "{#UNIT.JOBTYPE}": "",
    "{#UNIT.JOBPATH}": "/",
    "{#UNIT.UNITFILESTATE}": "enabled"
}]
已禁用 systemd 单元的发现

也可以发现已禁用的 systemd 单元。在这种情况下,结果 JSON 中会返回三个宏:

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

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

支持的宏

以下宏可用于发现规则 过滤器 以及监控项、触发器和图形的原型:

Macro Description
{#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.SERVICETYPE} 服务单元的类型(例如 simpleforkingoneshotidle 等)。仅当该单元是服务时才返回此宏。

监控项原型

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

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