{"id":31913,"date":"2024-10-14T18:02:17","date_gmt":"2024-10-14T15:02:17","guid":{"rendered":"https:\/\/trueconf.com/blog\/?p=31913"},"modified":"2025-04-10T12:45:02","modified_gmt":"2025-04-10T09:45:02","slug":"monitoring-trueconf-server-with-zabbix","status":"publish","type":"post","link":"https:\/\/trueconf.com/blog\/knowledge-base\/monitoring-trueconf-server-with-zabbix","title":{"rendered":"Monitoring TrueConf Server with Zabbix"},"content":{"rendered":"<p>Monitoring of corporate servers is a convenient way to track performance and detect faults.<\/p>\n<p>In this article, we will show how the monitoring system of TrueConf Server works by integrating Zabbix. Here, we will monitor the performance of the machine where TrueConf Server is installed, get necessary information about conferences, and send notifications via a Telegram bot. Components:<\/p>\n<ul>\n<li>TrueConf Server (the system to be monitored);<\/li>\n<li>Zabbix (monitoring tool).<\/li>\n<\/ul>\n<p><!--more--><\/p>\n<p>The monitoring workflow is as follows:<\/p>\n<p><a href=\"https:\/\/trueconf.com\/blog\/wp-content\/uploads\/2024\/10\/shema-zabbix.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.com\/blog\/wp-content\/uploads\/2024\/10\/shema-zabbix.png\" alt=\"\" width=\"4619\" height=\"2311\" class=\"aligncenter size-full wp-image-32029\" loading=\"lazy\" title=\"\" srcset=\"https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/shema-zabbix.png 4619w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/shema-zabbix-690x345.png 690w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/shema-zabbix-1024x512.png 1024w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/shema-zabbix-768x384.png 768w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/shema-zabbix-1536x768.png 1536w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/shema-zabbix-2048x1025.png 2048w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/shema-zabbix-404x202.png 404w\" sizes=\"auto, (max-width: 4619px) 100vw, 4619px\" \/><\/a><\/p>\n<h2>Description of Zabbix and TrueConf API features<\/h2>\n<p>Zabbix is a system for monitoring the statuses of various computer network services, servers, network equipment, and other system nodes. Zabbix makes it possible to track the operational state of various components, such as:<\/p>\n<ul>\n<li>Networks;<\/li>\n<li>Servers;<\/li>\n<li>Cloud resources;<\/li>\n<li>Applications;<\/li>\n<li>Services.<\/li>\n<\/ul>\n<p>This solution is popular among system administrators because of its flexible configuration and scalability which supports monitoring of various systems (from &#8220;smart homes&#8221; to corporate environments). Zabbix ensures the reliability and security of confidential information by encrypting traffic.<\/p>\n<p>A critical feature of this solution is the ability to interact with third-party APIs, in our case with <a href=\"https:\/\/developers.trueconf.com\/api\/server\/\" target=\"_blank\" rel=\"noopener\">TrueConf API<\/a>. It will allow you to extract and process data from selected services at the software level.<\/p>\n<p>TrueConf Server provides a RESTful API. With its help, you can manage many parameters of the video conferencing server and retrieve various data. You can learn more about TrueConf Server API in the <a href=\"https:\/\/trueconf.com\/blog\/knowledge-base\" target=\"_blank\" rel=\"noopener\">TrueConf knowledge base<\/a>.<\/p>\n<h2>Integration setup for TrueConf Server API and Zabbix<\/h2>\n<p>As an example, let us consider the system consisting of two different servers: the first one where TrueConf Server is installed and the other one with Zabbix. Please note that both solutions can be installed on a virtual machine. The following data will be sent from TrueConf Server to Zabbix::<\/p>\n<ul>\n<li>Server status;<\/li>\n<li>Number of ongoing conferences;<\/li>\n<li>Number of participants in all ongoing conferences.<\/li>\n<\/ul>\n<p>When reading data about conferences in the TrueConf Server control panel, please keep in mind that:<\/p>\n<ul>\n<li>If the value in the <b>Participants<\/b> column is set to <b>0<\/b>, the conference started but no one joined it. The conference ends automatically after 100 seconds.<\/li>\n<li>If there is at least one participant in the conference and all other participants have already left, the conference will end immediately after the last participant leaves.<\/li>\n<li>If the conference is active, the <b>End<\/b> field remains empty.<\/li>\n<\/ul>\n<h3>TrueConf Server configuration<\/h3>\n<p>To ensure correct integration, one has to configure all components properly. Let us start with TrueConf Server. You can learn more about its installation in the <a href=\"https:\/\/trueconf.com\/docs\/server\/en\/\" target=\"_blank\" rel=\"noopener\">documentation<\/a>. TrueConf Server API will be used to implement interaction with Zabbix.<\/p>\n<p>This setup implements RESTful API architecture, and is based on HTTP requests, GET, POST, PUT, and DELETE. The server returns responses in the JSON format.<\/p>\n<p>First, we will need to configure HTTPS in the server control panel in the <strong>Web \u2192 HTTPS<\/strong> section. On the opened page, set the required parameters in the <strong>HTTPS Configuration<\/strong> block. We recommend using a commercial certificate, such as <a href=\"https:\/\/trueconf.com\/blog\/knowledge-base\/how-to-create-a-lets-encrypt-certificate-on-windows.html\" target=\"_blank\" rel=\"noopener\">Let&#8217;s Encrypt<\/a>, but self-signed certificates are also allowed.<\/p>\n<p><a href=\"https:\/\/trueconf.com\/blog\/wp-content\/uploads\/2024\/10\/vvsvysysvf.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.com\/blog\/wp-content\/uploads\/2024\/10\/vvsvysysvf.png\" alt=\"\" width=\"1490\" height=\"264\" class=\"aligncenter size-full wp-image-32034\" loading=\"lazy\" title=\"\" srcset=\"https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/vvsvysysvf.png 1490w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/vvsvysysvf-690x122.png 690w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/vvsvysysvf-1024x181.png 1024w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/vvsvysysvf-768x136.png 768w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/vvsvysysvf-453x80.png 453w\" sizes=\"auto, (max-width: 1490px) 100vw, 1490px\" \/><\/a><\/p>\n<h3>Downloading and configuration of Zabbix<\/h3>\n<p>At this stage, you need to configure Zabbix. This component consists of two parts, the client (which collects data and sends it to the server) and the server (which combines data from all clients into an easily analyzable format). So, we will discuss them separately.<\/p>\n<p>For the server part of Zabbix (Zabbix Appliance), you need to choose a suitable deployment option: installation is available on multiple Linux-based operating systems with the help of ready-made images for various hypervisors (KVM, Qemu, Hyper-V, etc.), and as a Docker container. Go to the <a href=\"https:\/\/www.zabbix.com\/download\" target=\"_blank\" rel=\"noopener\">download page<\/a>, choose your option, and follow the instructions for it. For testing purposes, we downloaded the file in the OVF format and deployed the solution in VirtualBox.<\/p>\n<p>When launched, the virtual machine with Zabbix Appliance is started in terminal mode, which is the primary way to interact directly with the server. The web interface is also available and we will use it to configure monitoring of TrueConf Server.<\/p>\n<p>The terminal will request credentials needed for authorization on Zabbix Appliance. Enter the following default credentials:<\/p>\n<ul>\n<li>Login \u2014 <b>root<\/b>;<\/li>\n<li>Password \u2014 <b>zabbix<\/b>.<\/li>\n<\/ul>\n<p>To enhance security, change your password with this command:<\/p>\n<p><code>passwd (username)<\/code><\/p>\n<p>To access the Zabbix Appliance web interface, you need to learn the IP address of the machine. To do it, run the command:<\/p>\n<p><code>ip -c a<\/code><\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/06\/image50-1.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/06\/image50-1-638x470.png\" alt=\"\" width=\"638\" height=\"470\" class=\"aligncenter size-large wp-image-55414\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>Use the address that you have found to access the Zabbix control panel.<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image38.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image38.png\" alt=\"\" width=\"322\" height=\"329\" class=\"aligncenter size-full wp-image-53297\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>Log in to the web interface with a different username and password. We received them in the section <strong>Zabbix frontend credentials<\/strong> after starting the server in the terminal. To log in, enter:<\/p>\n<ul>\n<li><strong>Username<\/strong> \u2014 <b>Admin<\/b>;<\/li>\n<li><strong>Password<\/strong> \u2014 <b>zabbix<\/b>.<\/li>\n<\/ul>\n<p>After logging in to the web interface, you will see the dashboard that will include all the necessary information. You can modify and configure widgets for specific tasks.<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image53.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image53-690x357.png\" alt=\"\" width=\"690\" height=\"357\" class=\"aligncenter size-large wp-image-53312\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<h2>Downloading and configuration of the Zabbix Agent<\/h2>\n<p>The Zabbix Agent is required for integration to work. It allows the server to receive data from the entity which is monitored. Installation of the Zabbix Agent is similar to the Zabbix Appliance: download the appropriate version from the<br \/>\n<a href=\"https:\/\/www.zabbix.com\/download_agents\" target=\"_blank\" rel=\"noopener\">agent download page<\/a> and follow the installer instructions.<\/p>\n<p>After installing Zabbix Agent, you need to check if it is working correctly. To do it, go to the Zabbix Appliance terminal and run the following command to connect via <a href=\"https:\/\/www.geeksforgeeks.org\/introduction-to-telnet\/\" target=\"_blank\" rel=\"noopener\">TELNET<\/a> protocol with the command:<\/p>\n<pre class=\"lang:default decode:true \" >telnet agent_ip port<\/pre>\n<p>where:<\/p>\n<ul>\n<li><code>agent_ip<\/code> \u2014 the IP address of the computer where Zabbix Agent is installed;<\/li>\n<li><code>port<\/code> \u2014 the port to be listened to.<\/li>\n<\/ul>\n<h2>Monitoring<\/h2>\n<h3>Configuration of monitoring<\/h3>\n<p>To configure monitoring of any parameter with the Zabbix Agent, you need to set up the following:<\/p>\n<ul>\n<li>Host group;<\/li>\n<li>Host;<\/li>\n<li>Item.<\/li>\n<\/ul>\n<p>First, you need to create a host group, a sort of \u201cfolder\u201d for grouping hosts by purpose. To do it:<\/p>\n<ol>\n<li>Go to the section <strong>Data collection \u2192 Host groups<\/strong> in the web interface panel.<\/li>\n<li>Click the <strong>Create host group<\/strong> button. <\/li>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image40.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image40-690x146.png\" alt=\"\" width=\"690\" height=\"146\" class=\"aligncenter size-large wp-image-53299\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<li>Next, specify the group name (for example, <b>TrueConfServer_agent_group<\/b>) and click the <strong>Add<\/strong> button.<\/li>\n<\/ol>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image25.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image25-690x144.png\" alt=\"\" width=\"690\" height=\"144\" class=\"aligncenter size-large wp-image-53284\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>After creating a group of hosts, create the host itself:<\/p>\n<ol>\n<li>Go to the <strong>Data collection \u2192 Hosts<\/strong> section.<\/li>\n<li>In the opened section, click <strong>Create host<\/strong>.<\/li>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/img100.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/img100-690x97.png\" alt=\"\" width=\"690\" height=\"97\" class=\"aligncenter size-large wp-image-53634\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<li>You will see a pop-up window where one has to fill in the following fields:<\/li>\n<\/ol>\n<ul>\n<li><strong>Host name<\/strong>;<\/li>\n<li><strong>Host groups<\/strong> (select the previously created group \u2014 <b>TrueConfServer_agent_group<\/b>);<\/li>\n<li><strong>Interfaces<\/strong> (<strong>Interfaces \u2192 Add \u2192 Agent<\/strong>).<\/li>\n<\/ul>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/snimok-ekrana-2024-03-14-140639.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/snimok-ekrana-2024-03-14-140639-690x344.png\" alt=\"\" width=\"690\" height=\"344\" class=\"aligncenter size-large wp-image-53355\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>After creating the host, add a data item. In the same <strong>Hosts<\/strong> tab, at the bottom, you will see a table with a list of connections. Here, you will need to go to <strong>Items \u2192 Create item<\/strong>.<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/snimok-ekrana-2024-03-14-140534.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/snimok-ekrana-2024-03-14-140534-690x96.png\" alt=\"\" width=\"690\" height=\"96\" class=\"aligncenter size-large wp-image-53354\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>In the pop-up window, fill in the fields:<\/p>\n<ul>\n<li><strong>Name<\/strong> \u2014 <code>zabbix_agent_ping<\/code>;<\/li>\n<li><strong>Type<\/strong> \u2014 <code>Zabbix agent<\/code>;<\/li>\n<li><strong>Key<\/strong> \u2014 <code>agent.ping<\/code>;<\/li>\n<li><strong>Type of information<\/strong> \u2014 <code>Numeric (unsigned)<\/code>;<\/li>\n<li><strong>Host interface<\/strong> \u2014 <code>10.140.2.230:10050<\/code>;<\/li>\n<li><strong>Update interval<\/strong> \u2014 <code>10s<\/code>.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/snimok-ekrana-2024-03-14-140820.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/snimok-ekrana-2024-03-14-140820-497x470.png\" alt=\"\" width=\"497\" height=\"470\" class=\"aligncenter size-large wp-image-53356\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>In this case you can use the default values for other parameters. To save the item, click the <strong>Add<\/strong> button.<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/06\/image12.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/06\/image12-512x470.png\" alt=\"\" width=\"512\" height=\"470\" class=\"aligncenter size-large wp-image-55440\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>You will see the created element in the list of connections:<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image43.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image43-690x39.png\" alt=\"\" width=\"690\" height=\"39\" class=\"aligncenter size-large wp-image-53302\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>Now you can monitor the connection to the machine with TrueConf Server by using the created host. To do it, go to the <strong>Monitoring \u2192 Lastest data<\/strong> section of the panel, then select the created host <b>zabbix_agent_ping<\/b>, and click <strong>Graph<\/strong>.<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/img101.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/img101-690x175.png\" alt=\"\" width=\"690\" height=\"175\" class=\"aligncenter size-large wp-image-53635\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>In the opened tab, you will see the chart of the <b>zabbix_agent_ping<\/b> parameter:<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image64.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image64.png\" alt=\"\" width=\"399\" height=\"201\" class=\"aligncenter size-full wp-image-53323\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>The chart above shows that from 15:44 to 15:46 there was no connection with the server (ping failed).<\/p>\n<p>For more convenient data tracking, display the chart in the dashboard of the Zabbix Appliance web interface. To switch to edit mode, click on <strong>Edit dashboard<\/strong> in the upper right corner of the dashboard.<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/06\/image5-1.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/06\/image5-1-690x259.png\" alt=\"\" width=\"690\" height=\"259\" class=\"aligncenter size-large wp-image-55435\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>To add a widget:<\/p>\n<ol>\n<li>Click on the empty area in the panel, the window for adding a widget will open.<\/li>\n<li>Select the type of widget, in our case a graph (<strong>Type \u2192 Graph<\/strong>).<\/li>\n<li>Choose the necessary data for monitoring (in this example, you need to select <strong>Host \u2192 zabbix_agent_ping \u2192 Item \u2192 zabbix_agent_ping<\/strong>).<\/li>\n<\/ol>\n<p>You can adjust the widget display settings, such as the data that should be displayed, graph type, color, transparency, thickness, and others.<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/snimok-ekrana-2024-03-14-141001.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/snimok-ekrana-2024-03-14-141001-690x318.png\" alt=\"\" width=\"690\" height=\"318\" class=\"aligncenter size-large wp-image-53357\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>As a result, we can see the <b>zabbix_agent_ping<\/b>, graph, configured for convenient display on the dashboard.<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image11.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image11-690x162.png\" alt=\"\" width=\"690\" height=\"162\" class=\"aligncenter size-large wp-image-53270\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<h2>Monitoring TrueConf Server services<\/h2>\n<p>The next step is to set up monitoring of all TrueConf Server services with the help of Zabbix. For example, when installing the video conferencing server on Windows, the following services are added:<\/p>\n<ol>\n<li><b>TrueConf Server<\/b> \u2013 the main service.<\/li>\n<li><b>TrueConf Database<\/b> \u2013 responsible for the database; the operation of TrueConf Server Manager depends on this service.<\/li>\n<li><b>TrueConf Web Manager<\/b> \u2013 responsible for the operation of all web interfaces.<\/li>\n<li><b>TrueConf Server Manager<\/b> \u2013 the manager for working with the database and configuration files.<\/li>\n<li><b>TrueConf Bridge<\/b> \u2013 the service which can receive websocket commands from web applications and convert them into transport messages understandable to TrueConf Server. Additionally, it can interact with the database.<\/li>\n<\/ol>\n<p>To monitor the status of services, we will create data items again. If you intend to monitor services on Windows, it is important to specify the service name, but not the display name. The service name can be found in the properties of each service (for example, you can open the <b>Services<\/b> tool by using the command <code>services.msc<\/code>). Starting from TrueConf Server 5.4, the service name and display name are the same.<\/p>\n<p>The resulting list of services should be:<\/p>\n<ul>\n<li>TrueConf;<\/li>\n<li>TrueConf Database;<\/li>\n<li>TrueConf Web Manager;<\/li>\n<li>TrueConf Server Manager;<\/li>\n<li>TrueConf Bridge.<\/li>\n<\/ul>\n<p>The next step is to implement service monitoring. To do it, follow the example discussed previously and create a data element for each service. For this purpose create the host <b>TrueConfServer_services_monitoring_test<\/b>, and within it, create data elements. Specify the display name of each service for the sake of convenience:<\/p>\n<ul>\n<li>TrueConf Server;<\/li>\n<li>TrueConf Database;<\/li>\n<li>TrueConf Server Manager;<\/li>\n<li>TrueConf Web Manager;<\/li>\n<li>TrueConf Bridge.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/snimok-ekrana-2024-03-14-142023.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/snimok-ekrana-2024-03-14-142023-486x470.png\" alt=\"\" width=\"486\" height=\"470\" class=\"aligncenter size-large wp-image-53359\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>The data element is created just as it is shown in the example of <b>zabbix_agent_ping<\/b>, except for the Key field. In this field, we need to specify <b>service.info[service_name]<\/b>, where <b>service_name<\/b> \u2014 is the name of the service from the list above that should be monitored. As a result, the list of data items looks like this:<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/snimok-ekrana-2024-03-14-130302.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/snimok-ekrana-2024-03-14-130302-690x168.png\" alt=\"\" width=\"690\" height=\"168\" class=\"aligncenter size-large wp-image-53347\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>For easy monitoring, configure data display in the form of graphs for the created elements and add these graphs to the dashboard. As shown above for <b>zabbix_agent_ping<\/b>, to add a widget, click on the <strong>Edit dashboard<\/strong> button in the upper right corner and select <strong>Type \u2192 Graph<\/strong>. In this case, you need to specify the following parameters:<\/p>\n<ul>\n<li><strong>Host pattern<\/strong> \u2014 TrueConfServer_services_monitoring_test;<\/li>\n<li><strong>Item pattern<\/strong> \u2014 the service to be monitored.<\/li>\n<\/ul>\n<p>To display the status of TrueConf Server services on the chart, add each data element to a separate data set so that it is possible to select different colors in the chart. Configure the display settings below, click <strong>Add<\/strong>, and save your changes to the main panel by clicking <strong>Save changes<\/strong> in the upper right corner.<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/06\/image127.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/06\/image127-690x109.png\" alt=\"\" width=\"690\" height=\"109\" class=\"aligncenter size-large wp-image-56778\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>As a result, you will get the chart for monitoring selected services on the main dashboard of the Zabbix Appliance web interface:<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/06\/image53.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/06\/image53-690x247.png\" alt=\"\" width=\"690\" height=\"247\" class=\"aligncenter size-large wp-image-56782\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<h2>Checking access to the server with an HTTP request<\/h2>\n<p>Zabbix provides a ready-made component for sending HTTP requests. To monitor the server status with the help of an HTTP request, you will need to create:<\/p>\n<ul>\n<li>A host with the server&#8217;s IP and port number;<\/li>\n<li>A web scenario.<\/li>\n<\/ul>\n<p>The creation of the node is described above, here is what the result should look like:<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/snimok-ekrana-2024-03-14-133932.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/snimok-ekrana-2024-03-14-133932-690x345.png\" alt=\"\" width=\"690\" height=\"345\" class=\"aligncenter size-large wp-image-53352\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>In this case, the TrueConf Server IP address is <b>10.140.2.230<\/b>, and the port for checking the status with an HTTP request is <b>4307<\/b>. To create a web scenario:<\/p>\n<ol>\n<li>To create a web scenario <strong>Data collection \u2192 Hosts<\/strong> section.<\/li>\n<li>In the host row, click <strong>Web<\/strong>.<\/li>\n<li>Create a scenario in the <strong>Scenario<\/strong> tab by clicking on <strong>Create web scenario<\/strong>.<\/li>\n<\/ol>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image51.jpg\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image51-690x101.jpg\" alt=\"\" width=\"690\" height=\"101\" class=\"aligncenter size-large wp-image-53310\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>Fill in the fields:<\/p>\n<ul>\n<li><strong>Name<\/strong> \u2014 <code>TrueConfServer_check_avaibility<\/code>;<\/li>\n<li><strong>Update interval<\/strong> \u2014 <code>10s<\/code>;<\/li>\n<li><strong>Attempts<\/strong> \u2014 <code>1<\/code>;<\/li>\n<li><strong>Agent<\/strong> \u2014 <code>Zabbix<\/code>.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image56.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image56.png\" alt=\"\" width=\"507\" height=\"257\" class=\"aligncenter size-full wp-image-53315\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>Now you need to set the operation (called a step in the context of Zabbix) that should be performed during the scenario. For this purpose, go to the <strong>Steps<\/strong> tab and fill in the fields:<\/p>\n<ul>\n<li><strong>Name<\/strong> \u2014 <code>check_trueconfserver_avaibility<\/code>;<\/li>\n<li><strong>URL<\/strong> \u2014 <code>http:\/\/10.140.2.230:4307\/vsstatus\/<\/code>;<\/li>\n<li><strong>Timeout<\/strong> \u2014 <code>10s<\/code>;<\/li>\n<li><strong>Required status code<\/strong> \u2014 <code>200<\/code>.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image62.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image62-690x115.png\" alt=\"\" width=\"690\" height=\"115\" class=\"aligncenter size-large wp-image-53321\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image1.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image1-690x139.png\" alt=\"\" width=\"690\" height=\"139\" class=\"aligncenter size-large wp-image-53260\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>After filling out the form, click <strong>Update<\/strong> in the <strong>Steps<\/strong> tab. The configured step of the web scenario will look in this way:<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/img103.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/img103-690x192.png\" alt=\"\" width=\"690\" height=\"192\" class=\"aligncenter size-large wp-image-53639\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>To save the scenario, click the <strong>Update<\/strong> button in the <strong>Scenario<\/strong>.<br \/>\nHere is the complete web scenario:<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image36.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image36-690x97.png\" alt=\"\" width=\"690\" height=\"97\" class=\"aligncenter size-large wp-image-53295\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>To test the created scenario:<\/p>\n<ol>\n<li>Go to the <strong>Monitoring \u2192 Hosts<\/strong> section in the sidebar.<\/li>\n<li>Click <strong>Web<\/strong> in the <b>TrueConfServer_host_test<\/b> row.<\/li>\n<\/ol>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/img104.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/img104-690x97.png\" alt=\"\" width=\"690\" height=\"97\" class=\"aligncenter size-large wp-image-53640\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>The table shows that everything is correct which means that the HTTP request is successfully processed:<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/img105.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/img105-690x95.png\" alt=\"\" width=\"690\" height=\"95\" class=\"aligncenter size-large wp-image-53641\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>For more detailed information, go to the web scenario by clicking on <b>check_TrueConfServer_avaibility<\/b>. The following graph will open:<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image28.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image28-690x361.png\" alt=\"\" width=\"690\" height=\"361\" class=\"aligncenter size-large wp-image-53287\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>For more convenient monitoring, add the widget to the main screen as shown previously. In the settings, specify the following parameters:<\/p>\n<ul>\n<li><strong>Type<\/strong> \u2014 Graph;<\/li>\n<li><strong>Data set<\/strong> \u2014 Add new data set;<\/li>\n<li><strong>host pattern<\/strong> \u2192 <strong>Select<\/strong> \u2014 TrueConfServer_host_test;<\/li>\n<li><strong>item pattern<\/strong> \u2192 <strong>Select<\/strong> \u2014 choose the data you need.<\/li>\n<\/ul>\n<p>Next, click the <strong>Add<\/strong> and <strong>Save changes<\/strong> buttons.<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/06\/image39.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/06\/image39-690x407.png\" alt=\"\" width=\"690\" height=\"407\" class=\"aligncenter size-large wp-image-56786\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<h2>Zabbix and TrueConf Server API<\/h2>\n<p>Now let us configure the settings that will enable us to get the number of ongoing conferences and their participants via TrueConf Server API. To do it, we need to create a host, retrieve the JSON data with an HTTP request, convert this data into a readable format, and display it on the main dashboard. <\/p>\n<p>You should start by creating a host, as shown earlier. Create a data item (<strong>HTTP agent<\/strong>), and form the HTTP request according to the <a href=\"https:\/\/developers.trueconf.com\/api\/server\/\" target=\"_blank\" rel=\"noopener\">TrueConf Server API documentation<\/a>.<\/p>\n<p>Use the <a href=\"https:\/\/developers.trueconf.com\/api\/server\/#api-Logs-GetCallList\" target=\"_blank\" rel=\"noopener\">Get Call List<\/a> request to receive the list of video conferencing sessions:<\/p>\n<pre class=\"lang:default decode:true \" >https:\/\/{{$server_name}}\/api\/v3.7\/logs\/calls?access_token={{$access_token}}<\/pre>\n<p>where:<\/p>\n<ul>\n<li><code>{{$server_name}} \u2014 the address of the TrueConf Server<\/code>;<\/li>\n<li><code>{{$access_token}} \u2014 the TrueConf Server token<\/code>.<\/li>\n<\/ul>\n<p>For example:<\/p>\n<pre class=\"lang:default decode:true \" >https:\/\/10.140.2.230:10066\/api\/v3.7\/logs\/calls?access_token=5halVyMDtoT1aoqhOGTDLyERXTN0uRQk<\/pre>\n<p>As a result, you will get this <b>HTTP agent<\/b>:<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image10.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image10-690x198.png\" alt=\"\" width=\"690\" height=\"198\" class=\"aligncenter size-large wp-image-53269\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>The list will include both ongoing and completed video conferencing sessions (see the <code>end_time<\/code> parameter). Please note that the list will include all types of sessions, both one-on-one calls and group conferences. They differ by the value of the <code>class<\/code> parameter: for calls, it equals 1. So, to select only conferences, you need to use this condition <code>class != 1<\/code> to filter the list. To do it:<\/p>\n<ol>\n<li>Go to the <strong>Preprocessing<\/strong> tab.<\/li>\n<li>In the <strong>Preprocessing steps<\/strong> block, click <strong>Add<\/strong>.<\/li>\n<li>In the first step, specify the following parameters:<\/li>\n<ul>\n<li><strong>Name : Replace<\/strong><\/li>\n<li><strong>parameters : <\/strong><code>null \u2192 \u201cnull\u201d<\/code><\/li>\n<\/ul>\n<li>In the second step, specify the following parameters:<\/li>\n<ul>\n<li><strong>Name : JSONPath;<\/strong><\/li>\n<li><strong>parameters : <\/strong><\/li>\n<\/ul>\n<pre class=\"lang:default decode:true \" >$.list[?(@.end_time == 'null' &amp;&amp; @.class != 1)].end_time.length()<\/pre>\n<\/ol>\n<p>This expression is formed according to the official <a href=\"https:\/\/www.zabbix.com\/documentation\/current\/en\/manual\/config\/items\/preprocessing\/jsonpath_functionality\" target=\"_blank\" rel=\"noopener\">Zabbix JSONPath functionality guide<\/a>.<\/p>\n<p><a href=\"https:\/\/trueconf.com\/blog\/wp-content\/uploads\/2024\/10\/snimok-ekrana-2025-04-09-124011.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.com\/blog\/wp-content\/uploads\/2024\/10\/snimok-ekrana-2025-04-09-124011.png\" alt=\"\" width=\"1042\" height=\"302\" class=\"aligncenter size-full wp-image-34687\" loading=\"lazy\" title=\"\" srcset=\"https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/snimok-ekrana-2025-04-09-124011.png 1042w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/snimok-ekrana-2025-04-09-124011-690x200.png 690w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/snimok-ekrana-2025-04-09-124011-1024x297.png 1024w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/snimok-ekrana-2025-04-09-124011-768x223.png 768w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/snimok-ekrana-2025-04-09-124011-453x131.png 453w\" sizes=\"auto, (max-width: 1042px) 100vw, 1042px\" \/><\/a><\/p>\n<p>As a result, we get a configured data item that returns the number of active conferences.<\/p>\n<p>You can create a data item that returns the number of participants in active conferences in a similar way (don\u2019t forget about the first conversion step: <code>null \u2192 \u201cnull\u201d<\/code>). The resulting expression is as follows:<\/p>\n<pre class=\"lang:default decode:true \" >$.list[?(@.end_time == 'null' && @.class != 1)].participant_count.sum()<\/pre>\n<p>Please note that if there are no participants in the conferences, an incorrect value will be displayed on the main panel. To fix this problem, select the option <strong>Set value to<\/strong> in the <strong>Custom on fail<\/strong> block and enter your explanatory text, such as &#8220;<strong>No participants<\/strong>\u201d.<\/p>\n<p><a href=\"https:\/\/trueconf.com\/blog\/wp-content\/uploads\/2024\/10\/snimok-ekrana-2025-04-09-125306.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.com\/blog\/wp-content\/uploads\/2024\/10\/snimok-ekrana-2025-04-09-125306.png\" alt=\"\" width=\"1042\" height=\"345\" class=\"aligncenter size-full wp-image-34688\" loading=\"lazy\" title=\"\" srcset=\"https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/snimok-ekrana-2025-04-09-125306.png 1042w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/snimok-ekrana-2025-04-09-125306-690x228.png 690w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/snimok-ekrana-2025-04-09-125306-1024x339.png 1024w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/snimok-ekrana-2025-04-09-125306-768x254.png 768w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/snimok-ekrana-2025-04-09-125306-453x150.png 453w\" sizes=\"auto, (max-width: 1042px) 100vw, 1042px\" \/><\/a><\/p>\n<p>As a result, we will get two data items that process the JSON response received via the API and return the number of active conferences and participants in them.<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/06\/image22.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/06\/image22-690x61.png\" alt=\"\" width=\"690\" height=\"61\" class=\"aligncenter size-large wp-image-56770\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<h3>API request verification <\/h3>\n<p>Before testing, you should verify the data returned by the API request. To do it, execute this request in the browser:<\/p>\n<pre class=\"lang:default decode:true \" >https:\/\/10.140.2.230:10066\/api\/v3.7\/logs\/calls access_token=5halVyMDtoT1aoqhOGTDLyERXTN0uRQk<\/pre>\n<p>where:<\/p>\n<ul>\n<li><code>10.140.2.230:10066<\/code> \u2014 TrueConf Server IP address;<\/li>\n<li><code>5halVyMDtoT1aoqhOGTDLyERXTN0uRQk<\/code> \u2014 TrueConf Server API token.<\/li>\n<\/ul>\n<p>Here is an example of the JSON data that you may receive: <\/p>\n<pre class=\"lang:default decode:true \" > \"cnt\": 8,\r\n    \"list\": [\r\n        {\r\n            \"conference_id\": \"00000015074db9fe@testserver1.trueconf#vcs\",\r\n            \"named_conf_id\": \"906277858941\",\r\n            \"topic\": null,\r\n            \"class\": 1,\r\n            \"type\": 0,\r\n            \"subtype\": 0,\r\n            \"owner\": \"testuser4.roman@testserver1.trueconf\",\r\n            \"participant_count\": 2,\r\n            \"start_time\": {\r\n                \"date\": \"2024-03-07 08:57:59.000000\",\r\n                \"timezone_type\": 3,\r\n                \"timezone\": \"Europe\/London\"\r\n            },\r\n            \"duration\": 12,\r\n            \"end_time\": {\r\n                \"date\": \"2024-03-07 08:58:11.000000\",\r\n                \"timezone_type\": 3,\r\n                \"timezone\": \"Europe\/London\"\r\n            }\r\n        }<\/pre>\n<p>We will need to find required parameters for every conference (list object) in the JSON data:<\/p>\n<ul>\n<li><code>\u201cend_time\u201d: null<\/code> \u2014 the end time of the conference. An empty value means that the conference is still active. We are interested only in such conferences, and their number should be counted;<\/li>\n<li><code>\u201cclass\u201d: 10<\/code> \u2014 a conference type. We will need to check if this value is not equal to 1 (it is necessary to select all types except one-on-one calls);<\/li>\n<li><code>\u201cparticipant_count\u201d<\/code> \u2014 the number of participants in each conference that meets condition 1.<\/li>\n<\/ul>\n<p>In the TrueConf Server control panel, you can also track active sessions for conferences and check the number of participants in them. To do it, go to the <strong>Reports \u2192 Call History<\/strong> section and check the rows where the value in the <strong>Mode<\/strong> column differs from a video call.<\/p>\n<p><a href=\"https:\/\/trueconf.com\/blog\/wp-content\/uploads\/2024\/10\/vdbfghgsg.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.com\/blog\/wp-content\/uploads\/2024\/10\/vdbfghgsg.png\" alt=\"\" width=\"1572\" height=\"375\" class=\"aligncenter size-full wp-image-32039\" loading=\"lazy\" title=\"\" srcset=\"https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/vdbfghgsg.png 1572w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/vdbfghgsg-690x165.png 690w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/vdbfghgsg-1024x244.png 1024w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/vdbfghgsg-768x183.png 768w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/vdbfghgsg-1536x366.png 1536w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/vdbfghgsg-453x108.png 453w\" sizes=\"auto, (max-width: 1572px) 100vw, 1572px\" \/><\/a><\/p>\n<p>Based on previous examples, we create widgets to display <b>items<\/b> in the main panel. The result should look like this:<\/p>\n<p><a href=\"https:\/\/trueconf.com\/blog\/wp-content\/uploads\/2024\/10\/image55-2.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.com\/blog\/wp-content\/uploads\/2024\/10\/image55-2.png\" alt=\"\" width=\"1237\" height=\"439\" class=\"aligncenter size-full wp-image-32170\" loading=\"lazy\" title=\"\" srcset=\"https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/image55-2.png 1237w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/image55-2-690x245.png 690w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/image55-2-1024x363.png 1024w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/image55-2-768x273.png 768w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/image55-2-453x161.png 453w\" sizes=\"auto, (max-width: 1237px) 100vw, 1237px\" \/><\/a><\/p>\n<p>The information which is displayed when making a request in the browser matches the information in TrueConf Server, and on the main panel of the Zabbix Appliance web interface. This means that monitoring is working correctly.<\/p>\n<h2>Notifications from the Telegram bot<\/h2>\n<p>Next, we need to configure the Telegram bot to receive notifications from Zabbix. For this method to work, one has to have a bot token and ID of the user or group that will receive notifications. The Zabbix Agent collects data about the TrueConf Server services, sends it through the specified host (IP address, port) to the Zabbix Appliance. If any of the triggers configured in Zabbix are activated, notifications will be sent via Telegram.<\/p>\n<h3>Creating a Telegram bot<\/h3>\n<p>Start by creating a bot:<\/p>\n<ol>\n<li>Find the user <b>BotFather<\/b> on Telegram and click the <strong>Start<\/strong> button in the chat or type the command <code>\/start<\/code>.<\/li>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/06\/image26-1.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/06\/image26-1-494x470.png\" alt=\"\" width=\"494\" height=\"470\" class=\"aligncenter size-large wp-image-55415\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<li>Next, send the command <code>\/newbot<\/code>.<\/li>\n<li>Come up with a username for the bot so that it can be easily found in the chat list.<\/li>\n<li>The bot will reply with a message containing a token needed for managing the Telegram bot.<\/li>\n<\/ol>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image15.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image15.png\" alt=\"\" width=\"415\" height=\"314\" class=\"aligncenter size-full wp-image-53274\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>After creating the bot, check the ID of the user or group to which notifications should be sent. In this example, we will show how notifications can be sent to our Telegram account. To do it, we need to check our ID with the help of the bot. Find the bot ID by typing &#8220;ID bot&#8221; in the search field, then send the <code>\/start<\/code> command to the bot.<\/p>\n<p><a href=\"https:\/\/trueconf.com\/blog\/wp-content\/uploads\/2024\/10\/image64-2.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.com\/blog\/wp-content\/uploads\/2024\/10\/image64-2.png\" alt=\"\" width=\"503\" height=\"101\" class=\"aligncenter size-full wp-image-32168\" loading=\"lazy\" title=\"\" srcset=\"https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/image64-2.png 503w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/image64-2-453x91.png 453w\" sizes=\"auto, (max-width: 503px) 100vw, 503px\" \/><\/a><\/p>\n<p>The bot will reply with a message that will include our ID.<\/p>\n<h3>Integration of Telegram with Zabbix Appliance<\/h3>\n<p>Now let us set up integration with Telegram:<\/p>\n<ol>\n<li>In the Zabbix Appliance web interface, go to the <strong>Alerts \u2192 Media types<\/strong> section.<\/li>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image13.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image13.png\" alt=\"\" width=\"174\" height=\"132\" class=\"aligncenter size-full wp-image-53272\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<li>A table will open, find <strong>Telegram<\/strong> in it, and click the <strong>Disabled<\/strong> link to enable this notification method. The link text should change to <strong>Enabled<\/strong>.<\/li>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image23.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image23-690x214.png\" alt=\"\" width=\"690\" height=\"214\" class=\"aligncenter size-large wp-image-53282\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<li>Next, click on <strong>Telegram<\/strong> to go to the settings of this notification type, and specify the following parameters <\/li>\n<ul>\n<li><strong>Name<\/strong> \u2014 Telegram;<\/li>\n<li><strong>Type<\/strong> \u2014 Webhook;<\/li>\n<li><strong>Message<\/strong> \u2014 {ALERT.MESSAGE};<\/li>\n<li><strong>Subject<\/strong> \u2014 {ALERT.SUBJECT};<\/li>\n<li><strong>To<\/strong> \u2014 ID \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u0433\u0440\u0443\u043f\u043f\u044b;<\/li>\n<li><strong>Token<\/strong> \u2014 \u0442\u043e\u043a\u0435\u043d \u0431\u043e\u0442\u0430 Telegram.<\/li>\n<\/ul>\n<li>After setting the parameters, click <strong>Update<\/strong> to apply changes.<\/li>\n<\/ol>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image26.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image26-425x470.png\" alt=\"\" width=\"425\" height=\"470\" class=\"aligncenter size-large wp-image-53285\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>Right after applying changes, check if notifications work correctly by clicking the <strong>Telegram<\/strong> button in the <strong>Test<\/strong> row.<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image63.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image63.png\" alt=\"\" width=\"665\" height=\"405\" class=\"aligncenter size-full wp-image-53322\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>Fill in the fields:<\/p>\n<ul>\n<li><strong>Message<\/strong> \u2014 message text;<\/li>\n<li><strong>Parse mode<\/strong> \u2014 can be left empty;<\/li>\n<li><strong>Subject<\/strong> \u2014 subject (which component is being discussed, host, service, etc.);<\/li>\n<li><strong>To<\/strong> \u2014 recipient, specify the user or group ID;<\/li>\n<li><strong>Token<\/strong> \u2014 bot token.<\/li>\n<\/ul>\n<p>After filling out the form, click the <strong>Test<\/strong> button, and the <strong>Response<\/strong> field will display the test result (error or OK).<\/p>\n<p><a href=\"https:\/\/trueconf.com\/blog\/wp-content\/uploads\/2024\/10\/image50-2.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.com\/blog\/wp-content\/uploads\/2024\/10\/image50-2.png\" alt=\"\" width=\"960\" height=\"584\" class=\"aligncenter size-full wp-image-32166\" loading=\"lazy\" title=\"\" srcset=\"https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/image50-2.png 960w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/image50-2-690x420.png 690w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/image50-2-768x467.png 768w, https:\/\/trueconf.com/blog\/wp-content\/uploads\/2024\/10\/image50-2-332x202.png 332w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/a><\/p>\n<p>If everything is set up correctly, you will receive a message from the bot in Telegram.<br \/>\nAll that remains is to set up the sending of all the metrics mentioned above via the Telegram bot. To do it:<\/p>\n<ol>\n<li>Go to <strong>Users \u2192 Users<\/strong> on the sidebar panel.<\/li>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image19.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image19.png\" alt=\"\" width=\"177\" height=\"238\" class=\"aligncenter size-full wp-image-53278\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<li>Click on the <strong>Admin<\/strong> user.<\/li>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image14.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image14-690x72.png\" alt=\"\" width=\"690\" height=\"72\" class=\"aligncenter size-large wp-image-53273\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image16.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image16-690x174.png\" alt=\"\" width=\"690\" height=\"174\" class=\"aligncenter size-large wp-image-53275\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<li>Go to the <strong>Media<\/strong> tab and click <strong>Add<\/strong>.<\/li>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image61.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image61.png\" alt=\"\" width=\"668\" height=\"390\" class=\"aligncenter size-full wp-image-53320\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<li>Fill in the fields in the pop-up window:<\/li>\n<ul>\n<li><strong>Type<\/strong> \u2014 Telegram;<\/li>\n<li><strong>Send to<\/strong> \u2014 (User\/Group Telegram ID);<\/li>\n<li><strong>When active<\/strong> \u2014 the time when this notification method should be active;<\/li>\n<li><strong>Use if severity<\/strong> \u2014 the importance of the notification. Set the severity level depending on your case: from a simple notification (Information) to an alert about a serious issue (High, Disaster).<\/li>\n<\/ul>\n<li>After filling in all the fields, click <strong>Add<\/strong> and then <strong>Update<\/strong>.<\/li>\n<\/ol>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image42.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image42-690x200.png\" alt=\"\" width=\"690\" height=\"200\" class=\"aligncenter size-large wp-image-53301\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>The final step of setting up the notification system. You need to configure triggers that will respond to changes in the state of selected data items:<\/p>\n<ol>\n<li>Click <strong>Data collection \u2192 Hosts<\/strong> in the sidebar.<\/li>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image30.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image30.png\" alt=\"\" width=\"174\" height=\"253\" class=\"aligncenter size-full wp-image-53289\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<li>Click <b>TrueConfServer_services_monitoring_test<\/b> In the row <strong>Triggers<\/strong>.<\/li>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/img102.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/img102-690x151.png\" alt=\"\" width=\"690\" height=\"151\" class=\"aligncenter size-large wp-image-53637\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<li>In the opened tab, click <strong>Create trigger<\/strong>.<\/li>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image37.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image37-690x168.png\" alt=\"\" width=\"690\" height=\"168\" class=\"aligncenter size-large wp-image-53296\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<li>Set the parameters in the trigger pop-up window:<\/li>\n<ul>\n<li><strong>Name<\/strong> \u2014 TrueConf Server;<\/li>\n<li><strong>Event name<\/strong> \u2014 (Automatically filled after the Name field);<\/li>\n<li><strong>Severity<\/strong> \u2014 Warning;<\/li>\n<li><strong>Expression<\/strong> \u2014 Add.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image47.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image47-690x376.png\" alt=\"\" width=\"690\" height=\"376\" class=\"aligncenter size-large wp-image-53306\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<li>Fill the fields in the <strong>Condition<\/strong> window:<\/li>\n<ul>\n<li><strong>Item \u2192 Select<\/strong> \u2014 TrueConf Server;<\/li>\n<li><strong>Function<\/strong> \u2014 <\/code>last() &#8211; Last (most recent) T value<\/code>;<\/li>\n<li><strong>Result<\/strong> \u2014 6 (in our case 6, this code is returned by the function <code>service.info[service_name]<\/code> if the service is stopped).<\/li>\n<\/ul>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image57.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image57-690x201.png\" alt=\"\" width=\"690\" height=\"201\" class=\"aligncenter size-large wp-image-53316\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<li>After filling in the fields, click <strong>Insert<\/strong>, the expression will be: <code>last(\/TrueConfServer_services_monitoring_test\/service.info[TrueConf])=6<\/code>.<\/li>\n<li>When all fields are filled, click <strong>Add<\/strong>.<\/li>\n<\/ol>\n<p>Create triggers for other TrueConf Server services by following the same principle. As a result, you will get the list of triggers:<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image37.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image37-690x168.png\" alt=\"\" width=\"690\" height=\"168\" class=\"aligncenter size-large wp-image-53296\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>Next, it is necessary to create a trigger action. To do it:<\/p>\n<ol>\n<li>Go to <strong>Alerts \u2192 Actions \u2192 Trigger actions<\/strong> in the panel.<\/li>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image12.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image12.png\" alt=\"\" width=\"339\" height=\"171\" class=\"aligncenter size-full wp-image-53271\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<li>Click the <strong>Create action<\/strong> button to create a trigger action:<\/li>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image45.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image45-690x248.png\" alt=\"\" width=\"690\" height=\"248\" class=\"aligncenter size-large wp-image-53304\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<li>Fill in the fields In the <strong>New action<\/strong> pop-up:<\/li>\n<ul>\n<li><strong>Name<\/strong> \u2014 the name of the trigger action;<\/li>\n<li><strong>Type of calculation<\/strong> \u2014 And (the trigger will be activated only if all conditions are met at the same time);<\/li>\n<li><strong>Conditions<\/strong> \u2014 create 3 conditions:<\/li>\n<ul>\n<li><b>Host equals TrueConfServer_services_monitoring_test<\/b> (Connection used for monitoring);<\/li>\n<li><b>Trigger equals TrueConfServer_services_monitoring_test: TrueConf Web Manager<\/b> (Trigger: TrueConf Server service);<\/li>\n<li><b>Trigger severity equals Warning<\/b> (Trigger importance).<\/li>\n<\/ul>\n<\/ul>\n<li>Status \u2014 <strong>Enabled<\/strong>.<\/li>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image27.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image27-690x284.png\" alt=\"\" width=\"690\" height=\"284\" class=\"aligncenter size-large wp-image-53286\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<li>Next, go to the <strong>Operations<\/strong> tab, where one has to configure the actions that should be performed when the trigger is activated:<\/li>\n<ul>\n<li><strong>Operation<\/strong> (actions that should be performed when the trigger is activated);<\/li>\n<li><strong>Recovery operation<\/strong> (actions upon recovery);<\/li>\n<li><strong>Update operation<\/strong> (actions upon update).<\/li>\n<\/ul>\n<li>Click <strong>Add<\/strong> to add an action.<\/li>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image5.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image5-561x470.png\" alt=\"\" width=\"561\" height=\"470\" class=\"aligncenter size-large wp-image-53264\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<li>Fill in the fields in the <strong>Operation details<\/strong> window:<\/li>\n<ul>\n<li><strong>Send to users<\/strong> \u2014 Admin;<\/li>\n<li><strong>Send only to<\/strong> \u2014 Telegram.<\/li>\n<\/ul>\n<\/ol>\n<p>Leave default values for other fields, then click <strong>Add<\/strong>. Similarly, add actions for Recovery and Update operations. The result should look like this:<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image49.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image49-690x280.png\" alt=\"\" width=\"690\" height=\"280\" class=\"aligncenter size-large wp-image-53308\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<h3>Testing notifications via Telegram bot<\/h3>\n<p>To test the notification system, we stopped the services <b>TrueConf Server<\/b> and <b>TrueConf Web Manager<\/b>. The result was as follows:<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image24.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image24.png\" alt=\"\" width=\"377\" height=\"426\" class=\"aligncenter size-full wp-image-53283\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>The Telegram bot sent a notification about the problem. The chart on the main dashboard displays the status of the services:<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image52.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image52-690x244.png\" alt=\"\" width=\"690\" height=\"244\" class=\"aligncenter size-large wp-image-53311\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>Restart the services, and the Telegram bot will notify you that they have resumed their work.<\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image59.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image59.png\" alt=\"\" width=\"474\" height=\"429\" class=\"aligncenter size-full wp-image-53318\" loading=\"lazy\" title=\"\"><\/a><\/p>\n<p>The chart on the main panel also shows that the operation of services has been restored: <\/p>\n<p><a href=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image18.png\" data-rel=\"lightbox-gallery-2Hea1gku\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 1px solid #D1CCCC;\" src=\"https:\/\/trueconf.ru\/blog\/wp-content\/uploads\/2024\/03\/image18-690x311.png\" alt=\"\" width=\"690\" height=\"311\" class=\"aligncenter size-large wp-image-53277\" loading=\"lazy\" title=\"\"><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Monitoring of corporate servers is a convenient way to track performance and detect faults. In this article, we will show how the monitoring system of TrueConf Server works by integrating Zabbix. Here, we will monitor the performance of the machine where TrueConf Server is installed, get necessary information about conferences, and send notifications via a [&hellip;]<\/p>\n","protected":false},"author":73,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[260],"tags":[246,312,167],"class_list":["post-31913","post","type-post","status-publish","format-standard","hentry","category-knowledge-base","tag-api-and-sdk","tag-trueconf-api","tag-trueconf-server","wpautop"],"_links":{"self":[{"href":"https:\/\/trueconf.com/blog\/wp-json\/wp\/v2\/posts\/31913","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/trueconf.com/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/trueconf.com/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/trueconf.com/blog\/wp-json\/wp\/v2\/users\/73"}],"replies":[{"embeddable":true,"href":"https:\/\/trueconf.com/blog\/wp-json\/wp\/v2\/comments?post=31913"}],"version-history":[{"count":31,"href":"https:\/\/trueconf.com/blog\/wp-json\/wp\/v2\/posts\/31913\/revisions"}],"predecessor-version":[{"id":34692,"href":"https:\/\/trueconf.com/blog\/wp-json\/wp\/v2\/posts\/31913\/revisions\/34692"}],"wp:attachment":[{"href":"https:\/\/trueconf.com/blog\/wp-json\/wp\/v2\/media?parent=31913"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/trueconf.com/blog\/wp-json\/wp\/v2\/categories?post=31913"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/trueconf.com/blog\/wp-json\/wp\/v2\/tags?post=31913"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}