Server IP : 85.214.239.14 / Your IP : 3.23.92.50 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /proc/2/task/2/root/proc/2/root/usr/share/doc/sysstat/examples/ |
Upload File : |
#!/bin/bash set -e # Our dependencies - bail out if they are not found SADF=`which sadf` GNUPLOT=`which gnuplot` # Default for --sa-file is today's file # (by default sadf will show today's logs) SA_FILE="" # Default for --sa-dir SA_DIR="/var/log/sysstat" # Default for --type GRAPH_TYPE=CPU GNUPLOT_TERMINAL="pngcairo font \"Sans,8\" size 640,320" SAFILES_REGEX='/sar?[0-9]{2,8}(\.(Z|gz|bz2|xz|lz|lzo))?$' GRAPH_TYPES="cpu,mem,io" print_usage() { echo " Usage sargraph2 [--type $GRAPH_TYPES] [--sa-file INFILE] [--output OUTFILE] Examples To plot CPU for today no arguments are needed: sargraph2 To plot MEM for 20150330: sargraph2 --type mem --sa-file /var/log/sysstat/sa20150330.gz To plot I/O for 20150330 to a PNG file: sargraph2 --type io --sa-file /var/log/sysstat/sa20150330.gz --output io.png " } ######### OPTION PARSING ########### parsed_opts=`getopt -o "h" \ -l help,sa-dir:,sa-file:,output:,type: \ -- "$@"` eval set -- "$parsed_opts" DONE=no while [ $DONE != yes ] do case $1 in -h|--help) print_usage exit shift ;; --sa-dir) shift SA_DIR="$1" ;; --sa-file) shift SA_FILE="$1" ;; --output) shift OUT_FILE="$1" ;; --type) shift GRAPH_TYPE=`echo $1 | tr a-z A-Z` ;; --) # End of options DONE=yes ;; *) echo Unexpected argument: $1 exit 1 ;; esac shift # should shift the last arg or '--' if DONE=yes done #################################### # Decompress a file to another, or just copy it if not compressed decompress_copy() { if [ x$# != x2 ] then echo "Function decompress_copy requires 2 arguments but got $#: $*" return 1 fi if [ -f "$1" ] then case "$1" in *.Z) uncompress -c "$1" > "$2" ;; *.gz) gzip -dc "$1" > "$2" ;; *.bz2) bzip2 -dc "$1" > "$2" ;; *.xz) xz -dc "$1" > "$2" ;; *.lz) lzip -dc "$1" > "$2" ;; *.lzo) lzop -dc "$1" > "$2" ;; *) cp "$1" "$2" ;; esac else echo "$1: file not found" 1>&2 return 1 fi } # TODO send systemd patch #soupermouf;60;2015-04-01 04:24:00;-1;5.77;0.00;2.10;0.63;0.00;91.50 #soupermouf;26846;2015-04-01 11:51:26;-1;0.00;0.00;0.00;0.00;0.00;0.00 #soupermouf;60;2015-04-01 11:52:26;-1;7.11;0.01;2.69;68.44;0.00;21.75 cpu_gnuplot() # %iowait,%user,%nice,%system,%steal { # First make sure that the columns are where we expect them to be HEADER=`grep -Ev ';LINUX-RESTART|;COM' $2 | head -1 | cut -d ';' -f 5-10` EXPECTED="%user;%nice;%system;%iowait;%steal;%idle" if [ "$HEADER" != "$EXPECTED" ] then echo "Headers not in right order: $HEADER" 1>&2 exit 1 fi cat > $1 <<EOF set title "sar -u" set xdata time set format x "%H:%M" set ylabel "Percentage" set yrange [0:100] set timefmt "%Y-%m-%d %H:%M:%S" set datafile separator ";" plot \ "$2" using 3:(\$9+\$7+\$6+\$5+\$8) title "%iowait" with filledcurves x1 linecolor rgb "light-gray", \ "$2" using 3:(\$9+\$7+\$6+\$5) title "%user" with filledcurves x1 linecolor rgb "dark-green", \ "$2" using 3:(\$9+\$7+\$6) title "%nice" with filledcurves x1 linecolor rgb "greenyellow", \ "$2" using 3:(\$9+\$7) title "%system" with filledcurves x1 linecolor rgb "red", \ "$2" using 3:(\$9) title "%steal" with filledcurves x1 linecolor rgb "purple" EOF } mem_gnuplot() # free,used,buffers,cached / %commit,%swpused { # First make sure that the columns are where we expect them to be HEADER=`grep -Ev ';LINUX-RESTART|;COM' $2 | head -1 | cut -d ';' -f 4-10` EXPECTED="kbmemfree;kbmemused;%memused;kbbuffers;kbcached;kbcommit;%commit" if [ "$HEADER" != "$EXPECTED" ] then echo "Headers not in right order: $HEADER" 1>&2 exit 1 fi HEADER=`grep -Ev ';LINUX-RESTART|;COM' $3 | head -1 | cut -d ';' -f 4-6` EXPECTED="kbswpfree;kbswpused;%swpused" if [ "$HEADER" != "$EXPECTED" ] then echo "Headers not in right order: $HEADER" 1>&2 exit 1 fi cat > $1 <<EOF set title "sar -r" set xdata time set format x "%H:%M" set ylabel "Memory Usage in MB" set yrange [0:] set y2label "Percentage" set y2range [0:] set y2tics set timefmt "%Y-%m-%d %H:%M:%S" set datafile separator ";" set key on bottom center opaque plot \ "$2" using 3:((\$5+\$4)/1024) title "free" with filledcurves x1 linecolor rgb "light-gray", \ "$2" using 3:((\$5)/1024) title "cached" with filledcurves x1 linecolor rgb "dark-green", \ "$2" using 3:((\$5-\$8)/1024) title "buffers" with filledcurves x1 linecolor rgb "greenyellow", \ "$2" using 3:((\$5-\$8-\$7)/1024) title "used" with filledcurves x1 linecolor rgb "red", \ \ "$2" using 3:(\$10) title "%commit" with lines linecolor rgb "blue" linewidth 2 axes x1y2, \ "$3" using 3:(\$6) title "%swpused" with lines linecolor rgb "dark-magenta" linewidth 2 axes x1y2 EOF } io_gnuplot() # %KBr/s,KBw/s / rIOPS,wIOPS { # First make sure that the columns are where we expect them to be HEADER=`grep -Ev ';LINUX-RESTART|;COM' $2 | head -1 | cut -d ';' -f 4-8` EXPECTED="tps;rtps;wtps;bread/s;bwrtn/s" if [ "$HEADER" != "$EXPECTED" ] then echo "Headers not in right order: $HEADER" 1>&2 exit 1 fi cat > $1 <<EOF set title "sar -b" set xdata time set format x "%H:%M" set ylabel "MB/s" set yrange [0:] set y2label "IOPS" set y2range [0:] set y2tics set timefmt "%Y-%m-%d %H:%M:%S" set datafile separator ";" plot \ "$2" using 3:((\$8+\$7)/2/1024) title "rMB/s" with filledcurves x1 linecolor rgb "dark-green", \ "$2" using 3:((\$8)/2/1024) title "wMB/s" with filledcurves x1 linecolor rgb "dark-red", \ \ "$2" using 3:(\$4) title "rIOPS" with lines linecolor rgb "light-green" linewidth 2 axes x1y2, \ "$2" using 3:(\$6) title "wIOPS" with lines linecolor rgb "light-red" linewidth 2 axes x1y2 EOF } if [ x"$OUT_FILE" = x ] then # no --output passed, INTERACTIVE mode GNUPLOT_OPTS="-persist" else GNUPLOT_OPTS="-e 'set terminal $GNUPLOT_TERMINAL; set output \"$OUT_FILE\"'" fi if [ x"$SA_FILE" != x ] then # Decompress the SA file if it's compressed PLAIN_SA_FILE=`mktemp` decompress_copy "$SA_FILE" $PLAIN_SA_FILE else # If the user passed no parameter PLAIN_SA_FILE="" fi unset SA_FILE DATAFILE=`mktemp` DATAFILE2=`mktemp` GNUPLOTFILE=`mktemp` case "$GRAPH_TYPE" in "CPU") $SADF -t -d -C $PLAIN_SA_FILE -- -u > $DATAFILE cpu_gnuplot $GNUPLOTFILE $DATAFILE ;; "MEM") $SADF -t -d -C $PLAIN_SA_FILE -- -r > $DATAFILE $SADF -t -d -C $PLAIN_SA_FILE -- -S > $DATAFILE2 mem_gnuplot $GNUPLOTFILE $DATAFILE $DATAFILE2 ;; "IO") $SADF -t -d -C $PLAIN_SA_FILE -- -b > $DATAFILE io_gnuplot $GNUPLOTFILE $DATAFILE ;; *) echo "Unknown graph type, supported types are: $GRAPH_TYPES" 1>&2 exit 1 esac eval $GNUPLOT $GNUPLOT_OPTS $GNUPLOTFILE [ -f "$PLAIN_SA_FILE" ] && rm $PLAIN_SA_FILE [ -f "$GNUPLOTFILE" ] && rm $GNUPLOTFILE [ -f "$DATAFILE" ] && rm $DATAFILE [ -f "$DATAFILE2" ] && rm $DATAFILE2 exit # Local Variables: # sh-basic-offset: 4 # indent-tabs-mode: nil # sh-indent-for-case-label: 0 # sh-indent-for-case-alt: + # End: