Red Hat Enterprise Virtualization Log Collector extractor
Posted on Sun 07 August 2011 in Technology
Wow, it’s been over a year since I’ve posted anything here. Been busy with work and life.
Here’s a script called rhevx that I created to painlessly extract the logs gathered by the Log Collector Utility shipped with Red Hat Enterprise Virtualization Manager 2.x
Pass it the zip file created by Log Collector and it will:
- create and extract everything into a directory with the same name as the zip file
- find and extract all of the sosreports, if there are any
#! /bin/bash
if [ -z $1 ]; then
echo "No input file specified"
echo "Usage: $0 <log_collector_output_file>"
exit 1
fi
if [ -n `which unzip 2> /dev/null` ]; then
EXTRACTOR="`which unzip` -d "
elif [ -n `which 7za 2> /dev/null` ]; then
EXTRACTOR="`which 7za` x -o "
else
echo "The unzip or 7za utility is required to run this script, but neither could not be found."
echo "The unzip utility is usually provided by the unzip package."
echo "The 7za utility is usually provided by the p7zip package."
exit 1
fi
FILE=$1
if [ -f $FILE ]; then
NAME=`basename $FILE .zip`
mkdir ./$NAME
$EXTRACTOR "$NAME/" $FILE
if [ "$?" != "0" ]; then
echo -e "\nThe file $FILE failed to extract correctly. Please check that the file is a \
\nvalid XZ archive and that it is not corrupted or incomplete.\n\n"
exit 1
fi
# Check to see if it contains any host sosreports
ls -l $NAME/*.tar.bz2 > /dev/null 2>&1
if [ "$?" = "0" ]; then
cd $NAME
echo -e "\nUnpacking host sosreports...\n"
for i in `ls *.tar.bz2`;
do
echo "Extracting" $i
FILESIZE=$(/usr/bin/stat -c%s $i | awk '{printf("%d",$1/1024/1024)}')
echo "This sosreport is $FILESIZE MB compressed"
tar --totals --totals=SIGUSR1 -xf $i &
pid=$!
while ps -p $pid &> /dev/null; do
sleep 1
kill -USR1 $pid 2> /dev/null
done
wait $pid
if [ "$?" = "0" ]; then
echo -e "Done - removing archive\n"
rm -f $i
else
echo -e "\nThe file" $i "failed to extract correctly. Please check the file and \
\ntry to extract it manually later. \n\nContinuing...\n\n"
fi
done
else
echo "This Log Collector archive contains no sosreports"
fi
# Check to see if dos2unix is installed
if [ -n `which dos2unix 2> /dev/null` ]; then
echo "Converting latest vdc logs to UNIX format"
dos2unix vdc*txt
else
echo "dos2unix not found on this system, so we won't try to convert the latest vdc logs to UNIX format"
fi
else
echo "file $FILE could not be found. Please check the path and try again."
exit 1
fi
echo -e "\nDone - you can find the extracted logs in $NAME/"
If you’re curious enough to try to sift through the logs yourself here is some information from the RHEV Administration Guide that explains some of the more important logs:
You can also find help over IRC on Freenode in #rhev