Monitoring
Team: Mohanad Aly, Artur Ovtsinnikov
Group : Cyber Security Engineering (C21)
Page Created: 23 October 2016
Last modified: 23 October 2016
Introduction
This article introduces the Monitoring application called Nagios.
Monitoring
Monitoring is the process of keep tracking of system resources.
Monitoring is the process of observing and checking the progress or quality of something over a period of time; keep under systematic review.[1] Monitoring cannot be achieved without logging. That is the reason integrated solutions combine the two processes. Monitoring is used to:
- check performance
- detect if something worth noticing happened
- prevent something to happen
- detect whether a system is under attack
The good solution: Nagios
As of today, [1] is the most popular open-source solution for monitoring computer systems before
Monitoring is made of three components:
- Apache
- PHP
- MySQL
The main advantages of Nagios are:
- Open-source
- Customized Dashboards
- Ease of Use
- Infinite Scalability
- Data in Real Time
- Network Security
Why monitor our servers
There are many reasons why a system administrator would want to monitor its server(s).
- Prevent undesired events to happen
Without monitoring, a system administrator will react to a problem only when it has already occurred. Such issue can in the worst case cause a failure of the CIA triad. It is of course wiser to anticipate such issues and solve the problem before they arise. The monitoring system sends alerts that help to identify potential sources of futures failures to avoid.
- Understand what happened in case of failure
In the event of a system failure, the monitoring system will give crucial information to determine where, when and how the problems occurred. This information makes the debugging process to be much faster and easier.
In the end, monitoring a system can be seen as an insurance policy. It costs money and time, but the money and time it saves is worth it.
Topology of the Elab system
Desktop machine
Begin with the basic setup, network configuration and make the machine has internet access which the ip address of the machine is 192.168.56.100
Server machine IP address 192.168.56.200
- Can be connected over ssh with student@192.168.56.200
- Also can connect with other IP address ssh student@10.10.10.10
IDS IP address 192.168.56.201
Starting to update and upgrade the OS
Check for current version
If your machine is running older version then 16.04 which is the latest long term supported version, please follow the following commands to upgrade your machine to the latest version.
- First check your current Ubuntu version by running the following command:
lsb_release -a
If you find that your machine is already running the following version or higher than:
Description:Ubuntu 16.04.1 LTS Release:16.04
Then there is no need to upgrade the OS
Upgrade
- First become super user "root":
sudo -i
- Begin by updating the package list:
apt-get update
- Upgrade installed packages to their latest available versions:
apt-get upgrade
- Once upgrade finishes, use the dist-upgrade command, which will perform upgrades involving changing dependencies
apt-get dist-upgrade
- Now that you have an up-to-date installation of Ubuntu 16.04 LTS, you can use
do-release-upgrade
to upgrade to the Ubuntu 16.04 LTS release.
Setup of Nagios
Prerequisites
Ubuntu Linux machine, sudo access and some Linux beginner skills are needed.
In this tutorial, Ubuntu 16.04 64-bit distribution will be used since it is the latest LTS.
Unfortunately, Nagios cannot be installed simply by using one command, because there are some prerequisite applications needed for it to work.
This tutorial describes the commands and configuration to make the services work together Nagios.
Installation tutorial on Ubuntu 16.04 Linux host machine
- It is important to have the latest package lists to update them to get info on the newest versions of packages and their dependencies. So we need to run the following command to update them:
Command
sudo apt-get update
Installing the prerequisites
- Nagios requires the gcc compiler and build-essentials for the compilation, LAMP (Apache, PHP, MySQL) for the Nagios web interface and Send mail to send alerts from the server. To install all those packages, run this command (it's just 1 line):
Command
sudo apt-get install wget build-essential apache2 php apache2-mod-php7.0 php-gd libgd-dev sendmail unzip
User and group configuration
- For Nagios to run, you have to create a new user for Nagios. We will name the user "nagios" and additionally create a group named "nagcmd". We add the new user to the group as shown below:
3- Command
useradd nagios
4- Command
groupadd nagcmd
5- Command
usermod -a -G nagcmd nagios
6- Command
usermod -a -G nagios,nagcmd www-data
Installing Nagios
- Step 1 - Download and extract the Nagios core
cd ~
wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.2.0.tar.gz
tar -xzf nagios*.tar.gz
cd nagios-4.2.0
- Step 2 - Compile Nagios
Before you build Nagios, you will have to configure it with the user and the group you have created earlier.
./configure --with-nagios-group=nagios --with-command-group=nagcmd
For more information please use: ./configure --help .
- Now to install Nagios:
make all
sudo make install
sudo make install-commandmode
sudo make install-init
sudo make install-config
/usr/bin/install -c -m 644 sample-config/httpd.conf /etc/apache2/sites-available/nagios.conf
- And copy evenhandler directory to the nagios directory:
cp -R contrib/eventhandlers/ /usr/local/nagios/libexec/
chown -R nagios:nagios /usr/local/nagios/libexec/eventhandlers
- Step 3 - Install the Nagios Plugins
Download and extract the Nagios plugins:
cd ~
wget https://nagios-plugins.org/download/nagios-plugins-2.1.2.tar.gz
tar -xzf nagios-plugins*.tar.gz
cd nagios-plugin-2.1.2/
- Install the Nagios plugin's with the commands below:
./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl
make
make install
- Step 4 - Configure Nagios
After the installation phase is complete, you can find the default configuration of Nagios in /usr/local/nagios/. We will configure Nagios and Nagios contact. Edit default nagios configuration with nano:
nano /usr/local/nagios/etc/nagios.cfg
uncomment line 51 for the host monitor configuration.
- cfg_dir=/usr/local/nagios/etc/servers
Save and exit.
Add a new folder named servers:
mkdir -p /usr/local/nagios/etc/servers
The Nagios contact can be configured in the contact.cfg file. To open it use:
nano /usr/local/nagios/etc/objects/contacts.cfg
Configuring Apache
- Step 1 - enable Apache modules
sudo a2enmod rewrite
sudo a2enmod cgi
You can use the htpasswd command to configure a user nagiosadmin for the nagios web interface
sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
and type your password.
- Step 2 - enable the Nagios virtualhost
sudo ln -s /etc/apache2/sites-available/nagios.conf /etc/apache2/sites-enabled/
- Step 3 - Start Apache and Nagios
service apache2 restart
service nagios start
When Nagios starts, you may see the following error :
- Starting nagios (via systemctl): nagios.serviceFailed
And this is how to fix it:
cd /etc/init.d/
cp /etc/init.d/skeleton /etc/init.d/nagios
Now edit the Nagios file:
nano /etc/init.d/nagios
and add the following code:
DESC="Nagios"
NAME=nagios
DAEMON=/usr/local/nagios/bin/$NAME
DAEMON_ARGS="-d /usr/local/nagios/etc/nagios.cfg"
PIDFILE=/usr/local/nagios/var/$NAME.lock
Make it executable and start Nagios:
chmod +x /etc/init.d/nagios
service apache2 restart
service nagios start
Testing the Nagios Server
Please open your browser and access the Nagios server ip, in my case: http://192.168.1.9/nagios.
Nagios Login with apache htpasswd.
[[File:|thumb|center|]]
Nagios Admin Dashboard
[[File:|thumb|center|]]
- Adding a Host to Monitor
In this tutorial, I will add an Ubuntu host to monitor to the Nagios server we have made above.
Nagios Server IP : 192.168.1.9 Ubuntu Host IP : 192.168.1.10
- Step 1 - Connect to ubuntu host
ssh student@192.168.56.100
- Step 2 - Install NRPE Service
sudo apt-get install nagios-nrpe-server nagios-plugins
- Step 3 - Configure NRPE
After the installation is complete, edit the nrpe file /etc/nagios/nrpe.cfg:
nano /etc/nagios/nrpe.cfg
and add Nagios Server IP 192.168.1.9 to the server_address.
server_address=192.168.56.200
- Step 4 - Restart NRPE
service nagios-nrpe-server restart
- Step 5 - Add Ubuntu Host to Nagios Server
Connect back to the Nagios server:
ssh student@192.168.56.200
Then create a new file for the host configuration in /usr/local/nagios/etc/servers/.
nano /usr/local/nagios/etc/servers/ubuntu_host.cfg
Add the following lines:
- Ubuntu Host configuration file
define host {
use linux-server
host_name ubuntu_host
alias Ubuntu Host
address 192.168.1.10
register 1
}
define service {
host_name ubuntu_host
service_description PING
check_command check_ping!100.0,20%!500.0,60%
max_check_attempts 2
check_interval 2
retry_interval 2
check_period 24x7
check_freshness 1
contact_groups admins
notification_interval 2
notification_period 24x7
notifications_enabled 1
register 1
}
define service {
host_name ubuntu_host
service_description Check Users
check_command check_local_users!20!50
max_check_attempts 2
check_interval 2
retry_interval 2
check_period 24x7
check_freshness 1
contact_groups admins
notification_interval 2
notification_period 24x7
notifications_enabled 1
register 1
}
define service {
host_name ubuntu_host
service_description Local Disk
check_command check_local_disk!20%!10%!/
max_check_attempts 2
check_interval 2
retry_interval 2
check_period 24x7
check_freshness 1
contact_groups admins
notification_interval 2
notification_period 24x7
notifications_enabled 1
register 1
}
define service {
host_name ubuntu_host
service_description Check SSH
check_command check_ssh
max_check_attempts 2
check_interval 2
retry_interval 2
check_period 24x7
check_freshness 1
contact_groups admins
notification_interval 2
notification_period 24x7
notifications_enabled 1
register 1
}
define service {
host_name ubuntu_host
service_description Total Process
check_command check_local_procs!250!400!RSZDT
max_check_attempts 2
check_interval 2
retry_interval 2
check_period 24x7
check_freshness 1
contact_groups admins
notification_interval 2
notification_period 24x7
notifications_enabled 1
register 1
}
You can find many check_command in /usr/local/nagios/etc/objects/commands.cfg file. See there if you want to add more services like DHCP, POP etc.
And now check the configuration:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
To see if the configuration is correct.
- Step 6 - Restart all services
On the Ubuntu Host start NRPE Service:
service nagios-nrpe-server restart
The Nagios server, start Apache and Nagios:
service apache2 restart
service nagios restart
- Step 7 - Testing the Ubuntu Host
Open the Nagios server from the browser and see the ubuntu_host being monitored. The Ubuntu host is available on monitored host.
[[File:|thumb|center|]]
All services monitored without error.
Summary
Nagios is an open source application for monitoring a system. Nagios has been widely used because of the ease of configuration. Nagios in support by various plugins, and you can even create your own plugins. Look here for more information.
[[File:|thumb|center|]]
[[File:|thumb|center|]]
[[File:|thumb|center|]]
See also
References
1- https://en.wikipedia.org/wiki/System_monitoring
2- https://www.howtoforge.com/tutorial/ubuntu-nagios/
3- https://www.nagios.com/products/nagios-log-server/