I have described memory monitoring and alert notification gauge on the previous article (Part 1) – let’s do the configuration.
There are so many ways to monitor and get alert notification of VMWare ESXi host memory usage status – most of well-known monitoring solutions come with VMware monitoring plugins pre-installed. vCenter server can also send alerts based on given conditions as well.
Here I will discuss how to configure Nagios Core to monitor memory usage and alert notification; NagiosXI (the commercial edition has a built-in nice easy web UI to do the same). Before moving forward, make sure Nagios server up and running – we need install the following software/tools on the Nagios server –
i. VMware vSphere Perl-SDK; the version should match to the vCenter/ESXi host version – version 5.5 can be download at https://developercenter.vmware.com/web/sdk/55/vsphere-perl
ii. Download and install check_vmware_esx.pl (this is a fork of check_vmware_api.pl) from https://www.monitoringexchange.org/inventory/Check-Plugins/Virtualization/VMWare-%2528ESX%2529/check_vmware_esx.pl—a-fork-of-check_vmware_api.pl-%2528check_esx3-pl%2529 or from https://github.com/BaldMansMojo/check_vmware_esx/blob/master/check_vmware_esx.pl
iii. Install the required Perl modules.
(Step 1 – install VMware vSphere Perl-SDK)
#tar zxvf VMware-vSphere-Perl-SDK-5.5.0-1384587.x86_64.tar.gz
Accept the license agreement and install with default settings.
If the installation detect missing or old Perl modules – install them; easiest way is install them via CPAN.
(Step 2 – install & configure check_vmware_esx.pl Nagios check script)
Download this from the above mentioned web sites. Copy the “chech_vmware_esx.pl” script to Nagios libexec directory “/usr/local/nagios/libexec/”; make sure it is owned by “nagios” user/group with executable permission.
If you download the “check_vmware_esx_0.9.19.tgz” file – the installation process is following –
#tar zxvf check_vmware_esx_0.9.19.tgz
#cp check_vmware_esx.pl /usr/local/nagios/libexec
#chown nagios.nagios check_vmware_esx.pl
#chmod 751 check_vmware_esx.pl
Copy the perl modules within “check_vmware_esx_0.9.19/modules” to a directory – this can be inside “/usr/local/nagios/libexec” directory –
#cp –R /tmp/check_vmware_esx_0.9.19/modules /usr/local/nagios/libexec/vmware_modules/
#chown –R nagios.nagios /usr/local/nagios/libexec/vmware_modules
Also change following parameter in the check_vmware_esx.pl file –
use lib “modules”;
use lib /usr/local/nagios/libexec/vmware_modules/modules;
Again if the script execution complain about missing Perl module – install them via CPAN.
You should use a “session lock file” to minimize auth log entries on vCenter or ESXi host; every time nagios execute service check with this script – this will create auth log entries in vCenter/ESXi host – it’s huge! The default script will ask you to create session lock file in “/var/nagios_plugin_cache/” directory – create this directory and make sure it is owned by Nagios.
#chown –R nagios.nagios /var/nagios_plugin_cache
You need to create an user account for this nagios script on your vCenter or on ESXi hosts you want to monitor. You should use “authfile”; this file contains Nagios monitoring user account/password created on vCenter or ESXi host.
Enter the following –
#chown nagios.nagios /usr/local/nagios/libexec/vmware_plugin/authfile
At this stage the script should be ready to execute! If not – it must be missing Perl modules :(.
(Step 3 – configure Nagios commands and service check)
This script is capable of monitoring lots of other vCenter objects such as cpu, network, datastore, virtual machines etc. Follow standard Nagios guidelines to create your check commands and service checks.
To see all memory parameters of an esxi host–
./check_vmware_esx.pl -H 192.168.1.1 -f /location/of/authfile -S mem
mem usage=42.73% - consumed memory=24501.48 MB - swap used=35.87 MB - overhead=650.41 MB - memctl=0.00 MB: |'mem_usage'=42.73%;;;; 'consumed_memory'=24501.48MB;;;; 'mem_swap'=35.87MB;;;; 'mem_overhead'=650.41MB;;;; 'mem_memctl'=0.00MB;;;;
Set alert notification based on % of memory usage of an esxi host-
./check_vmware_esx.pl -H 192.168.1.1 -f /location/of/authfile -S mem -s usage
./check_vmware_esx.pl -H 192.168.1.1 -f /location/of/authfile -S mem -s usage -w 40% -c 60%
Warning! mem usage=42.69%|'mem_usage'=42.69%;40;60;;
Set alert notification based on MB of total memory usage of an esxi host–
./check_vmware_esx.pl -H 192.168.1.1 -f /location/of/authfile -S mem -s consumed
consumed memory=24501.29 MB|'consumed_memory'=24501.29MB;;;;
./check_vmware_esx.pl -H 192.168.1.1 -f /location/of/authfile -S mem -s consumed -w 24000 -c 26000
Warning! consumed memory=24475.05 MB|'consumed_memory'=24475.05MB;24000;28000;;
To see swap memory usage only of an esxi host–
./check_vmware_esx.pl -H 192.168.1.1 -f /location/of/authfile -S mem -s swapused
swap used=35.87 MB|'mem_swap'=35.87MB;;;;
Screenshot of mem usage on Nagios web UI –
This script also generate Nagios perfdata which is useful for graphing; if you have pnp4nagios graph installed you should be able to get graph like the following –