Memcached provides a mechanism for caching SQL query results in memory on one or more memcached servers. Caching query results can dramatically improve performance in heavily utilized Nagios XI deployments. This can dramatically improve performance in heavily utilized Nagios XI deployments.
Here at Ibmi Media, as part of our Server Management Services, we regularly help our Customers to perform related Nagios queries.
In this context, we shall look into how to increase the performance of Nagios XI by enabling Memcached.
It is possible for us to set up one or more Memcached servers (hosts).
To do so, we establish a terminal server to Nagios XI server as a root user. Then we proceed with the following steps.
1. Install Memcached
Initially, we need to install the packages we require:
RHEL|CentOS
# yum -y install memcached php-pecl-memcached
Debian 9|Ubuntu 16/18
# apt-get install -y memcached php-memcached
2. Firewall Rules
Each of them should configure its firewall to allow traffic on TCP port 11211. Only then will it allow Nagios XI to contact the Memcached server.
To create the firewall rules we execute:
RHEL 7+|CentOS 7+
# firewall-cmd –zone=public –add-port=11211/tcp
# firewall-cmd –zone=public –add-port=11211/tcp –permanent
Ubuntu
# ufw allow proto tcp from any to any port 11211
# ufw reload
Debian
# iptables -I INPUT -p tcp –dport 11211 -j ACCEPT
3. Configure Memcached
This ensures the Memcached server will start when the server boots. We can start it by issuing the following commands:
RHEL 7+|CentOS 7+|Debian|Ubuntu 16/18
# systemctl enable memcached
# systemctl start memcached
4. Enable Memcached Support In PHP
We need to add an extension line to the php.ini file. The location of this file differs depending on the OS/version.
To determine the location, we run:
# find /etc -name php.ini
In case we get multiple results, we need to change the one in the apache directory.
We add the extension line with the following command:
# echo “extension=memcached.so” >> /etc/php.ini
Then we restart the Apache service:
RHEL 7+|CentOS 7+
# systemctl restart httpd.service
Debian|Ubuntu 16/18
# systemctl restart apache2.service
5. Enable Memcached Support In Nagios XI
Moving ahead, we edit the Nagios XI configuration file to enable Memcached:
vi /usr/local/nagiosxi/html/config.inc.php
We find the following line:
$cfg[‘memcached_enable’] = false;
Then we change it to:
$cfg['memcached_enable'] = true;
Eventually, we save the changes and close the file.
On the other hand, the below commands will make the change for us:
# cd /usr/local/nagiosxi/html/
# sed -i “s/memcached_enable’] = false/memcached_enable’] = true/g” config.inc.php
Now, Nagios XI will start using Memcached to cache SQL query results.
6. View Memcached Statistics
To view the cache statistics, we can download and install the useful memcached-tool:
# cd /tmp
# wget https://raw.githubusercontent.com/memcached/memcached/master/scripts/memcached-tool
# chmod +x memcached-tool
# ./memcached-tool 127.0.0.1 display
# ./memcached-tool 127.0.0.1 stats
7. Multiple Memcache Servers
Nagios XI supports using multiple Memcache servers. In the config file /usr/local/nagiosxi/html/config.inc.php, the following line dictates this:
$cfg[‘memcached_hosts’]=array(‘127.0.0.1’);
This is an array of addresses of the Memcached servers we want Nagios XI to use. The address surrounds by 'single quotes'. The comma is to separate each entry.
For example,
$cfg[‘memcached_hosts’]=array(‘192.168.1.3′,’192.168.1.4′,’192.168.1.5’);
This article covers how to enable Memcached for our customers. You can setup one or more memcached servers (hosts) for use by Nagios XI.
Each memcached host must have its firewall configured to allow traffic on TCP port 11211 to allow Nagios
XI to contact the memcached server.
To create the firewall rules, run the commands:
$ ufw allow proto tcp from any to any port 11211
$ ufw reload