Monitor Component CPU and Memory Usage
MySQL Tuner provides useful diagnostics and recommendations on MySQL settings. See MySQL Tuner for more information.
To monitor the CPU and memory usage of the running components of a Moogsoft Onprem system, you can run the following script that offers simple CPU and memory monitoring of the RabbitMQ, Socket LAM, Moogfarmd, Tomcat and MySQL processes:
#!/bin/bash SLEEPTIME=$1 f_return_metrics() { PROCPID=$1 TOPOUTPUT=`top -p $PROCPID -n1 | tail -2 | head -1 |sed 's/[^ ]\+\s\(.*\)/\1/g'` PROCICPU=`echo $TOPOUTPUT| awk '{print $8}'` if [ "$PROCICPU" == "S" ]; then PROCICPU=`echo $TOPOUTPUT| awk '{print $9}'`;fi PROCPCPU=`ps -p $PROCPID -o pcpu|tail -1|awk '{print $1}'` PROCMEM=`ps -p $PROCPID -o rss|tail -1|awk '{print $1}'` echo $PROCICPU,$PROCPCPU,$PROCMEM } #Capture PIDs RABBITPID=`ps -ef|grep beam|grep -v grep|awk '{print $2}'` LAMPID=`ps -ef|grep socket_lam|grep java|grep -v grep|awk '{print $2}'` MYSQLPID=`ps -ef|grep mysqld|grep -v mysqld_safe|grep -v grep|awk '{print $2}'` TOMCATPID=`ps -ef|grep tomcat|grep java|grep -v grep|awk '{print $2}'` FARMDPID=`ps -ef|grep moog_farmd|grep java|grep -v grep|awk '{print $2}'` echo "DATE,TIME,RABBITICPU(%),RABBITPCPU(%),RABBITRSS(Kb),LAMICPU(%),LAMPCPU(%),LAMRSS(Kb),FARMDICPU(%),FARMDPCPU(%),FARMDRSS(Kb),TOMCATICPU(%),TOMCATPCPU(%),TOMCATRSS(Kb),MYSQLICPU(%),MYSQLPCPU(%),MYSQLRSS(Kb)" while [ true ]; do DATENOW=`date +"%m-%d-%y"` TIMENOW=`date +"%T"` RABBITMEAS=$(f_return_metrics $RABBITPID) LAMMEAS=$(f_return_metrics $LAMPID) FARMDMEAS=$(f_return_metrics $FARMDPID) TOMCATMEAS=$(f_return_metrics $TOMCATPID) MYSQLMEAS=$(f_return_metrics $MYSQLPID) TOMCATMEAS=$(f_return_metrics $TOMCATPID) echo "$DATENOW,$TIMENOW,$RABBITMEAS,$LAMMEAS,$FARMDMEAS,$TOMCATMEAS,$MYSQLMEAS" sleep $SLEEPTIME done
Sample Usage and Output
[root@ldev04 640]# ./perfmon.sh 5 DATE,TIME,RABBITICPU(%),RABBITPCPU(%),RABBITRSS(Kb),LAMICPU(%),LAMPCPU(%),LAMRSS(Kb),FARMDICPU(%),FARMDPCPU(%),FARMDRSS(Kb),TOMCATICPU(%),TOMCATPCPU(%),TOMCATRSS(Kb),MYSQLICPU(%),MYSQLPCPU(%),MYSQLRSS(Kb) 05-10-18,22:44:26,28.0,8.5,203068,2.0,1.0,557092,20.0,13.5,2853408,4.0,2.1,5680584,28.0,17.4,9657152 05-10-18,22:44:34,14.0,8.5,183492,4.0,1.0,557092,16.0,13.5,2850484,0.0,2.1,5680584,33.9,17.4,9657152 05-10-18,22:44:43,0.0,8.5,181072,0.0,1.0,557092,0.0,13.5,2850484,0.0,2.1,5680584,4.0,17.4,9658312 05-10-18,22:44:51,12.0,8.5,181040,0.0,1.0,557092,0.0,13.5,2850484,0.0,2.1,5680584,4.0,17.4,9658312 05-10-18,22:44:59,0.0,8.5,181040,0.0,1.0,557092,0.0,13.4,2850484,0.0,2.1,5680584,0.0,17.4,9658312
Notes:
Notes
The script only outputs to the console, so you should redirect the output to a file for logging results.
Output is in csv format.
ICPU = "Instantaneous CPU Usage (%)"
PCPU = "Percentage of CPU usage since process startup (%)"
RSS = "Resident Set Size i.e. Memory Usage in Kb"
For CPU measurements a measure of 100% represents all of one processor so results > 100% are achievable for multi-threaded processes.
Other Utilities
MySQLTuner provides useful diagnostics and recommendations on MySQL settings. See MySQL Tuner for more information.
To monitor the CPU and memory usage of the running components of a Moogsoft Onprem system, you can run the following script that offers simple CPU and memory monitoring of the RabbitMQ, Socket LAM, Moogfarmd, Tomcat and MySQL processes:
#!/bin/bash SLEEPTIME=$1 f_return_metrics() { PROCPID=$1 TOPOUTPUT=`top -p $PROCPID -n1 | tail -2 | head -1 |sed 's/[^ ]\+\s\(.*\)/\1/g'` PROCICPU=`echo $TOPOUTPUT| awk '{print $8}'` if [ "$PROCICPU" == "S" ]; then PROCICPU=`echo $TOPOUTPUT| awk '{print $9}'`;fi PROCPCPU=`ps -p $PROCPID -o pcpu|tail -1|awk '{print $1}'` PROCMEM=`ps -p $PROCPID -o rss|tail -1|awk '{print $1}'` echo $PROCICPU,$PROCPCPU,$PROCMEM } #Capture PIDs RABBITPID=`ps -ef|grep beam|grep -v grep|awk '{print $2}'` LAMPID=`ps -ef|grep socket_lam|grep java|grep -v grep|awk '{print $2}'` MYSQLPID=`ps -ef|grep mysqld|grep -v mysqld_safe|grep -v grep|awk '{print $2}'` TOMCATPID=`ps -ef|grep tomcat|grep java|grep -v grep|awk '{print $2}'` FARMDPID=`ps -ef|grep moog_farmd|grep java|grep -v grep|awk '{print $2}'` echo "DATE,TIME,RABBITICPU(%),RABBITPCPU(%),RABBITRSS(Kb),LAMICPU(%),LAMPCPU(%),LAMRSS(Kb),FARMDICPU(%),FARMDPCPU(%),FARMDRSS(Kb),TOMCATICPU(%),TOMCATPCPU(%),TOMCATRSS(Kb),MYSQLICPU(%),MYSQLPCPU(%),MYSQLRSS(Kb)" while [ true ]; do DATENOW=`date +"%m-%d-%y"` TIMENOW=`date +"%T"` RABBITMEAS=$(f_return_metrics $RABBITPID) LAMMEAS=$(f_return_metrics $LAMPID) FARMDMEAS=$(f_return_metrics $FARMDPID) TOMCATMEAS=$(f_return_metrics $TOMCATPID) MYSQLMEAS=$(f_return_metrics $MYSQLPID) TOMCATMEAS=$(f_return_metrics $TOMCATPID) echo "$DATENOW,$TIMENOW,$RABBITMEAS,$LAMMEAS,$FARMDMEAS,$TOMCATMEAS,$MYSQLMEAS" sleep $SLEEPTIME done
Example usage and output:
[root@ldev04 640]# ./perfmon.sh 5 DATE,TIME,RABBITICPU(%),RABBITPCPU(%),RABBITRSS(Kb),LAMICPU(%),LAMPCPU(%),LAMRSS(Kb),FARMDICPU(%),FARMDPCPU(%),FARMDRSS(Kb),TOMCATICPU(%),TOMCATPCPU(%),TOMCATRSS(Kb),MYSQLICPU(%),MYSQLPCPU(%),MYSQLRSS(Kb) 05-10-18,22:44:26,28.0,8.5,203068,2.0,1.0,557092,20.0,13.5,2853408,4.0,2.1,5680584,28.0,17.4,9657152 05-10-18,22:44:34,14.0,8.5,183492,4.0,1.0,557092,16.0,13.5,2850484,0.0,2.1,5680584,33.9,17.4,9657152 05-10-18,22:44:43,0.0,8.5,181072,0.0,1.0,557092,0.0,13.5,2850484,0.0,2.1,5680584,4.0,17.4,9658312 05-10-18,22:44:51,12.0,8.5,181040,0.0,1.0,557092,0.0,13.5,2850484,0.0,2.1,5680584,4.0,17.4,9658312 05-10-18,22:44:59,0.0,8.5,181040,0.0,1.0,557092,0.0,13.4,2850484,0.0,2.1,5680584,0.0,17.4,9658312
Notes:
Script only outputs to the console so should be redirected to a file for logging results
Output is in csv format.
ICPU = "Instantaneous CPU Usage (%)"
PCPU = "Percentage of CPU usage since process startup (%)"
RSS = "Resident Set Size i.e. Memory Usage in Kb"
For CPU measurements a measure of 100% represents all of one processor so results > 100% are achievable for multi-threaded processes.