# Systemd by Zabbix agent 2 ## Overview This template is designed for the effortless deployment of Systemd monitoring by Zabbix via Zabbix agent 2 and doesn't require any external scripts. ## Requirements Zabbix version: 7.0 and higher. ## Tested versions This template has been tested on: - Systemd 219 ## Configuration > Zabbix should be configured according to the instructions in the [Templates out of the box](https://www.zabbix.com/documentation/7.0/manual/config/templates_out_of_the_box) section. ## Setup 1. Setup and configure zabbix-agent2 compiled with the Systemd monitoring plugin. 2. Set filters with macros if you want to override default filter parameters. ### Macros used |Name|Description|Default| |----|-----------|-------| |{$SYSTEMD.NAME.SOCKET.MATCHES}|

Filter of systemd socket units by name

|`.*`| |{$SYSTEMD.NAME.SOCKET.NOT_MATCHES}|

Filter of systemd socket units by name

|`CHANGE_IF_NEEDED`| |{$SYSTEMD.ACTIVESTATE.SOCKET.MATCHES}|

Filter of systemd socket units by active state

|`active`| |{$SYSTEMD.ACTIVESTATE.SOCKET.NOT_MATCHES}|

Filter of systemd socket units by active state

|`CHANGE_IF_NEEDED`| |{$SYSTEMD.UNITFILESTATE.SOCKET.MATCHES}|

Filter of systemd socket units by unit file state

|`enabled`| |{$SYSTEMD.UNITFILESTATE.SOCKET.NOT_MATCHES}|

Filter of systemd socket units by unit file state

|`CHANGE_IF_NEEDED`| |{$SYSTEMD.NAME.SERVICE.MATCHES}|

Filter of systemd service units by name

|`.*`| |{$SYSTEMD.NAME.SERVICE.NOT_MATCHES}|

Filter of systemd service units by name

|`CHANGE_IF_NEEDED`| |{$SYSTEMD.ACTIVESTATE.SERVICE.MATCHES}|

Filter of systemd service units by active state

|`active`| |{$SYSTEMD.ACTIVESTATE.SERVICE.NOT_MATCHES}|

Filter of systemd service units by active state

|`CHANGE_IF_NEEDED`| |{$SYSTEMD.UNITFILESTATE.SERVICE.MATCHES}|

Filter of systemd service units by unit file state

|`enabled`| |{$SYSTEMD.UNITFILESTATE.SERVICE.NOT_MATCHES}|

Filter of systemd service units by unit file state

|`CHANGE_IF_NEEDED`| ### LLD rule Service units discovery |Name|Description|Type|Key and additional info| |----|-----------|----|-----------------------| |Service units discovery|

Discover systemd service units and their details.

|Zabbix agent|systemd.unit.discovery[service]| ### Item prototypes for Service units discovery |Name|Description|Type|Key and additional info| |----|-----------|----|-----------------------| |{#UNIT.NAME}: Get unit info|

Returns all properties of a systemd service unit.

Unit description: {#UNIT.DESCRIPTION}.

|Zabbix agent|systemd.unit.get["{#UNIT.NAME}"]| |{#UNIT.NAME}: Active state|

State value that reflects whether the unit is currently active or not. The following states are currently defined: "active", "reloading", "inactive", "failed", "activating", and "deactivating".

|Dependent item|systemd.service.active_state["{#UNIT.NAME}"]

**Preprocessing**

| |{#UNIT.NAME}: Load state|

State value that reflects whether the configuration file of this unit has been loaded. The following states are currently defined: "loaded", "error", and "masked".

|Dependent item|systemd.service.load_state["{#UNIT.NAME}"]

**Preprocessing**

| |{#UNIT.NAME}: Unit file state|

Encodes the install state of the unit file of FragmentPath. It currently knows the following states: "enabled", "enabled-runtime", "linked", "linked-runtime", "masked", "masked-runtime", "static", "disabled", and "invalid".

|Dependent item|systemd.service.unitfile_state["{#UNIT.NAME}"]

**Preprocessing**

| |{#UNIT.NAME}: Active time|

Number of seconds since unit entered the active state.

|Dependent item|systemd.service.uptime["{#UNIT.NAME}"]

**Preprocessing**

| ### Trigger prototypes for Service units discovery |Name|Description|Expression|Severity|Dependencies and additional info| |----|-----------|----------|--------|--------------------------------| |{#UNIT.NAME}: Service is not running||`last(/Systemd by Zabbix agent 2/systemd.service.active_state["{#UNIT.NAME}"])<>1`|Warning|**Manual close**: Yes| |{#UNIT.NAME}: has been restarted|

Uptime is less than 10 minutes.

|`last(/Systemd by Zabbix agent 2/systemd.service.uptime["{#UNIT.NAME}"])<10m`|Info|**Manual close**: Yes| ### LLD rule Socket units discovery |Name|Description|Type|Key and additional info| |----|-----------|----|-----------------------| |Socket units discovery|

Discover systemd socket units and their details.

|Zabbix agent|systemd.unit.discovery[socket]| ### Item prototypes for Socket units discovery |Name|Description|Type|Key and additional info| |----|-----------|----|-----------------------| |{#UNIT.NAME}: Get unit info|

Returns all properties of a systemd socket unit.

Unit description: {#UNIT.DESCRIPTION}.

|Zabbix agent|systemd.unit.get["{#UNIT.NAME}",Socket]| |{#UNIT.NAME}: Connections accepted per sec|

The number of accepted socket connections (NAccepted) per second.

|Dependent item|systemd.socket.conn_accepted.rate["{#UNIT.NAME}"]

**Preprocessing**

| |{#UNIT.NAME}: Connections connected|

The current number of socket connections (NConnections).

|Dependent item|systemd.socket.conn_count["{#UNIT.NAME}"]

**Preprocessing**

| ## Feedback Please report any issues with the template at [`https://support.zabbix.com`](https://support.zabbix.com) You can also provide feedback, discuss the template, or ask for help at [`ZABBIX forums`](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback)