Monitoring Yate services with Zabbix

From YateBTS
Revision as of 20:31, 29 March 2018 by Paulc (Talk | contribs) (Integration with Yate)

Jump to: navigation, search

Zabbix server

Zabbix is an enterprise open source monitoring software, is used to monitor and track the status of various network services, servers, and other network hardware.

The easiest and safest way to install a Zabbix server is to use a Zabbix Appliance. (We recommend Zabbix Appliance 3.2)

With Zabbix Appliance, Zabbix software (Zabbix server with MySQL support, Zabbix agent and Zabbix web interface) is already installed and configured for trouble free deployment.

If you don't want to use a Zabbix Appliance, you can install Zabbix software on Mageia 5 like this:

urpmi.addmedia --update Zabbix
urpmi zabbix-server-mysql zabbix-web-mysql zabbix-agent

Zabbix agent

Zabbix Agent is written in C language and can run on various supported platforms (Linux, Windows, UNIX). On UNIX-like systems it runs on the host being monitored.

This allows monitoring system resources (availability, CPU usage, used/free RAM memory and disk, network interface usage, MySQL performance) and setting alarms for specific thresholds.

Agents can support both passive (polling) and active checks (trapping).

Zabbix agent passive checks

Zabbix server may perform checks based on a time interval. Zabbix server requests certain parameters/data on a default/user-defined time intervals.

In a passive check, a Zabbix server requests values from Zabbix Agent (ex: CPU load), the agent processes the request and returns the value to Zabbix server.

Zabbix agent active checks

Zabbix active agent, must first retrieve from the Zabbix server a list of items for processing, then sends the new values periodically to the server.

Integration with Yate

Zabbix (TM) PHP active agent for Yate based products uses the Zabbix version 1 JSON to push requested data to a Zabbix server.

zabbix.php is an active agent and is included in yate-common rpm package.

To use, please add in /etc/yate/product/ext-custom.conf:


For IPv6 servers you need to specify the IP address, not hostname, like this:


In Zabbix Server web interface (Configuration -> Hosts -> Create Host) the server to monitor must be named: CONFIGNAME - NODENAME

CONFIGNAME is the base name of the main config file (yate, yate-ucn, yate-hss, etc.) and NODENAME is the configured node or machine name (localhost, myserver.dom.ain, etc.)

Example: yate-ucn -

Load/Enable zabbix module

Check what equipments will be monitored by Zabbix:

[root@core-net yate]# cd /etc/yate/
[root@core-net yate]# grep -r zabbix
[root@core-net yate]# 
[root@core-net yate]# cat ucn/ext-custom.conf 
[root@core-net yate]#

After you add zabbix in scripts section of ext-custom.conf file, restart the service and module will be automatically loaded.

Or you can connect on each equipment/product to rmanager console and load zabbix.php external module.

To load zabbix.php module: type in the rmanager console: external start zabbix.php ZABBIX-SERVER-IP-ADDRESS

[root@core-net yate]# telnet 0 5039
Connected to 0.
Escape character is '^]'.
YateUCN (backend YATE 6.0.1-priv1) ready on node core-net.
yate-ucn@core-net> external start zabbix.php

You can find rmanager ports for each equipment like this:

[root@core-net yate]# grep -r port |grep rmanager
rmanager.conf:; port: int: TCP Port to listen on, 0 to disable the listener
[root@core-net yate]#

Monitoring Templates

A template is a set of entities (items, triggers, graphs, applications, screens, low-level discovery rules, web scenarios) that can be conveniently applied to multiple hosts.

All item names are of the form yate.SECTION.KEY with the same structure as query_stats response in the Yate's JSON API.

All Yate Templates can be downloaded from Zabbix Yate Templates page.

Main Yate templates are listed below, each template includes additional templates (as linked templates)

Template YateDRA
Template YateHSS
Template YateSDR
Template YateSMSC
Template YateSTP
Template YateUCN
Template YateUSGW

Linked templates:

Template Yate - Diameter
Template Yate - Engine
Template Yate - GTP
Template Yate - S1AP
Template Yate - SS7
Template Yate - Voice

Note: These linked templates, (containing a dash in their name) it is not normal to be used directly, because they are already included in each Yate Template.

More informations regarding templates can be found on Zabbix Documentation Templates section

Custom Items

You can add custom parametrized items in Zabbix like : Yate UCN MySQL Database Queries ( key: yate.sqlitedb[ucn] ), Yate UCN WLAN MAP details ( yate.camel_map[wlan] ), Yate UCN MSC MAP details ( yate.camel_map[map_msc] )

  • Parametrized items can be found from:
    • Local Management Interface (LMI): Status -> (check Additional details) and click Refresh
    • Mobile Management Interface (MMI): Equipment -> Click [+] Control node of a selected equipment -> Status -> (check Additional details) and click Refresh

Parametrized items are easy to spot because they have square braces around them. ( key: yate.sqlitedb[ucn] )


Some parametrized items return a pipe separated set of values as a longer single string. The description of each part is not available in the graphical user interface but can be retrieved from CLI:

yate-hss@core-net> status mysqldb

For example yate.mysqldb[hss] may return something like 3618199|0|0|1 which means 3.6 million queries, none failed, none returned errors, one millisecond average execution time.

To retrieve just one subparameter value add a pipe character and the parameter position inside the square braces of the item name.

In the case above yate.mysqldb[hss|1] (that is, subparameter #1) would return 3618199 which can be handled as number in Zabbix.


While items are used to gather data, triggers on the other hand define a threshold of what state of data is "acceptable".

If the incoming data is not in the acceptable state, a trigger is "fired".

It is possible to set alarm triggers in Zabbix and configure an alarm delivery method (e-mail, SMS, custom script).

Assign templates to a host

In order to assign a template to a host, first you must add a host from Configuration -> Hosts -> Create Host (top-right corner)

  • Host tab
    • Host Name: yate-ucn - core-devel (product-name - hostname)
    • Visible name:
    • Groups: You can group hosts as "Core servers" or "Network servers"
    • Agent interface: port 10050 (IP address of the server, where service is running)
  • Templates tab
    • Link new templates: search the template name (in the earlier example 'yate-ucn' search for Template YateUCN) then click Add under "type here to search".
    • Click Add button