Application uptime is crucial for business operation and as Infrastructure support, you must be equipped with the required monitoring tool for proactive action.

If you are working in a large organization then most probably you will have some enterprise tool, which you are obliged to use it.

However, for small to medium business – you may think of having Open Source as a free solution for Web URL & Ports monitoring.

In this article, I will talk about how to monitor URL and Service Ports with Open Source tool based on PHP – “PHP Server Monitor.”

Some of the monitoring possibilities

  • Monitor Web URL
  • Monitor Port number
  • Search for string on website and mark down if not found
  • Option to try for configured threshold before alerting
  • Define response timeout value
  • Trigger email when down
  • Send SMS when down
  • Notify using Pushover.net

Pre-requisite

  • Web Server – Apache, Nginx (I will consider Apache for this demo)
  • PHP 5.3.7+, PHP-MySQL
  • MySQL
  • CURL

If you already have pre-requisite on your server including Database, then you may jump to “Install PHP Server Monitor” section below.

Install Apache, PHP, MySQL, CURL

  • Login into server where you intend to setup the monitoring
  • Open the SSH Terminal
  • Execute below yum command to install
 yum install httpd php mysql-server curl php-mysql
  • Start Apache & MySQL services
service mysqld start
service httpd start

Setup Database

It requires a database to store the monitoring matrix. Let’s start setting up MySQL by creating a database, user & password. If it’s fresh MySQL installation, then it’s recommended to go through securing procedure by executing

/usr/bin/mysql_secure_installation
  • Follow the instruction on screen. Actually, you can have Y for all.
  • Restart MySQL service

It’s time to create the database and grant the privileges.

[[email protected] yum.repos.d]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.73 Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database CHANDAN;
Query OK, 1 row affected (0.00 sec)
mysql> create user [email protected];
Query OK, 0 rows affected (0.00 sec)
mysql> set password for [email protected]=PASSWORD("CHANDAN");
Query OK, 0 rows affected (0.00 sec)
mysql> grant all privileges on CHANDAN.* to [email protected] identified by 'CHANDAN';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
[[email protected] yum.repos.d]#

For demo purpose, I have kept username, password & database as “CHANDAN”. Please change it accordingly.

Install PHP Server Monitor

You may create a new folder “monitoring” under /opt to keep the tool package.

Or you can directly pull the zip file from server using wget command

wget http://downloads.sourceforge.net/project/phpservermon/phpservermon/PHP%20Server%20Monitor%20v3.1.1/phpservermon-3.1.1.zip
  • unzip the downloaded zip file
unzip phpservermon-3.1.1.zip
  • Copy the extracted folder to your Apache DocumentRoot. If installed at default location then it would be /var/www/html
cp –rp phpservermon-3.1.1 /var/www/html
  • Let’s rename the folder from phpservermon-3.1.1 to monitoring (this is optional though)
 mv phpservermon-3.1.1 monitoring

Let’s begin installation by accessing web server URL with monitoring URI. If you were doing on localhost, then it would be http://localhost/monitoring/install.php

  • Click on “Let’s go”

monitor-installation-begin

  • Enter the database information
  • Click on “Save configuration”

database-configure

  • Enter user details to create account for Monitor Administration
  • Click on “Install”

user-configuration

  • It will take few seconds and you will see “SUCCESS” confirmation.

success-installation

Great, so now your “PHP Server Monitor” setup is done and it’s time to configure some monitoring.

  • Click on “Go to your monitor”
  • Enter the username and password and click on “Login”

login-monitoring

You will be redirected to “Status” page where you will see pre-defined two monitoring. Don’t worry – you can delete them.

monitoring-dashboard

  • Let’s setup a URL monitoring. Click on “Servers” menu on top
  • Click on “Add new”

addnew

  • Enter the required information and click on “Save”

setup-monitoring

  • You will notice newly added monitoring is displayed under “Status” page.

monitoring-status

Configure cronjob

To have status updated periodically, cronjob must be running. You can run them every 5 minutes or whatever suits you. You may refer my article on setting up crontab if not sure.

*/05 * * * * root /usr/bin/php /var/www/html/monitoring/cron/status.cron.php

This great tool also gives you Latency (average) and uptime report in a graph by an hour, day or week.

  • Go to Status and click on the desired label

graph-report

Go ahead and add some monitoring to get notified when something goes down.