7 systemd 服务发现

概述

可以通过discover 使用Zabbix监控systemd单元(默认情况下为服务)。

监控项键

发现规则中使用的监控项是

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.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 单元的发现

自Zabbix 6.0.1起,还可以发现已禁用的systemd单元。在这种情况下, 返回的JSON结果中包含三个宏:

  • {#UNIT.PATH}
  • {#UNIT.ACTIVESTATE}
  • {#UNIT.UNITFILESTATE}.

要为已禁用的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版本开始支持。