可以使用Zabbix 自动发现系统单元 (默认是服务)。
在自动发现规则 中使用这个监控项
此监控项 的键值只有Zabbix agent 2版本支持.
此监控项返回一个包含系统单元的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.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 单元。在这种情况下,生成的 JSON 中会返回三个宏:
要从禁用的 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]