稼働時間・ロードアベレージ・メモリ使用状況・ディスクの使用状況・vmstatの一部結果を表示する。
#!/bin/sh
# ---------------------------------
# Process Check CGI
# ---------------------------------
# Version : 1.2
# update : 2008.01.29
#
export LANG=C
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
# Set
OUTPATH="/usr/local/apache/htdocs/temp"
# System
DATE=`date +%Y%m%d`
OUTFILE="proc_"$DATE".html"
OUTFILE="proc.html"
OUTPUT=$OUTPATH"/"$OUTFILE
TEMP=$OUTPATH"/mdstat-temp.txt"
# Base
SERVER=`hostname`
DATEFULL=`date +%Y/%m/%d\ %H:%M:%S`
# HTML Header
cat <<EOF > $OUTPUT
<HTML>
<HEAD>
<META NAME="robots" CONTENT="none; charset=shift_jis">
<TITLE>$SERVER - System Status</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<CENTER>
<HR>
$SERVER - System Status - <BR>
<HR>
UPDATE: $DATEFULL <BR>
<BR>
EOF
## Load Avarage
UPTIME=`uptime | awk '{printf "%s%s %s",$3,$4,$1}' | sed "s/,//g"`
LA1=`uptime | awk '{print $10}' | sed "s/,//g"`
LA5=`uptime | awk '{print $11}' | sed "s/,//g"`
LA15=`uptime | awk '{print $12}' | sed "s/,//g"`
LA1C="FFFFFF"
LA2C="FFFFFF"
LA3C="FFFFFF"
cat <<EOF >> $OUTPUT
<TABLE border=1>
<TR><TD bgcolor=AAAAAA>連続稼働時間</TD><TD align=center width=120>$UPTIME</TD></TR>
</TABLE>
<BR>
<TABLE border=1>
<TR><TD bgcolor=AAAAAA>負荷状況(1/5/15min)</TD><TD align=center width="50" bgcolor= $LA1C>$LA1</TD><TD align=center width="50" bgcolor=$LA2C> $LA5 </TD><TD align=cente r width="50" bgcolor=$LA3C> $LA15 </TD</TR>
</TABLE>
$LA3A
<BR>
EOF
# Memory
echo "<TABLE border=1>" >> $OUTPUT
echo "<TR bgcolor=AAAAAA><TD align=center width=100>種類</TD><TD align=center width=100>総容量</TD><TD align=center width=100>使用容量</TD><TD align=center width=100>空き容量</TD></TR>" >> $OUTPUT
free -m | grep "Mem" | awk '{printf "<TR><TD>Physical Mem</TD><TD align=right>%s MB</TD><TD align=right>%s MB</TD><TD align=right>%s MB</TD></TR>",$2,$3,$4}' >> $OUTPUT
free -m | grep "Swap" | awk '{printf "<TR><TD>Swap Mem</TD><TD align=right>%s MB</TD><TD align=right>%s MB</TD><TD align=right>%s MB</TD></TR>",$2,$3,$4}' >> $OUTPUT
echo "</TABLE><BR>" >> $OUTPUT
# Disk Space
echo "<TABLE border=1>" >> $OUTPUT
echo "<TR bgcolor=AAAAAA><TD width=70>マウント</TD><TD width=70>デバイス</TD><TD align=center width=70>使用率</TD><TD align=center width=100>総容量</TD><TD align=center width=100>使用容量</TD><TD align=center width=100>空き容量</TD></TR>" >> $OUTPUT
df -m | grep -v none | grep -v Filesystem | grep \/dev | sed "s/%//g" | sort | awk '{printf "<TR><TD>%s</TD><TD>%s</TD><TD align=right>%s %</TD><TD align=right>%s MB</TD><TD align=right>%s MB</TD><TD align=right>%s MB</TD></TR>\n",$6,$1,$5,$2,$3,$4}' >> $OUTPUT
echo "</TABLE><BR>" >> $OUTPUT
#vmstat
echo "<TABLE border=1>" >> $OUTPUT
echo "<TR bgcolor=AAAAAA><TD align=center width=100 colspan=2>プロセス</TD><TD align=center width=100 colspan=2>IO負荷</TD><TD align=center width=350 colspan=6>システム負荷</TD></TR>" >> $OUTPUT
vmstat -n | grep -v procs | awk '{printf "<TR align=center ><TD align=center width="20">%s</TD><TD align=center width="20">%s</TD><TD align=center width="20">%s</TD><TD align=center width="20">%s</TD><TD align=center width="20">%s</TD><TD align=center width="20">%s</TD><TD align=center width="20">%s</TD><TD align=center width="20">%s</TD><TD align=center width="20">%s</TD><TD align=center width="20">%s</TD>",$1,$2,$9,$10,$11,$12,$13,$14,$15,$16}' >> $OUTPUT
echo "</TABLE><BR>" >> $OUTPUT
cat <<EOF >> $OUTPUT
<TABLE>
<TR><TD colspan="2">vmstatの読み方</TD></TR>
<TR><TD>r:</TD><TD>CPU へのアクセスを待っているプロセスの数</TD></TR>
<TR><TD>b:</TD><TD>割り込み不可能なスリープ状態にあるプロセス数</TD></TR>
<TR><TD>bi:</TD><TD>ブロックデバイスから受け取ったブロック (blocks/s)。</TD></TR>
<TR><TD>bo:</TD><TD>ブロックデバイスに送られたブロック (blocks/s)。</TR>
<TR><TD>in:</TD><TD>一秒あたりの割り込み回数。クロック割り込みも含む。</TR>
<TR><TD>cs:</TD><TD>一秒あたりのコンテキストスイッチの回数。</TR>
<TR><TD>us:</TD><TD>カーネルコード以外の実行に使用した時間 (ユーザー時間、nice 時間を含む)。</TR>
<TR><TD>sy:</TD><TD>カーネルコードの実行に使用した時間 (システム時間)。</TR>
<TR><TD>id:</TD><TD>アイドル時間。Linux 2.5.41 以前では、IO 待ち時間を含んでいる。</TR>
<TR><TD>wa:</TD><TD>IO 待ち時間。Linux 2.5.41 以前では、0 と表示される。</TR>
</TABLE>
EOF
# HTML Footer
cat <<EOF >> $OUTPUT
</CENTER>
</BODY>
</HTML>
EOF
## ReMark
#mv $OUTPUT $TEMP
#sed 's/>active/ bgcolor=00FF00>active/g' $TEMP > $OUTPUT
#rm $TEMP
#mv $OUTPUT $TEMP
#sed 's/>inactive<\/TD>/ bgcolor=FF5555>inactive<\/TD>/g' $TEMP > $OUTPUT
#rm $TEMP
#mv $OUTPUT $TEMP
#sed 's/>F/ bgcolor=FF5555>/g' $TEMP > $OUTPUT
#rm $TEMP
#mv $OUTPUT $TEMP
#sed 's/<TD><\/TD>/<TD>-<\/TD>/g' $TEMP > $OUTPUT
#rm $TEMP
# End
echo Content-type: text/html
echo
cat $OUTPUT
rm -f $TEMP
rm -f $OUTPUT
# EOF