Apache is the most popular and widely used web server in the world, so it is important to monitor and debug the performance. Mod_status is an Apache module that is used to monitor Apache web server load and current connections via a web based interface. Mod_status allows a system administrator to monitor performance of Apache server. Mod_status is the most useful and easiest module to confgure with Apache.
The Mod_status module shows the following information:
- Server load and uptime.
- CPU usage and total traffic of Web Server.
- Total number of incoming connections.
- Total number of bytes and counts server.
- Total number of idle and busy workers.
In this tutorial, we will learn how to install and use Mod_status on the Apache web server running on Ubuntu-14.04.
Requirements
- A server running Ubuntu-14.04 with Apache installed.
- A non-root user with sudo privileges setup on your server.
Enable mod_status in Apache
By default Apache comes with mode_status enabled. You can check the contents of apache’s enabled modules directory by running the following command:
ls /etc/apache2/mods-enabled
You should see the mod_status module in the following output:
access_compat.load authn_file.load autoindex.load env.load mpm_prefork.load rewrite.load spdy.load wsgi.conf
alias.conf authz_core.load deflate.conf filter.load negotiation.conf setenvif.conf ssl.conf wsgi.load
alias.load authz_host.load deflate.load mime.conf negotiation.load setenvif.load ssl.load
auth_basic.load authz_user.load dir.conf mime.load php5.conf socache_shmcb.load status.conf
authn_core.load autoindex.conf dir.load mpm_prefork.conf php5.load spdy.conf status.load
If mod_status module not enabled, then you can easily enable it by running the following command:
sudo a2enmod status
Configure Mod_status Module
In order to enable the access of mod status page, you will need to configure mod_status default configuration file located at /etc/apache2/mods-enabled/ directory.
Open the status.conf file using your favorite editor:
sudo nano /etc/apache2/mods-enabled/status.conf
Find the section Location /server-status
, it should look like following.
SetHandler server-status
Require host example.com
Now, change all lines as shown below. where remote-ip-address
is the IP address of the remote computer you will be using to access your web server:
SetHandler server-status
Require local
Require ip remote-ip-address
Once you are finished, save and close the file.
The above configuration is valid only for your default apache site, if you have created virtual hosts, then will need to configure the above settings for each virtual host.
You can do this by editing 000-default.conf file:
sudo nano /etc/apache2/sites-enabled/000-default.conf
Add the following lines under the section VirtualHost *:80:
SetHandler server-status
Require local
Require ip remote-ip-address
Now, save the file and restart apache service.
sudo /etc/init.d/apache2 restart
Test Mod_status
Once you have finished, it’s time to test the mod_status module.
From your remote computer, open your web browser and access the Apache status page using the URL http://your-server-ip/server-status. You should see the following page:
HP_NO_IMG/data/uploads/users/7ecb43a5-b365-4ebf-93d5-f3b632f29f33/2064803149.png” alt=”” />
In the above image, you can see that html interface shows you all the information about server load, uptime and process id. You can also refresh the page every 10 seconds by adding ?refresh=10
at the end of the URL.
If you want to view the status of Apache using command line browser called lynx.
You can install it by running the following command:
sudo apt-get install lynx
Once installation is complete, you can get the Apache status using the following command:
lynx http://server-ip-address/server-status
You should see the following output:
“` language-bash
Apache Server Status for 192.168.43.206 (via 192.168.43.206)
Server Version: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.19 OpenSSL/1.0.2h mod_wsgi/3.4 Python/2.7.6
Server MPM: prefork
Server Built: Jul 15 2016 15:34:04
_______________________________________________________________________________________________________________________________________
Current Time: Monday, 03-Oct-2016 23:36:16 IST
Restart Time: Monday, 03-Oct-2016 23:23:16 IST
Parent Server Config. Generation: 1
Parent Server MPM Generation: 0
Server uptime: 12 minutes 59 seconds
Server load: 0.00 0.02 0.05
Total accesses: 7 - Total Traffic: 14 kB
CPU Usage: u.04 s.05 cu0 cs0 - .0116% CPU load
.00899 requests/sec - 18 B/second - 2048 B/request
1 requests currently being processed, 5 idle workers
_____W..........................................................
................................................................
......................
Scoreboard Key:
"_" Waiting for Connection, "S" Starting up, "R" Reading Request,
"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"C" Closing connection, "L" Logging, "G" Gracefully finishing,
"I" Idle cleanup of worker, "." Open slot with no current process
Srv PID Acc M CPU SS Req Conn Child Slot Client VHost Request
0-0 2754 0/1/1 _ 0.02 359 3 0.0 0.00 0.00 192.168.43.4 127.0.1.1:80 GET /server-status HTTP/1.1
1-0 2755 0/3/3 _ 0.02 737 0 0.0 0.00 0.00 192.168.43.4 127.0.1.1:80 NULL
2-0 2756 0/1/1 _ 0.02 423 2 0.0 0.00 0.00 192.168.43.4 127.0.1.1:80 NULL
3-0 2757 0/1/1 _ 0.02 234 4 0.0 0.00 0.00 192.168.43.4 127.0.1.1:80 NULL
4-0 2766 0/1/1 _ 0.01 485 3 0.0 0.00 0.00 192.168.43.4 127.0.1.1:80 NULL
5-0 2773 0/0/0 W 0.00 0 0 0.0 0.00 0.00 192.168.43.4 127.0.1.1:80 GET /server-status HTTP/1.0
_______________________________________________________________________________________________________________________________________
Srv Child Server number - generation
PID OS process ID
Acc Number of accesses this connection / this child / this slot
M Mode of operation
CPU CPU usage, number of seconds
SS Seconds since beginning of most recent request
Req Milliseconds required to process most recent request
Conn Kilobytes transferred this connection
Child Megabytes transferred this child
Slot Total megabytes transferred this slot
_______________________________________________________________________________________________________________________________________
SSL/TLS Session Cache Status:
cache type: SHMCB, shared memory: 512000 bytes, current entries: 0
subcaches: 32, indexes per subcache: 88
index usage: 0%, cache usage: 0%
total entries stored since starting: 0
total entries replaced since starting: 0
total entries expired since starting: 0
total (pre-expiry) entries scrolled out of the cache: 0
total retrieves since starting: 0 hit, 0 miss
total removes since starting: 0 hit, 0 miss