It is possible to discover systemd units (services, by default) with Zabbix.
The item to use in the discovery rule is the
This item key is only supported in Zabbix agent 2.
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"
}]
It is also possible to discover disabled systemd units. In this case three macros are returned in the resulting JSON:
To have items and triggers created from prototypes for disabled systemd units, make sure to adjust (or remove) prohibiting LLD filters for {#UNIT.ACTIVESTATE} and {#UNIT.UNITFILESTATE}.
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. |
Item prototypes that can be created based on systemd service discovery include, for example:
{#UNIT.DESCRIPTION} active state info
; item key: systemd.unit.info["{#UNIT.NAME}"]
{#UNIT.DESCRIPTION} load state info
; item key: systemd.unit.info["{#UNIT.NAME}",LoadState]