====== Sar Reporting ====== This will give you graphical representation of system load.\\ Also you can use it for capacity Planning.\\ OR simply monitoring. Easy system monitoring with SAR ==== Requirement Specification ==== Following perl module require to be installed. Getopt::Std Time::Local Date::Calc Email::Date::Format Following Packages from centOS / Redhat / Fedora need to be installed. yum install -y perl-Date-Calc.x86_64 perl-Date-Calc.x86_64 rrdtool.x86_64 sysstat.x86_64 perl-MIME-Lite.noarch Make following directory and **place all script in "/root/sar" folder**. mkdir -p /root/sar/{img,rrd,xml} Finally add it to cron. # SAR Stats 20 0 * * * /root/sar/sa_report.sh >/dev/null 2>&1 ==== Terms Used ==== tps: total number of transfers/sec rtps: total number of read requests/sec wtps: total number of write requests/sec bread/s: Total amount of data read from the drive in blocks per second. A block is 512 bytes. bwrtn/s: Total amount of date written to the drive in blocks per second. ==== sa report ==== This script goes to cron. #!/bin/bash # Developed by k2patel@gmail.com dtm=$(date -d 'now -1 days' +%d) sar=$(which sar) perl=$(which perl) location='/root/sar' cd $location # $sar -q -b -d -u -p -r -n DEV -f /var/log/sa/sa$dtm > sa$dtm.txt $sar -f /var/log/sa/sa$dtm > sa$dtm_1.txt $sar -r -b -q -d -n DEV -I SUM -u -f /var/log/sa/sa$dtm > sa$dtm.txt $perl sar2rrd.pl -t MDY -f sa$dtm_1.txt $perl sar2rrd.pl -t MDY -f sa$dtm.txt $perl notify.pl img/*.png rm -f *.txt rm -f */{*.png,*.xml,*.rrd} ==== sar to rrd ==== This script "sar2rrd" available at [[http://www.trickytools.com/php/sar2rrd.php | sar2rrd ]] wget -O sar2rrd.pl http://www.trickytools.com/downloads/sar2rrd-2.6.pl ==== Notify Script ==== This script send email with all the graph #!/usr/bin/perl -w # # Modified / updated by k2patel@gmail.com # This script send email with attachment #use strict; use MIME::Lite; use Getopt::Std; use Net::SMTP; my $SMTP_SERVER = '/usr/sbin/sendmail -t'; my $DEFAULT_SENDER = 'k2patel@localhost.localdomain'; my $DEFAULT_RECIPIENT = 'k2patel@hotmail.com'; my $def_cc = 'sjohn@live.com'; my $stamp = `date -d 'now -1 days' +%b-%d-%y`; my $hstnm = `hostname`; # process options getopts('hf:t:s:', \%o); $o{f} ||= $DEFAULT_SENDER; $o{t} ||= $DEFAULT_RECIPIENT; $o{s} ||= $stamp.' '.$hstnm.' '.' : System utilizatoin Report'; if ($o{h} or !@ARGV) { die "usage:\n\t$0 -h -f -t -s /var/log/log.txt\n"; } # construct and send email $msg = new MIME::Lite( From => $o{f}, To => $o{t}, cc => ($def_cc), Subject => $o{s}, Data => "Hi", Type => "multipart/mixed", ); while (@ARGV) { $msg->attach('Type' => 'application/octet-stream', 'Encoding' => 'base64', 'Path' => shift @ARGV); } $msg->send(); ==== SE Linux ==== Following rules add exceptiong for selinux. module sa 1.0; require { type sysstat_t; type init_t; type file_t; class lnk_file read; class fifo_file { read write ioctl }; class dir { read search getattr }; class file { read getattr execute execute_no_trans }; } #============= sysstat_t ============== allow sysstat_t file_t:dir { read search getattr }; allow sysstat_t file_t:file { read getattr execute execute_no_trans }; allow sysstat_t file_t:lnk_file read; allow sysstat_t init_t:fifo_file { read write ioctl };