Logs and Monitoring for Apache Servers | Page 4
[previous] [next]
Logs and Monitoring for Apache Servers
Rotating and Archiving Logs
If you have a website with high traffic, your log files will quickly grow in size. While you can always archive the log files by hand, there are a number of mechanisms to rotate logs periodically, archiving and compressing older logs at well-defined intervals.
To avoid having to stop or restart the server when manipulating the log files, a common solution is to use an intermediate program to log the requests. The program will in turn take care of rotating, compressing, and archiving the logs.
Apache provides the rotatelogs
tool for this purpose. You can find a similar, alternative program at https://cronolog.org/.
This example uses the rotatelogs
tool to create a new log file and move the current log to the /var/logs
directory daily (86400 is the number of seconds in one day). Check the Apache documentation for details on how to use rotatelogs
to also rotate logs based on size and name archived files based on a template.
Caution
If the path to the log rotation program includes spaces, you might need to escape them by prefixing them with a \ (backslash). This is especially common in the Windows platform.
Controlling IP Address Resolution
If you set the HostNameLookups
directive to on
then Apache will try to determine (resolve) the hostname corresponding to the client's IP-address when it logs the request.
With HostNameLookups
set to off
, an access_log
entry may look like
And with HostNameLookups
set to on
, the same entry would look like
The next section explains the reverse process, how to replace IP addresses in logs with hostnames.
Processing Logged IP Addresses
Setting HostNameLookups
to on can have an impact on the server's performance, slowing its response time. To avoid using this directive setting, it is possible to disable name resolution and use a separate post-processing utility that can scan the log files and replace the IP addresses with host names. These tools are more efficient because they can cache results and they do not cause any delay when serving requests to clients.
Apache includes one such tool, logresolve
(logresolve.exe
in Windows). It reads log entries from standard input and outputs the result to its standard output. To read to and from a file, you can use redirection, on both Unix and Windows, as shown in the example.
You should bear in mind that the result of an IP address resolution result will not always correspond to the real hostname that sent the request. For example, if there is a proxy or gateway between the client and the web server, the IP address reported by HostNameLookups
or logresolve
will be the IP address of the proxy or gateway and you will get the hostname of the proxy server or the IP block managed by the gateway, rather than the name of an actual host.
Restarting Apache Automatically If It Fails
If you install Apache on Windows as a service, it can be automatically restarted by the service manager if it crashes.
In Unix, you can implement this functionality with a watchdog script. A watchdog monitors the status of another program, and if the program crashes or stops for any reason, the watchdog starts it again. The example shows a simple Linux script that will monitor the system process list to ensure that an httpd process exists, and will restart httpd if it crashes. To use it, you will need to give it executable permissions and add it to your cron
configuration so it can be run at predefined intervals.
If you are running Solaris, use ps -ef
instead of ps - waux
.
You can find a more sophisticated watchdog script that will send email when the server is down, and can watch specific httpd
process ids, at the following URL: https://perl.apache.org/docs/general/control/control.html.
Most Linux distributions also include their own generic watchdog scripts that can be adapted to work with Apache.
[previous] [next]
URL: