#!/bin/bash path="${1}/modules/mem"; . $path/include.sh; # ------------------------------------------ # Remplissage de la base de données # Récupération des données dans /proc/ MemTotal="`cat /proc/meminfo|grep MemTotal|tr -s ' '|cut -d ' ' -f2`"; MemFree="`cat /proc/meminfo|grep MemFree|tr -s ' '|cut -d ' ' -f2`"; Buffers="`cat /proc/meminfo|grep Buffers:|tr -s ' '|cut -d ' ' -f2`"; Cached="`cat /proc/meminfo|grep Cached: -m1|tr -s ' '|cut -d ' ' -f2`"; Active="`cat /proc/meminfo|grep Active:|tr -s ' '|cut -d ' ' -f2`"; # Calcul des données MemUsed=$(($MemTotal-$MemFree)); RealUsed=$(($MemTotal-$MemFree-$Buffers-$Cached)); Free=$(($MemFree+$Buffers+$Cached)); $rrdtoolbin update $rrdfile N:$MemUsed:$RealUsed:$Free:$Buffers:$Cached:$Active; # ---------------------------------------- # Génération des variables suivant le type de graphe # time_name -> intitulé sur le png créé # average -> moyenne sur n minutes # prefix -> préfixe du fichier créé # time_warp -> décalage en secondes par rapport à l'instant présent case $2 in week) time_name="7 days"; average="30"; prefix="weekly"; time_warp="-s-604800";; month) time_name="30 days"; average="30"; prefix="monthly"; time_warp="-s-2592000";; year) time_name="one year"; average="30"; prefix="yearly"; time_warp="-s-31536000";; day) time_name="24 hours"; average="5"; prefix="daily"; time_warp="";; esac # On ne dessine les graphes que si un argument valide a été passé if [ -n "$prefix" ]; then # Génération réelle des graphes $rrdtoolbin graph $htmldir/mem_${prefix}.png \ --title="${time_name} memory usage (${average} minutes average) [kbytes]" \ -aPNG -h${g_height} -w${g_width} -l0 ${time_warp} -v kBytes -b1024\ -c "BACK#${out_colors[0]}" -c "SHADEA#${out_colors[1]}" -c "SHADEB#${out_colors[2]}" \ -c "FONT#${out_colors[3]}" -c "CANVAS#${out_colors[4]}" -c "GRID#${out_colors[5]}" \ -c "MGRID#${out_colors[6]}" -c "FRAME#${out_colors[7]}" -c "ARROW#${out_colors[8]}" \ DEF:MemUsed=$rrdfile:MemUsed:LAST \ DEF:RealUsed=$rrdfile:RealUsed:LAST \ DEF:MemFree=$rrdfile:MemFree:LAST \ DEF:MemBuffered=$rrdfile:MemBuffered:LAST \ DEF:MemCached=$rrdfile:MemCached:LAST \ DEF:MemActive=$rrdfile:MemActive:LAST \ CDEF:Mfree_2=MemFree,0.99,\*,RealUsed,+ AREA:Mfree_2#${mem_free[0]}:"Free\\t\\t" \ CDEF:Mfree_10=MemFree,0.90,\*,RealUsed,+ AREA:Mfree_10#${mem_free[1]} \ CDEF:Mfree_15=MemFree,0.85,\*,RealUsed,+ AREA:Mfree_15#${mem_free[2]} \ CDEF:Mfree_20=MemFree,0.80,\*,RealUsed,+ AREA:Mfree_20#${mem_free[3]} \ CDEF:Mfree_25=MemFree,0.75,\*,RealUsed,+ AREA:Mfree_25#${mem_free[4]} \ CDEF:Mfree_30=MemFree,0.70,\*,RealUsed,+ AREA:Mfree_30#${mem_free[5]} \ CDEF:Mfree_35=MemFree,0.65,\*,RealUsed,+ AREA:Mfree_35#${mem_free[6]} \ CDEF:Mfree_40=MemFree,0.60,\*,RealUsed,+ AREA:Mfree_40#${mem_free[7]} \ CDEF:Mfree_45=MemFree,0.55,\*,RealUsed,+ AREA:Mfree_45#${mem_free[8]} \ CDEF:Mfree_50=MemFree,0.50,\*,RealUsed,+ AREA:Mfree_50#${mem_free[9]} \ CDEF:Mfree_55=MemFree,0.45,\*,RealUsed,+ AREA:Mfree_55#${mem_free[10]} \ CDEF:Mfree_60=MemFree,0.40,\*,RealUsed,+ AREA:Mfree_60#${mem_free[11]} \ CDEF:Mfree_65=MemFree,0.35,\*,RealUsed,+ AREA:Mfree_65#${mem_free[12]} \ CDEF:Mfree_70=MemFree,0.30,\*,RealUsed,+ AREA:Mfree_70#${mem_free[13]} \ CDEF:Mfree_75=MemFree,0.25,\*,RealUsed,+ AREA:Mfree_75#${mem_free[14]} \ CDEF:Mfree_80=MemFree,0.20,\*,RealUsed,+ AREA:Mfree_80#${mem_free[15]} \ CDEF:Mfree_85=MemFree,0.15,\*,RealUsed,+ AREA:Mfree_85#${mem_free[16]} \ CDEF:Marker_2=MemFree,0.01,\*,RealUsed,+ AREA:Marker_2#FFFFFF \ GPRINT:MemFree:MAX:"Max\\: %2.lf kBytes" \ GPRINT:MemFree:AVERAGE:"Average\\: %2.lf kBytes" \ GPRINT:MemFree:LAST:"Current\\: %2.lf kBytes \\n" \ CDEF:Rused_2=RealUsed,0.99,\* AREA:Rused_2#${mem_used[16]} \ CDEF:Rused_10=RealUsed,0.90,\* AREA:Rused_10#${mem_used[15]} \ CDEF:Rused_15=RealUsed,0.85,\* AREA:Rused_15#${mem_used[14]} \ CDEF:Rused_20=RealUsed,0.80,\* AREA:Rused_20#${mem_used[13]} \ CDEF:Rused_25=RealUsed,0.75,\* AREA:Rused_25#${mem_used[12]} \ CDEF:Rused_30=RealUsed,0.70,\* AREA:Rused_30#${mem_used[11]} \ CDEF:Rused_35=RealUsed,0.65,\* AREA:Rused_35#${mem_used[10]} \ CDEF:Rused_40=RealUsed,0.60,\* AREA:Rused_40#${mem_used[9]} \ CDEF:Rused_45=RealUsed,0.55,\* AREA:Rused_45#${mem_used[8]} \ CDEF:Rused_50=RealUsed,0.50,\* AREA:Rused_50#${mem_used[7]} \ CDEF:Rused_55=RealUsed,0.45,\* AREA:Rused_55#${mem_used[6]} \ CDEF:Rused_60=RealUsed,0.40,\* AREA:Rused_60#${mem_used[5]} \ CDEF:Rused_65=RealUsed,0.35,\* AREA:Rused_65#${mem_used[4]} \ CDEF:Rused_70=RealUsed,0.30,\* AREA:Rused_70#${mem_used[3]} \ CDEF:Rused_75=RealUsed,0.25,\* AREA:Rused_75#${mem_used[2]} \ CDEF:Rused_80=RealUsed,0.20,\* AREA:Rused_80#${mem_used[1]} \ CDEF:Rused_85=RealUsed,0.15,\* AREA:Rused_85#${mem_used[0]}:"Really used\\t" \ GPRINT:RealUsed:MAX:"Max\\: %2.lf kBytes" \ GPRINT:RealUsed:AVERAGE:"Average\\: %2.lf kBytes" \ GPRINT:RealUsed:LAST:"Current\\: %2.lf kBytes \\n" \ LINE3:MemUsed#${color[0]} \ LINE1:MemUsed#${color[1]}:"Used\\t\\t" \ GPRINT:MemUsed:MAX:"Max\\: %2.lf kBytes" \ GPRINT:MemUsed:AVERAGE:"Average\\: %2.lf kBytes" \ GPRINT:MemUsed:LAST:"Current\\: %2.lf kBytes \\n" \ LINE3:MemBuffered#${color[2]} \ LINE1:MemBuffered#${color[3]}:"Buffered\\t\\t" \ GPRINT:MemBuffered:MAX:"Max\\: %2.lf kBytes" \ GPRINT:MemBuffered:AVERAGE:"Average\\: %2.lf kBytes" \ GPRINT:MemBuffered:LAST:"Current\\: %2.lf kBytes \\n" \ LINE3:MemCached#${color[4]} \ LINE1:MemCached#${color[5]}:"Cached\\t\\t" \ GPRINT:MemCached:MAX:"Max\\: %2.lf kBytes" \ GPRINT:MemCached:AVERAGE:"Average\\: %2.lf kBytes" \ GPRINT:MemCached:LAST:"Current\\: %2.lf kBytes \\n" \ LINE3:MemActive#${color[6]} \ LINE1:MemActive#${color[7]}:"Active\\t\\t" \ GPRINT:MemActive:MAX:"Max\\: %2.lf kBytes" \ GPRINT:MemActive:AVERAGE:"Average\\: %2.lf kBytes" \ GPRINT:MemActive:LAST:"Current\\: %2.lf kBytes \\n" \ CDEF:nodat=MemUsed,UN,INF,UNKN,IF \ AREA:nodat#444444:"NoData \\n" \ COMMENT:"Last update \\: `date|sed -e 's/:/\\\\:/g'`\r" fi;