Version 2 (modified by chris, 4 years ago) (diff) |
---|
This is a script to check if the apache MaxClientsVhost limit has been hit, it's used on ParrotServer and a email is sent to root every day when the MaxClientsVhost limit is reached.
#!/bin/bash # This script checks for the Apache MaxClientsVhost limit being hit # It's run via /etc/logrrotate.d/apache2 just before thenlogs are rotated # If an email address is passed to the script then the results will be sent # out by email. # Location of the apache log file we are checking LOGFILE=/var/log/apache2/error.log # Name of the server this is running on HOSTNAME=$(hostname -f) # The lines are are grepping for GREP=$(grep MaxClientsVhost $LOGFILE | uniq -u) # The subject line of the email SUBJECT="MaxClientsVhost limit hit on $HOSTNAME" # Optional email address EMAIL=$1 # check that the script is being run by root if [[ "$(id -u)" != "0" ]] ; then echo "You must run $0 as root or via sudo" exit 2 fi # Check to see if any errors were found if [[ $GREP ]]; then # Check for a email address if [[ $1 ]]; then echo "$GREP" | mutt -s "$SUBJECT" $EMAIL # Display the results of the grep else [[ ! $1 ]] echo "Supply a email address on the command line to send the following results by email" echo "" echo "$GREP" fi else # We don't want any output if an email address is supplied if [[ ! $EMAIL ]] ; then echo "No recent errors were found" fi fi
The script is called via /etc/logrotate.d/apache2 which contains:
/var/log/apache2/*.log { daily missingok rotate 28 compress delaycompress notifempty create 640 root adm sharedscripts prerotate /usr/local/webarch/bin/maxclients root@localhost endscript postrotate /etc/init.d/apache2 reload > /dev/null endscript }