DevOps

Setting Up a Master and Remote Server with Nagios on CentOS 7 Using Vagrant – Part 1

This guide will walk you through setting up a Nagios monitoring system on CentOS 7 using Vagrant and VirtualBox. We’ll configure a master server to monitor remote servers in a private network environment.

Vagrant Configuration

First, let’s define our virtual machines (VMs) using a Vagrantfile. This file contains the configuration for creating the VMs using Vagrant and VirtualBox.

Vagrant.configure("2") do |config|  

  config.vm.define "master" do |master|
    master.vm.hostname = "master"
    master.vm.box = "centos/7"
    master.vm.network "private_network", ip: "192.100.10.10"

    master.vm.provider "virtualbox" do |vb|
      vb.memory = "2048"
      vb.cpus = 2
    end
  end

  config.vm.define "remote" do |remote|
    remote.vm.hostname = "remote"
    remote.vm.box = "centos/7"
    remote.vm.network "private_network", ip: "192.100.10.20"

    remote.vm.provider "virtualbox" do |vb|
      vb.memory = "2048"
      vb.cpus = 2
    end
  end

end

Explanation:

  • Vagrant.configure("2") do |config|: Initializes the configuration block with version 2 of Vagrant’s configuration syntax.
  • config.vm.define "master": Defines a VM named “master”. The hostname is set to “master” and it’s using the centos/7 box.
  • master.vm.network "private_network", ip: "192.100.10.10": Assigns a private IP to the “master” VM.
  • master.vm.provider "virtualbox" do |vb|: Specifies that VirtualBox is the provider and allocates 2048 MB of memory and 2 CPUs.
  • The same steps are repeated for the “remote” VM, with an IP of 192.100.10.20.

Example:
After writing the above configuration, run vagrant up in your terminal to create and start the VMs. This command brings up both VMs based on the configuration defined in the Vagrantfile.


Configuring the Master Server

Once your VMs are up, SSH into the master server and begin setting it up.

vagrant ssh master

Update and Upgrade the System

Start by updating the system to ensure you have the latest packages:

sudo yum update
sudo yum upgrade

Explanation:

  • sudo yum update: Fetches the latest versions of the package metadata and updates the packages that have newer versions available.
  • sudo yum upgrade: Upgrades the packages to their latest versions.

Example:
Always perform a system update before installing new software to ensure compatibility and security.

Install Required Packages

Next, install the necessary software packages for Nagios:

sudo yum install httpd php php-cli gcc unzip wget glibc glibc-common gd gd-devel net-snmp -y
sudo yum install glibc-common make openssl-devel xinetd vim -y

Explanation:

  • This command installs various packages required by Nagios, such as httpd (Apache web server), php (scripting language), and gcc (GNU Compiler Collection).
  • The -y option automatically answers “yes” to prompts during installation.

Example:
If you encounter dependency issues, use sudo yum clean all to clear the cache and try reinstalling.

Start the Apache Server

sudo service httpd start

Explanation:

  • This starts the Apache web server, which is needed to serve the Nagios web interface.

Create Nagios User and Group

sudo useradd nagios
sudo passwd nagios
password
sudo groupadd nagcmd
sudo usermod -a -G nagcmd nagios
sudo usermod -a -G nagcmd apache

Explanation:

  • sudo useradd nagios: Adds a new user named “nagios”.
  • sudo passwd nagios: Sets the password for the Nagios user.
  • sudo groupadd nagcmd: Creates a new group named “nagcmd”.
  • sudo usermod -a -G nagcmd nagios: Adds the Nagios user to the nagcmd group.
  • sudo usermod -a -G nagcmd apache: Adds the Apache user to the nagcmd group.

Example:
Use the same commands to create additional users if needed, substituting “nagios” with the desired username.

Download and Install Nagios

cd /opt/
sudo wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.5.tar.gz
sudo tar xzf nagios-4.4.5.tar.gz
cd nagios-4.4.5
sudo ./configure --with-command-group=nagcmd
sudo make all
sudo make install
sudo make install-init
sudo make install-daemoninit
sudo make install-config
sudo make install-commandmode
sudo make install-exfoliation
sudo make install-webconf

Explanation:

  • The wget command downloads the Nagios Core tarball.
  • tar xzf: Extracts the tarball.
  • ./configure --with-command-group=nagcmd: Configures the installation to use the nagcmd group.
  • make and make install: Compiles and installs Nagios.

Example:
After installation, you can verify it by running sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg.

Setting Up Nagios Web Interface

sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
password
sudo service httpd restart

Explanation:

  • htpasswd -c: Creates a new Nagios web interface user.
  • service httpd restart: Restarts Apache to apply the configuration changes.

Example:
Visit http://192.100.10.10/nagios/ in your browser to access the Nagios web interface.

Additional Configuration (Optional)

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload
sudo systemctl restart httpd
sudo systemctl restart nagios
sudo systemctl enable httpd
sudo systemctl enable nagios

Explanation:

  • These commands configure the firewall to allow HTTP traffic, restart the services, and enable them to start on boot.

Example:
Use sudo systemctl status nagios to check if Nagios is running correctly.

Installing Nagios Plugins

cd /opt
sudo wget http://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz
sudo tar xzf nagios-plugins-2.2.1.tar.gz
cd nagios-plugins-2.2.1
sudo ./configure --with-nagios-user=nagios --with-nagios-group=nagios
sudo make
sudo make install

Explanation:

  • Installs Nagios plugins, essential for monitoring different services.

Example:
To verify, run sudo /usr/local/nagios/libexec/check_nrpe -H localhost.

Final Steps

Ensure everything is working by starting the Nagios service:

sudo service nagios start

Access the Nagios web interface using your browser and log in with the credentials you created.

Ali Imran
Over the past 20+ years, I have been working as a software engineer, architect, and programmer, creating, designing, and programming various applications. My main focus has always been to achieve business goals and transform business ideas into digital reality. I have successfully solved numerous business problems and increased productivity for small businesses as well as enterprise corporations through the solutions that I created. My strong technical background and ability to work effectively in team environments make me a valuable asset to any organization.
https://ITsAli.com

Leave a Reply