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 businesses – 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 an Open Source tool based on PHP – PHP Server Monitor.

Some of the monitoring possibilities

  • Monitor Web URL
  • Monitor Port number
  • Search for a string on website and markdown if not found
  • Option to try for configured threshold before alerting
  • Define response timeout value
  • Get notified through email, SMS, Jabber, Telegram, Pushover

Pre-requisite

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

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

Install Apache, PHP, MySQL, CURL

  • Login into a server where you intend to set up 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 the 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 purposes, 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.

  • cd /opt
  • mkdir monitoring
  • cd monitoring
  • Download the latest version from here

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

  • 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 a 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 an account for Monitor Administration
  • Click on “Install”

user-configuration

  • It will take a 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 the “Status” page, where you will see pre-defined two monitoring. Don’t worry – you can delete them.

monitoring-dashboard

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

addnew

  • Enter the required information and click on “Save.”

setup-monitoring

  • You will notice that newly added monitoring is displayed under the “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 a 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. Alternatively, you may try a cloud-based monitoring solution for your websites.