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

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

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

可以使用Zabbix [自动发现](/manual/discovery/low_level_discovery)系统单元 (默认是服务)。

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

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

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

    systemd.unit.discovery

::: noteimportant
此[监控项](/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.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"
    }]

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

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

还可以发现**禁用**的systemd 单元。在这种情况下，生成的 JSON 中会返回三个宏：

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

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

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

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

以下宏可用于发现规则[过滤器](/manual/discovery/low_level_discovery#discovery-rule-filter)以及监控项、触发器和图形原型：

|宏|描述|
|-----|-----------|
|{\#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` 等）。仅当该单元为服务时才会返回此宏。|

[comment]: # ({/9bd149f1-0272b801})

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

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

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

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