wiki.getshifting.com

--- Sjoerd Hooft's InFormation Technology ---

User Tools

Site Tools


scriptlogmessagesreport

Bash: Run a Report on Syslog Messages

Summary: How to receive all messages from a syslog server from the last week using a script.
Date: Around 2022
Refactor: 6 April 2025: Checked links and formatting.

I've setup my management server as my syslog server as well. All servers sent their warning messages or higher to this server and I've created this script so I receive all unique messages from the last week, on Monday morning in my email to be included in my weekly check.

#!/bin/bash
# This report show all entries in /var/log/messages for the last week,
#    makes them unique and counts the number of messages.
# Then it will mail the report to whoever needs it.
 
# Script Variables
HOSTNAME_SHORT=`hostname -s`
BASEDIR=`dirname $0`
WHATAMI=`basename $0`
DATE=`date +%Y%m%d`
LASTWEEK=`date --d='last Week' +%V`
TOMAIL=sjoerd @ getshifting.com,it department @ getshifting.com
REPORT=/tmp/$WHATAMI.txt
 
# /var/log/messages logfile due to rotation
LASTSUNDAY=`date --d='last Sunday' +%Y%m%d`
LOGFILE=/var/log/messages-$LASTSUNDAY
 
# Start of Script
 
# Clear logfile and make things look nice
echo "This is the messages report log" > $REPORT
echo "Server: $HOSTNAME_SHORT" >> $REPORT
echo "Week number: $LASTWEEK" >> $REPORT
echo " " >> $REPORT
echo "Report messages": >> $REPORT
 
# Get all messages from logfile, sqeeze spaces,
#    remove the date columns and sort and count the logentries
cat $LOGFILE | tr -s ' ' | cut -d' ' --complement -f1-3 | sort | uniq -c >> $REPORT
 
# Mail report
echo "See attachment" | mailx -s "Weekly syslog messages Red Hat Environment" -a $REPORT $TOMAIL
 
# End of Script
exit 0

Then schedule it in cron like this:

# Run messages report every monday at 06:00
0 6 * * 1 root /adminscripts/logmessagesreport
scriptlogmessagesreport.txt · Last modified: by 127.0.0.1