Linux Network Monitoring

Monitoring services using Zabbix

Zabbix monitoring

For critical production servers and services, monitoring is very critical. One is to get notified about issues immediately and the second is to resolve quickly hence not affecting SLA. Here, I will be showing you how to monitor systemctl services using Zabbix, a basic Zabbix template, and very easy Linux commands. The traditional way of monitoring services is by monitoring the ports associated with the services, however in some cases/environments, critical services have to be monitored E.g. (squid), hence in this post, you will see how to monitor services using service names and not ports on Linux servers. Some other guides can be found in these links: Practical use of SELinux in production: How to locate directory file context and restore it ,how-to-create-a-static-pod-in-kubernetes-with-demos-that-can-help-you-become-a-better-Kubernetes-administrator, and how to create-and-deliver-a-report-on-system-utilization-on-a-Linux-based-os/.

Note: Moreover, You should already have the Zabbix monitoring tool installed in your environment to do this. However, Here is a guide on how to install Zabbix Monitoring Tool on a Linux System, and how-to-use-container-insights-to-get-the-full-benefits-of-azure-monitor-for-azure-Kubernetes-workload.

First, check the services running

systemctl | grep running 
service monitoring

Take a note of whatever service name you will want to monitor, Log in to your Zabbix console and create a new template and application.

Configuration -> Templates -> Create template
network monitoring

Create New application on Zabbix console  – > systemctl status

system health monitoring

Furthermore, Create an item for whatever service name you want to monitor

Zabbix monitoring

Create individual Alert triggers


Trigger expression

{service monitoring using["systemctl status chronyd | grep -q running;echo $?"].last()}=1

Please change the service name in the expression to your configured service name. Once Items and triggers have been created on the services needed, test or simulate the new configurations by stopping services.


Now check Zabbix console

Notify of

Newest Most Voted
Inline Feedbacks
View all comments
Sidheswar Biswal
Sidheswar Biswal
1 year ago

image not showing clearly

mark burke
mark burke
1 year ago

Hello, I’ve configured this but it’s not triggering the alert. Do i need to open a port from the zabbix server to the host?

1 year ago

I added the item but got an Unsupported item key error.

antoine pacaud
antoine pacaud
1 year ago
Reply to  Andy

Did you add[*] in the agent configuration file ?

antoine pacaud
antoine pacaud
1 year ago

Thanks it works for me with a zabbix version 5.4.9.
But I had to change the format of the trigger because of that version :

last(/Template_name/[“systemctl status service_name | grep -q running; echo $?”])=1

And in requirements I had to add “[*]” in the agent configuration file.

8 months ago
Reply to  antoine pacaud

Hi, can u please type the entire code? 
For my case, i wrote this code for the trigger:
last(/WePacsLinux/[“systemctl status orthanc | grep -q running; echo $?”])=11
and for the item:[systemctl status orthanc | grep -q running; echo $?]
but it gives me this error:
incorrect trigger expression starting from “last(/WePacsLinux/[“systemctl status orthanc | grep -q running; echo $?”])=1”.

1 year ago

Not working with quotes on Zabbix Server 5.4.3.
For me item began to work (cron.service, for example) with this code:[systemctl status cron.service | grep -q running; echo $?]
1 year ago

Hi ..It is not possible through SNMP. Do you have any expression throgh snmp .

net.tcp.service[service_name] it working for some service . Not for all service.


10 months ago

can you please describe the total steps and commands briefly ? As it is not working

Would love your thoughts, please comment.x