可以通过discover 使用Zabbix监控systemd单元(默认情况下为服务)。
在发现规则中使用的监控项是
此 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.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" }]
自Zabbix 6.0.1起,还可以发现已禁用的systemd单元。在这种情况下, 返回的JSON结果中包含三个宏:
要为已禁用的systemd单元创建监控项和触发器原型,请确保调整(或移除) 针对{#UNIT.ACTIVESTATE}和{#UNIT.UNITFILESTATE}的禁止LLD过滤器。
以下宏支持用于发现规则 过滤器 以及监控项、触发器和图形的原型:
宏 | 描述 |
---|---|
{#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} | 单元file的安装状态 |
基于systemd服务发现可创建的监控项原型 包括例如:
监控项名称: {#UNIT.DESCRIPTION} active state info
; 监控项键: systemd.unit.info["{#UNIT.NAME}"]
监控项名称: {#UNIT.DESCRIPTION} load state info
; 监控项键:
systemd.unit.info["{#UNIT.NAME}",LoadState]
systemd.unit.info["{#UNIT.NAME}",LoadState]
systemd.unit.info
agent items 从Zabbix 4.4版本开始支持。