It is possible to discover systemd units (services, by default) with Zabbix.
The item to use in the discovery rule is the
systemd.unit.discovery
This item returns a JSON with information about systemd units, for example:
[{
"{#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" }]
The following macros are supported for use in the discovery rule filter and prototypes of items, triggers and graphs:
Macro | Description |
---|---|
{#UNIT.NAME} | Primary unit name. |
{#UNIT.DESCRIPTION} | Human readable description. |
{#UNIT.LOADSTATE} | Load state (i.e. whether the unit file has been loaded successfully) |
{#UNIT.ACTIVESTATE} | Active state (i.e. whether the unit is currently started or not) |
{#UNIT.SUBSTATE} | Sub state (a more fine-grained version of the active state that is specific to the unit type, which the active state is not) |
{#UNIT.FOLLOWED} | Unit that is being followed in its state by this unit, if there is any; otherwise an empty string. |
{#UNIT.PATH} | Unit object path. |
{#UNIT.JOBID} | Numeric job ID if there is a job queued for the job unit; 0 otherwise. |
{#UNIT.JOBTYPE} | Job type. |
{#UNIT.JOBPATH} | Job object path. |
{#UNIT.UNITFILESTATE} | The install state of the unit file (supported since 5.0.6). |
Item prototypes that can be created based on systemd service discovery include, for example:
{#UNIT.DESCRIPTION}
; item key: systemd.unit.info["{#UNIT.NAME}"]
{#UNIT.DESCRIPTION}
; item key: systemd.unit.info["{#UNIT.NAME}",LoadState]
systemd.unit.info
agent items are supported since Zabbix 4.4.