Systemd

systemd is a software suite that provides an array of system components for Linux operating systems. Its main aim is to unify service configuration and behavior across Linux distributions.

Available solutions




This template is for Zabbix version: 5.4
Also available for: 5.0

Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/systemd?at=release/5.4

Systemd by Zabbix agent 2

Overview

For Zabbix version: 5.4 and higher
The template to monitor systemd units. Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.

Systemd by Zabbix agent 2 — collects metrics by polling zabbix-agent2.

This template was tested on:

  • Systemd, version 219

Setup

See Zabbix template operation for basic instructions.

  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.

Zabbix configuration

No specific Zabbix configuration is required.

Macros used

Name Description Default
{$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.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.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.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.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
{$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

Template links

There are no template links in this template.

Discovery rules

Name Description Type Key and additional info
Service units discovery

Discover systemd service units and their details.

ZABBIX_PASSIVE systemd.unit.discovery[service]

Filter:

AND

- A: {#UNIT.ACTIVESTATE} MATCHES_REGEX {$SYSTEMD.ACTIVESTATE.SERVICE.MATCHES}

- B: {#UNIT.ACTIVESTATE} NOT_MATCHES_REGEX {$SYSTEMD.ACTIVESTATE.SERVICE.NOT_MATCHES}

- C: {#UNIT.UNITFILESTATE} MATCHES_REGEX {$SYSTEMD.UNITFILESTATE.SERVICE.MATCHES}

- D: {#UNIT.UNITFILESTATE} NOT_MATCHES_REGEX {$SYSTEMD.UNITFILESTATE.SERVICE.NOT_MATCHES}

- E: {#UNIT.NAME} NOT_MATCHES_REGEX {$SYSTEMD.NAME.SERVICE.NOT_MATCHES}

- F: {#UNIT.NAME} MATCHES_REGEX {$SYSTEMD.NAME.SERVICE.MATCHES}

Socket units discovery

Discover systemd socket units and their details.

ZABBIX_PASSIVE systemd.unit.discovery[socket]

Filter:

AND

- A: {#UNIT.ACTIVESTATE} MATCHES_REGEX {$SYSTEMD.ACTIVESTATE.SOCKET.MATCHES}

- B: {#UNIT.ACTIVESTATE} NOT_MATCHES_REGEX {$SYSTEMD.ACTIVESTATE.SOCKET.NOT_MATCHES}

- C: {#UNIT.UNITFILESTATE} MATCHES_REGEX {$SYSTEMD.UNITFILESTATE.SOCKET.MATCHES}

- D: {#UNIT.UNITFILESTATE} NOT_MATCHES_REGEX {$SYSTEMD.UNITFILESTATE.SOCKET.NOT_MATCHES}

- E: {#UNIT.NAME} NOT_MATCHES_REGEX {$SYSTEMD.NAME.SOCKET.NOT_MATCHES}

- F: {#UNIT.NAME} MATCHES_REGEX {$SYSTEMD.NAME.SOCKET.MATCHES}

Items collected

Group Name Description Type Key and additional info
Systemd {#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 systemd.service.active_state["{#UNIT.NAME}"]

Preprocessing:

- JSONPATH: $.ActiveState.state

- DISCARD_UNCHANGED_HEARTBEAT: 30m

Systemd {#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 systemd.service.load_state["{#UNIT.NAME}"]

Preprocessing:

- JSONPATH: $.LoadState.state

- DISCARD_UNCHANGED_HEARTBEAT: 30m

Systemd {#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 systemd.service.unitfile_state["{#UNIT.NAME}"]

Preprocessing:

- JSONPATH: $.UnitFileState.state

- DISCARD_UNCHANGED_HEARTBEAT: 30m

Systemd {#UNIT.NAME}: Active time

Number of seconds since unit entered the active state.

DEPENDENT systemd.service.uptime["{#UNIT.NAME}"]

Preprocessing:

- JAVASCRIPT: Text is too long. Please see the template.

Systemd {#UNIT.NAME}: Connections accepted per sec

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

DEPENDENT systemd.socket.conn_accepted.rate["{#UNIT.NAME}"]

Preprocessing:

- JSONPATH: $.NAccepted

- CHANGE_PER_SECOND

Systemd {#UNIT.NAME}: Connections connected

The current number of socket connections (NConnections).

DEPENDENT systemd.socket.conn_count["{#UNIT.NAME}"]

Preprocessing:

- JSONPATH: $.NConnections

Zabbix_raw_items {#UNIT.NAME}: Get unit info

Returns all properties of a systemd service unit.

Unit description: {#UNIT.DESCRIPTION}.

ZABBIX_PASSIVE systemd.unit.get["{#UNIT.NAME}"]
Zabbix_raw_items {#UNIT.NAME}: Get unit info

Returns all properties of a systemd socket unit.

Unit description: {#UNIT.DESCRIPTION}.

ZABBIX_PASSIVE systemd.unit.get["{#UNIT.NAME}",Socket]

Triggers

Name Description Expression Severity Dependencies and additional info
{#UNIT.NAME}: Service is not running

-

{TEMPLATE_NAME:systemd.service.active_state["{#UNIT.NAME}"].last()}<>1 WARNING

Manual close: YES

{#UNIT.NAME}: has been restarted (uptime < 10m)

Uptime is less than 10 minutes

{TEMPLATE_NAME:systemd.service.uptime["{#UNIT.NAME}"].last()}<10m INFO

Manual close: YES

Feedback

Please report any issues with the template at https://support.zabbix.com

You can also provide a feedback, discuss the template or ask for help with it at ZABBIX forums.

Articles and documentation

+ Propose new article

Didn't find what you are looking for?