On this page
8 自动发现系统服务
概述
可以使用Zabbix 自动发现系统单元 (默认是服务)。
监控项键值
在发现规则中使用的监控项是
systemd.unit.discovery
此item 键值仅在 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} | 服务单元的类型(例如 simple、forking、oneshot、idle 等)。仅当该单元是服务时才会返回此宏。 |
监控项原型
监控项原型基于系统服务自动发现来创建, 比如:
- 监控项名称:
{#UNIT.DESCRIPTION}; 监控项键值:systemd.unit.info["{#UNIT.NAME}"] - 监控项名称:
{#UNIT.DESCRIPTION}; 监控项键值:systemd.unit.info["{#UNIT.NAME}",LoadState]