[comment]: # translation:outdated

[comment]: # ({1825d7ea-ec525f2f})
# 8 systemd服务的自动发现

[comment]: # ({/1825d7ea-ec525f2f})

[comment]: # ({f72274ad-6e5dadb8})
### 概述

通过 Zabbix 可以 [discover](/manual/discovery/low_level_discovery)
systemd 单元（服务，默认情况下）。

[comment]: # ({/f72274ad-6e5dadb8})

[comment]: # ({1f2028b1-e655c9cf})
### 监控项键

在 [发现规则](/manual/discovery/low_level_discovery#发现规则) 中使用的 监控项 是

    systemd.unit.discovery

::: noteimportant
这个 [item](/manual/config/items/itemtypes/zabbix_agent/zabbix_agent2) 键仅在 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.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"
    }]

[comment]: # ({/1f2028b1-e655c9cf})

[comment]: # ({cbc19e2b-2d3b32d7})
##### 已禁用 systemd 单元的发现

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

-    {#UNIT.PATH}
-    {#UNIT.ACTIVESTATE}
-    {#UNIT.UNITFILESTATE}。

::: noteimportant
要使监控项以及从原型创建的触发器能够针对已禁用的systemd单元生效，请确保调整（或删除）针对{#UNIT.ACTIVESTATE}和{#UNIT.UNITFILESTATE}的LLD过滤器限制。
:::

[comment]: # ({/cbc19e2b-2d3b32d7})

[comment]: # ({85c44d09-0272b801})
### 支持的宏

以下宏支持在发现规则
[过滤器](/manual/discovery/low_level_discovery#过滤器)
以及监控项、触发器和图形的原型中使用：

| 宏 | 描述 |
|-----|-----------|
| {\#UNIT.NAME} | 主单元名称。 |
| {\#UNIT.DESCRIPTION} | 人类可读的描述。 |
| {\#UNIT.LOADSTATE} | 加载状态（即单元file是否已成功加载） |
| {\#UNIT.ACTIVESTATE} | 活动状态（即单元当前是否已启动） |
| {\#UNIT.SUBSTATE} | 子状态（比活动状态更细粒度的version，具体于单元类型，而活动状态则不是） |
| {\#UNIT.FOLLOWED} | 如果有的话，此单元在其状态中所跟随的单元；否则为空string。 |
| {\#UNIT.PATH} | 单元object路径。 |
| {\#UNIT.JOBID} | 如果作业单元有排队的作业，则为数字作业ID；否则为0。 |
| {\#UNIT.JOBTYPE} | 作业类型。 |
| {\#UNIT.JOBPATH} | 作业object路径。 |
| {\#UNIT.UNITFILESTATE} | 单元文件的安装状态。 |

[comment]: # ({/85c44d09-0272b801})

[comment]: # ({93b3d9f5-c8363d40})
### 监控项原型

基于 systemd 服务发现可以创建的 监控项原型 包括，例如：

-   监控项 名称：`{#UNIT.DESCRIPTION} active state info`；监控项 键：`systemd.unit.info["{#UNIT.NAME}"]`
-   监控项 名称：`{#UNIT.DESCRIPTION} load state info`；监控项 键：`systemd.unit.info["{#UNIT.NAME}",LoadState]`

[comment]: # ({/93b3d9f5-c8363d40})
