Guest User

Untitled

a guest
Apr 15th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.47 KB | None | 0 0
  1. #!/bin/sh
  2.  
  3. ######################################################
  4. #
  5. # SETTINGS
  6. # PLEASE SET VARIABLES BELOW
  7. #
  8. # RDSUSER requires at least a PROCESS PRIVILEGE
  9. #
  10. # It's advised to call this script as unpriviled user from cron. Please set proper permissions for STAT_DIR to allow that user to write files in that directory
  11. # It's advised this script use the command:
  12. # nc -zv <RDSHOST> <RDSPORT>
  13. # netstat -ntp | grep mysql
  14. # dig <RDSHOST>
  15. # nslookup <RDSHOST>
  16. #
  17. #####################################################
  18. #VARIABLES
  19. #####################################################
  20. RDSHOST=''
  21. RDSPORT=''
  22. RDSUSER=''
  23. RDSPASSWORD=''
  24. STAT_DIR="${HOME}/mysql_stats/"
  25. ######################################################
  26. #DEFINE
  27. ######################################################
  28. ##Time stamp for log name
  29. DATE=`date -u '+%Y-%m-%d-%H%M%S'`
  30.  
  31. ##Check if command defined on $1 exists on host
  32. check_cmd_exist() {
  33. if ! type $1 >/dev/null
  34. then
  35. echo "N"
  36. else
  37. echo "Y"
  38. fi
  39. }
  40.  
  41. ##Do some network related checks if previous mysql connection failed
  42. check_conn() {
  43. if [ $? -ne 0 ]
  44. then
  45. if [ "`check_cmd_exist nc`" = "Y" ]
  46. then
  47. echo "`date -u '+%Y-%m-%d-%H%M%S'`:================START NC CONNECTION ERROR SECTION================" 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null
  48. nc -zv ${RDSHOST} ${RDSPORT} 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null
  49. echo "`date -u '+%Y-%m-%d-%H%M%S'`:================END NC CONNECTION ERROR SECTION================" 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null
  50. fi
  51.  
  52. if [ `check_cmd_exist netstat` = "Y" ]
  53. then
  54. echo "`date -u '+%Y-%m-%d-%H%M%S'`:================START NETSTAT CONNECTION ERROR SECTION================" 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null
  55. netstat -ntp | grep mysql 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null
  56. echo "`date -u '+%Y-%m-%d-%H%M%S'`:================END NETSTAT CONNECTION ERROR SECTION================" 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null
  57. fi
  58.  
  59. if [ `check_cmd_exist dig` = "Y" ]
  60. then
  61. echo "`date -u '+%Y-%m-%d-%H%M%S'`:================START DIG CONNECTION ERROR SECTION================" 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null
  62. dig ${RDSHOST} 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null
  63. echo "`date -u '+%Y-%m-%d-%H%M%S'`:================END DIG CONNECTION ERROR SECTION================" 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null
  64. elif [ `check_cmd_exist nslookup` = "Y" ]
  65. then
  66. echo "`date -u '+%Y-%m-%d-%H%M%S'`:================START NSLOOKUP CONNECTION ERROR SECTION================" 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null
  67. dig ${RDSHOST} 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null
  68. echo "`date -u '+%Y-%m-%d-%H%M%S'`:================END NSLOOKUP CONNECTION ERROR SECTION================" 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null
  69. fi
  70. fi
  71. }
  72. ######################################################
  73.  
  74. ######################################################
  75. #MAIN
  76. ######################################################
  77.  
  78. ##Create the log directory if not exists
  79. mkdir -p ${STAT_DIR}
  80.  
  81. ##Do the checks
  82. if [ $? -eq 0 ]; then
  83. echo "`date -u '+%Y-%m-%d-%H%M%S'`:================FULL PROCESS LIST================" 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null
  84. mysql -u ${RDSUSER} --password=${RDSPASSWORD} -h ${RDSHOST} -e 'SHOW FULL PROCESSLIST;' 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null
  85. check_conn
  86. echo "`date -u '+%Y-%m-%d-%H%M%S'`:================INNODB STATUS================" 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null
  87. mysql -u ${RDSUSER} --password=${RDSPASSWORD} -h ${RDSHOST} -e 'SHOW ENGINE INNODB STATUS\G' 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null
  88. check_conn
  89. echo "`date -u '+%Y-%m-%d-%H%M%S'`:================INNODB MUTEX================" 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null
  90. mysql -u ${RDSUSER} --password=${RDSPASSWORD} -h ${RDSHOST} -e 'SHOW ENGINE INNODB MUTEX;' 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null
  91. check_conn
  92. echo "`date -u '+%Y-%m-%d-%H%M%S'`:================GLOBAL STATUS================" 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null
  93. mysql -u ${RDSUSER} --password=${RDSPASSWORD} -h ${RDSHOST} -e 'SHOW GLOBAL STATUS;' 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null
  94. check_conn
  95. echo "`date -u '+%Y-%m-%d-%H%M%S'`:================VARIABLES================" 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null
  96. mysql -u ${RDSUSER} --password=${RDSPASSWORD} -h ${RDSHOST} -e 'SHOW VARIABLES;' 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null
  97. check_conn
  98. echo "`date -u '+%Y-%m-%d-%H%M%S'`:================GLOBAL VARIABLES================" 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null
  99. mysql -u ${RDSUSER} --password=${RDSPASSWORD} -h ${RDSHOST} -e 'SHOW GLOBAL VARIABLES;' 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null
  100. check_conn
  101. echo "`date -u '+%Y-%m-%d-%H%M%S'`:================LOCKS================" 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null
  102. mysql -u ${RDSUSER} --password=${RDSPASSWORD} -h ${RDSHOST} -e 'SELECT trx_id, trx_state, trx_wait_started, trx_requested_lock_id, time_to_sec(timediff(now(),trx_started)) AS cq, lock_type, lock_table, lock_index, lock_data FROM information_schema.innodb_trx LEFT JOIN information_schema.innodb_locks ON trx_requested_lock_id=lock_id; ' 2>&1 | tee -a ${STAT_DIR}/${DATE}.output >/dev/null
  103. check_conn
  104. else
  105. echo "DIRECTORY CREATING ERROR"
  106. fi
  107. ######################################################
Add Comment
Please, Sign In to add comment