Skip to content

Instantly share code, notes, and snippets.

@bageljp
Last active August 29, 2015 14:03
Show Gist options
  • Save bageljp/02cf321652729a359441 to your computer and use it in GitHub Desktop.
Save bageljp/02cf321652729a359441 to your computer and use it in GitHub Desktop.
#!/bin/bash
#------------------------------------------------------------------------------------------------------------------------
# cron setting:
# */3 * * * * /root/resource.bash > /dev/null 2>&1
#------------------------------------------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------------------------------------------
# ENVIRONMENT
#------------------------------------------------------------------------------------------------------------------------
DIR_LOG="/tmp/`basename $0 .bash`"
LOGFILE="${DIR_LOG}/`basename $0 .bash`.log"
STAT_INTERVAL=1
STAT_CONT=5
#------------------------------------------------------------------------------------------------------------------------
# FUNCTION
#------------------------------------------------------------------------------------------------------------------------
func_top() {
DIR_LOG_FUNC="${DIR_LOG}/top/"
LOGFILE_FUNC="${DIR_LOG_FUNC}/`date +%Y%m%d`.log"
[ ! -d ${DIR_LOG_FUNC} ] && mkdir -p ${DIR_LOG_FUNC}
echo "### TOP : `date +'%Y/%m/%d %H:%M:%S'` ###" >> ${LOGFILE_FUNC}_top 2>&1
echo "=============================================================================" >> ${LOGFILE_FUNC}_top 2>&1
top -b -n 1 >> ${LOGFILE_FUNC}_top 2>&1
echo "=============================================================================" >> ${LOGFILE_FUNC}_top 2>&1
return 0
}
func_iotop() {
DIR_LOG_FUNC="${DIR_LOG}/iotop/"
LOGFILE_FUNC="${DIR_LOG_FUNC}/`date +%Y%m%d`.log"
[ ! -d ${DIR_LOG_FUNC} ] && mkdir -p ${DIR_LOG_FUNC}
echo "### IOTOP : `date +'%Y/%m/%d %H:%M:%S'` ###" >> ${LOGFILE_FUNC}_iotop 2>&1
echo "=============================================================================" >> ${LOGFILE_FUNC}_iotop 2>&1
iotop -bt -n 1 >> ${LOGFILE_FUNC}_iotop 2>&1
echo "=============================================================================" >> ${LOGFILE_FUNC}_iotop 2>&1
return 0
}
func_ps() {
DIR_LOG_FUNC="${DIR_LOG}/ps/"
LOGFILE_FUNC="${DIR_LOG_FUNC}/`date +%Y%m%d`.log"
[ ! -d ${DIR_LOG_FUNC} ] && mkdir -p ${DIR_LOG_FUNC}
echo "### PS : `date +'%Y/%m/%d %H:%M:%S'` ###" >> ${LOGFILE_FUNC}_ps 2>&1
echo "=============================================================================" >> ${LOGFILE_FUNC}_ps 2>&1
ps auxww >> ${LOGFILE_FUNC}_ps 2>&1
echo "=============================================================================" >> ${LOGFILE_FUNC}_ps 2>&1
return 0
}
func_ps_child() {
DIR_LOG_FUNC="${DIR_LOG}/ps_child/"
LOGFILE_FUNC="${DIR_LOG_FUNC}/`date +%Y%m%d`.log"
[ ! -d ${DIR_LOG_FUNC} ] && mkdir -p ${DIR_LOG_FUNC}
echo "### PS CHILD : `date +'%Y/%m/%d %H:%M:%S'` ###" >> ${LOGFILE_FUNC}_ps_child 2>&1
echo "=============================================================================" >> ${LOGFILE_FUNC}_ps_child 2>&1
ps -aef >> ${LOGFILE_FUNC}_ps_child 2>&1
echo "=============================================================================" >> ${LOGFILE_FUNC}_ps_child 2>&1
return 0
}
func_vmstat() {
DIR_LOG_FUNC="${DIR_LOG}/vmstat/"
LOGFILE_FUNC="${DIR_LOG_FUNC}/`date +%Y%m%d`.log"
[ ! -d ${DIR_LOG_FUNC} ] && mkdir -p ${DIR_LOG_FUNC}
echo "### VMSTAT : `date +'%Y/%m/%d %H:%M:%S'` ###" >> ${LOGFILE_FUNC}_vmstat 2>&1
echo "=============================================================================" >> ${LOGFILE_FUNC}_vmstat 2>&1
vmstat ${STAT_INTERVAL} ${STAT_CONT} >> ${LOGFILE_FUNC}_vmstat 2>&1
echo "=============================================================================" >> ${LOGFILE_FUNC}_vmstat 2>&1
return 0
}
func_mpstat() {
DIR_LOG_FUNC="${DIR_LOG}/mpstat/"
LOGFILE_FUNC="${DIR_LOG_FUNC}/`date +%Y%m%d`.log"
[ ! -d ${DIR_LOG_FUNC} ] && mkdir -p ${DIR_LOG_FUNC}
echo "### MPSTAT : `date +'%Y/%m/%d %H:%M:%S'` ###" >> ${LOGFILE_FUNC}_mpstat 2>&1
echo "=============================================================================" >> ${LOGFILE_FUNC}_mpstat 2>&1
mpstat -P ALL ${STAT_INTERVAL} ${STAT_CONT} >> ${LOGFILE_FUNC}_mpstat 2>&1
echo "=============================================================================" >> ${LOGFILE_FUNC}_mpstat 2>&1
return 0
}
func_iostat() {
DIR_LOG_FUNC="${DIR_LOG}/iostat/"
LOGFILE_FUNC="${DIR_LOG_FUNC}/`date +%Y%m%d`.log"
[ ! -d ${DIR_LOG_FUNC} ] && mkdir -p ${DIR_LOG_FUNC}
echo "### IOSTAT : `date +'%Y/%m/%d %H:%M:%S'` ###" >> ${LOGFILE_FUNC}_iostat 2>&1
echo "=============================================================================" >> ${LOGFILE_FUNC}_iostat 2>&1
iostat -kx ${STAT_INTERVAL} ${STAT_CONT} >> ${LOGFILE_FUNC}_iostat 2>&1
echo "=============================================================================" >> ${LOGFILE_FUNC}_iostat 2>&1
return 0
}
func_pidstat() {
DIR_LOG_FUNC="${DIR_LOG}/pidstat/"
LOGFILE_FUNC="${DIR_LOG_FUNC}/`date +%Y%m%d`.log"
[ ! -d ${DIR_LOG_FUNC} ] && mkdir -p ${DIR_LOG_FUNC}
echo "### PIDSTAT : `date +'%Y/%m/%d %H:%M:%S'` ###" >> ${LOGFILE_FUNC}_pidstat 2>&1
echo "=============================================================================" >> ${LOGFILE_FUNC}_pidstat 2>&1
pidstat -u >> ${LOGFILE_FUNC}_pidstat 2>&1
echo "=============================================================================" >> ${LOGFILE_FUNC}_pidstat 2>&1
return 0
}
func_netstat() {
DIR_LOG_FUNC="${DIR_LOG}/netstat/"
LOGFILE_FUNC="${DIR_LOG_FUNC}/`date +%Y%m%d`.log"
[ ! -d ${DIR_LOG_FUNC} ] && mkdir -p ${DIR_LOG_FUNC}
echo "### NETSTAT : `date +'%Y/%m/%d %H:%M:%S'` ###" >> ${LOGFILE_FUNC}_netstat 2>&1
echo "=============================================================================" >> ${LOGFILE_FUNC}_netstat 2>&1
netstat -s ${STAT_INTERVAL} ${STAT_CONT} >> ${LOGFILE_FUNC}_netstat 2>&1
echo "=============================================================================" >> ${LOGFILE_FUNC}_netstat 2>&1
return 0
}
func_dstat() {
DIR_LOG_FUNC="${DIR_LOG}/dstat/"
LOGFILE_FUNC="${DIR_LOG_FUNC}/`date +%Y%m%d`.log"
[ ! -d ${DIR_LOG_FUNC} ] && mkdir -p ${DIR_LOG_FUNC}
echo "### DSTAT : `date +'%Y/%m/%d %H:%M:%S'` ###" >> ${LOGFILE_FUNC}_dstat 2>&1
echo "=============================================================================" >> ${LOGFILE_FUNC}_dstat 2>&1
dstat -tplycmsdnf ${STAT_INTERVAL} ${STAT_CONT} >> ${LOGFILE_FUNC}_dstat 2>&1
echo "=============================================================================" >> ${LOGFILE_FUNC}_dstat 2>&1
return 0
}
func_dstat_ps() {
DIR_LOG_FUNC="${DIR_LOG}/dstat_ps/"
LOGFILE_FUNC="${DIR_LOG_FUNC}/`date +%Y%m%d`.log"
[ ! -d ${DIR_LOG_FUNC} ] && mkdir -p ${DIR_LOG_FUNC}
echo "### DSTAT PROCESS : `date +'%Y/%m/%d %H:%M:%S'` ###" >> ${LOGFILE_FUNC}_dstat_ps 2>&1
echo "=============================================================================" >> ${LOGFILE_FUNC}_dstat_ps 2>&1
dstat --top-cpu --top-cputime --top-cputime-avg --top-mem --top-oom --top-bio --top-io --top-latency --top-latency-avg ${STAT_INTERVAL} ${STAT_CONT} >> ${LOGFILE_FUNC}_dstat_ps 2>&1
echo "=============================================================================" >> ${LOGFILE_FUNC}_dstat_ps 2>&1
return 0
}
#------------------------------------------------------------------------------------------------------------------------
# MAIN
#------------------------------------------------------------------------------------------------------------------------
[ ! -d ${DIR_LOG} ] && mkdir -p ${DIR_LOG}
echo "### START : `date +'%Y/%m/%d %H:%M:%S'` ###" >> ${LOGFILE} 2>&1
func_top
func_iotop
func_ps
func_ps_child
func_vmstat
func_mpstat
func_iostat
func_pidstat
func_netstat
func_dstat
func_dstat_ps
echo "### END : `date +'%Y/%m/%d %H:%M:%S'` ###" >> ${LOGFILE} 2>&1
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment