#!/bin/bash # MySQL monitorization plugin for Pandora FMS agent # Author: Manuel A. GulĂ­n Bejarano # Version: 1.0 # Date: 15/03/2013 # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . function help { echo -e "MySQL monitorization agent plugin for Pandora FMS agent. http://pandorafms.com" echo -e "Syntax:" echo -e "\t\t$0 '' 'dbpass'" exit } if [ $# -ne 2 ] then help exit -1 fi MY_USER="$1" MY_PASS="$2" # Info about static variables - all retrieved with one query, later it's going to be appropiately parsed MY_VAR=`mysql -u $MY_USER -p"$MY_PASS" -Bse 'SHOW /*!50000 GLOBAL */ VARIABLES'` # Info about dynamic variables - all retrieved with one query, later it going to be appropiately parsed MY_STAT=`mysql -u $MY_USER -p"$MY_PASS" -Bse 'SHOW /*!50000 GLOBAL */ STATUS'` # Info about use of Innodb, if enabled - all retrieved with one query, later it going to be appropiately parsed MY_INNODB_ACTIVE=`echo $MY_ENG | grep -o "InnoDB [yesno-YESNO]*" | awk '{print $2}'` if [ "$MY_INNODB_ACTIVE" == "YES" ]; then MY_INNO_STAT=`mysql -u $MY_USER -p"$MY_PASS" -Bse 'SHOW INNODB STATUS'` fi # Info about total number of databases and tables MY_DBS_COUNT=`mysql -u $MY_USER -p"$MY_PASS" -Bse "SELECT COUNT(SCHEMA_NAME) FROM information_schema.SCHEMATA"` MY_TABLES_COUNT=`mysql -u $MY_USER -p"$MY_PASS" -Bse "SELECT COUNT(TABLE_NAME) FROM information_schema.TABLES"` # Info about the total size of data and indexes in MB MY_DATA_SIZE=`mysql -u $MY_USER -p"$MY_PASS" -Bse "SELECT SUM(data_length)/(1024*1024) FROM information_schema.TABLES"` MY_INDEX_SIZE=`mysql -u $MY_USER -p"$MY_PASS" -Bse "SELECT SUM(index_length)/(1024*1024) FROM information_schema.TABLES"` # General info about this MySQL system MY_HOST=`echo $MY_VAR | grep -o ' hostname .*' | awk '{print $2}'` MY_VERSION=`echo $MY_VAR | grep -o ' version .*' | awk '{print $2}'` MY_ARCH=`echo $MY_VAR | grep -o ' version_compile_machine .*' | awk '{print $2}'` MY_ENG=`echo $MY_VAR | grep -o "storage_engine [a-zA-Z]*" | awk '{print $2}'` MY_ISO=`echo $MY_VAR | grep -o " tx_isolation .*" | awk '{print $2}'` MY_UPTIME=`echo $MY_STAT | grep -o ' Uptime .*' | awk '{print $2}'` MY_FLUSHUPTIME=`echo $MY_STAT | grep -o ' Uptime_since_flush_status .*' | awk '{print $2}'` MY_UWOPASS=`mysql -u $MY_USER -p"$MY_PASS" -Bse "SELECT COUNT(CONCAT(user, '\@', host)) FROM mysql.user WHERE password = '' OR password IS NULL"` # Info about general logging MY_GENLOG=`echo $MY_VAR | grep -o " general_log [onfONF]*" | awk '{if (tolower($2) == "off") {print 0} else {print 1}}'` MY_WARNLOG=`echo $MY_VAR | grep -o " log_warnings [01]" | awk '{print $2}'` # Info about slow queries logging MY_SLOWLOG=`echo $MY_VAR | grep -o " slow_query_log [onfONF]*" | awk '{if (tolower($2) == "off") {print 0} else {print 1}}'` MY_SLOWLOGTIME=`echo $MY_VAR | grep -o " long_query_time [0-9.,]*" | awk '{print $2}'` # Info about binary logging MY_BINLOG=`echo $MY_VAR | grep -o " log_bin [onfONF]*" | awk '{if (tolower($2) == "off") {print 0} else {print 1}}'` MY_BINLOGF=`echo $MY_VAR | grep -o " binlog_format .*" | awk '{print $2}'` MY_SBINLOG=`echo $MY_VAR | grep -o " sync_binlog [0|1]" | awk '{print $2}'` MY_BINCSIZE=`echo $MY_VAR | grep -o " binlog_cache_size [0-9]*" | awk '{print $2}'` MY_BINMSIZE=`echo $MY_VAR | grep -o " max_binlog_size [0-9]*" | awk '{print $2}'` # Info about files MY_OPEN_FILES_LIMIT=`echo $MY_VAR | grep -o " open_files_limit [0-9]*" | awk '{print $2}'` MY_OPEN_FILES=`echo $MY_STAT | grep -o "Open_files [0-9]*" | awk '{print $2}'` MY_OPEN_FILES100=`echo $MY_OPEN_FILES $MY_OPEN_FILES_LIMIT | awk '{ if ($2>0) { print int($1*10000/$2)/100 } else { print 0 } }'` # Info about connections MY_CONN=`echo $MY_STAT | grep -o "Connections [0-9]*" | awk '{print $2}'` MY_ABORT_CONN=`echo $MY_STAT | grep -o "Aborted_connects [0-9]*" | awk '{print $2}'` MY_ABORT_CONN100=`echo $MY_ABORT_CONN $MY_CONN | awk '{ if ($2>0) { print int($1*10000/$2)/100 } else { print 0 } }'` MY_MAXUSED_CONN=`echo $MY_STAT | grep -o "Max_used_connections [0-9]*" | awk '{print $2}'` MY_MAX_CONN=`echo $MY_VAR | grep -o "max_connections [0-9]*" | awk '{print $2}'` MY_MAX_CONN100=`echo $MY_MAXUSED_CONN $MY_MAX_CONN | awk '{ if ($2>0) { print int($1*10000/$2)/100 } else { print 0 } }'` # Info about temporal tables MY_TMP_TABLES=`echo $MY_STAT | grep -o "Created_tmp_tables [0-9]*" | awk '{print $2}'` MY_DISKTMP_TABLES=`echo $MY_STAT | grep -o "Created_tmp_disk_tables [0-9]*" | awk '{print $2}'` MY_DISKTMP_TABLES100=`echo $MY_DISKTMP_TABLES $MY_TMP_TABLES | awk '{ if (($1+$2)>0) { print int($1*10000/($1+$2))/100 } else { print 0 } }'` # General info about queries MY_SELECT=`echo $MY_STAT | grep -o "Com_select [0-9]*" | awk '{print $2}'` MY_INSERT=`echo $MY_STAT | grep -o "Com_insert [0-9]*" | awk '{print $2}'` MY_UPDATE=`echo $MY_STAT | grep -o "Com_update [0-9]*" | awk '{print $2}'` MY_REPLACE=`echo $MY_STAT | grep -o "Com_replace [0-9]*" | awk '{print $2}'` MY_DELETE=`echo $MY_STAT | grep -o "Com_delete [0-9]*" | awk '{print $2}'` let MY_WRITES=$MY_INSERT+$MY_UPDATE+$MY_REPLACE+$MY_DELETE MY_WRITES100=`echo $MY_SELECT $MY_WRITES | awk '{ if (($1+$2)>0) { print int($2*10000/($1+$2))/100 } else { print 0 } }'` MY_SLOW_QUERIES=`echo $MY_STAT | grep -o "Slow_queries [0-9]*" | awk '{print $2}'` MY_QUESTIONS=`echo $MY_STAT | grep -o "Questions [0-9]*" | awk '{print $2}'` MY_SLOW_QUERIES100=`echo $MY_SLOW_QUERIES $MY_QUESTIONS | awk '{ if ($2>0) { print int($1*10000/$2)/100 } else { print 0 } }'` # Info about buffers MY_RD_BF_SIZE=`echo $MY_VAR | grep -o " read_buffer_size [0-9]*" | awk '{print $2}'` MY_RD_RND_BF_SIZE=`echo $MY_VAR | grep -o " read_rnd_buffer_size [0-9]*" | awk '{print $2}'` MY_SORT_BF_SIZE=`echo $MY_VAR | grep -o " sort_buffer_size [0-9]*" | awk '{print $2}'` MY_JOIN_BF_SIZE=`echo $MY_VAR | grep -o " join_buffer_size [0-9]*" | awk '{print $2}'` # Info about threads MY_THREAD_STACK=`echo $MY_VAR | grep -o " thread_stack [0-9]*" | awk '{print $2}'` let MY_PER_THREAD_BF=$MY_RD_BF_SIZE+$MY_RD_RND_BF_SIZE+$MY_SORT_BF_SIZE+$MY_JOIN_BF_SIZE+$MY_THREAD_STACK let MY_ALL_THREAD_BF=$MY_PER_THREAD_BF*$MY_MAX_CONN let MY_USED_THREAD_BF=$MY_PER_THREAD_BF*$MY_MAXUSED_CONN MY_KEY_BF_SIZE=`echo $MY_VAR | grep -o " key_buffer_size [0-9]*" | awk '{print $2}'` MY_MAX_HEAP_TABLE_SIZE=`echo $MY_VAR | grep -o " max_heap_table_size [0-9]*" | awk '{print $2}'` if [ "$MY_INNODB_ACTIVE" == "YES" ]; then MY_INNODB_BUFFER_POOL_SIZE=`echo $MY_VAR | grep -o " innodb_buffer_pool_size [0-9]*" | awk '{print $2}'` MY_INNODB_ADDITIONAL_MEM_POOL_SIZE=`echo $MY_VAR | grep -o " innodb_addtional_mem_pool_size [0-9]*" | awk '{print $2}'` MY_INNODB_LOG_BUFFER_SIZE=`echo $MY_VAR | grep -o " innodb_log_buffer_size [0-9]*" | awk '{print $2}'` MY_INNODB_QUERY_CACHE_SIZE=`echo $MY_VAR | grep -o " innodb_query_cache_size [0-9]*" | awk '{print $2}'` else MY_INNODB_BUFFER_POOL_SIZE=0 MY_INNODB_ADDITIONAL_MEM_POOL_SIZE=0 MY_INNODB_LOG_BUFFER_SIZE=0 MY_INNODB_QUERY_CACHE_SIZE=0 fi let MY_SERVER_BUFFERS=$MY_MAX_HEAP_TABLE_SIZE+$MY_KEY_BF_SIZE+$MY_INNODB_BUFFER_POOL_SIZE+$MY_INNODB_ADDITIONAL_MEM_POOL_SIZE+$MY_INNODB_LOG_BUFFER_SIZE+$MY_INNODB_QUERY_CACHE_SIZE # Info about memory usage let MY_USED_TOTAL_MEM=$MY_SERVER_BUFFERS+$MY_USED_THREAD_BF MY_SYS_MEM=`free -b | grep "Mem:[ ]*[0-9]*" | awk '{print $2}'` MY_MAX_TOTAL_MEM_VS_SYS=`echo $MY_MAX_TOTAL_MEM $MY_SYS_MEM |awk '{if ($2>0) {print int(10000*$1/$2)/100} else {print 0}}'` # Info about key usage and its cache MY_KEY_BLOCKS_UNUSED=`echo $MY_STAT | grep -o "Key_blocks_unused [0-9]*" | awk '{print $2}'` MY_KEY_CACHE_BLOCK_SIZE=`echo $MY_VAR | grep -o " key_cache_block_size [0-9]*" | awk '{print $2}'` MY_KEY_BLOCKS_USED100=`echo $MY_KEY_BLOCKS_UNUSED $MY_KEY_CACHE_BLOCK_SIZE $MY_KEY_BF_SIZE | awk '{if ($3>0) {print 100-int(10000*$1*$2/$3)/100} else {print 0}}'` MY_KEY_READS=`echo $MY_STAT | grep -o "Key_reads [0-9]*" | awk '{print $2}'` MY_KEY_READ_REQUESTS=`echo $MY_STAT | grep -o "Key_read_requests [0-9]*" | awk '{print $2}'` MY_KEYS_FROM_MEM100=`echo $MY_KEY_READS $MY_KEY_READ_REQUESTS | awk '{if ($2>0) {print 100-int(10000*$1/$2)} else {print 0}}'` # Info about query cache MY_QCACHE_HITS=`echo $MY_STAT | grep -o " Qcache_hits [0-9]*" | awk '{print $2}'` MY_QCACHE_INEFFICIENCY100=`echo $MY_QCACHE_HITS $MY_SELECT | awk '{if (($1+$2)>0) { print int(10000*$1/($1+$2))/100} else {print 100}}'` MY_QCACHE_SIZE=`echo $MY_VAR | grep -o "query_cache_size [0-9]*" | awk '{print $2}'` MY_QCACHE_FREE_MEM=`echo $MY_STAT | grep -o "Qcache_free_memory [0-9]*" | awk '{print $2}'` MY_QCACHE_USED_MEM100=`echo $MY_QCACHE_FREE_MEM $MY_QCACHE_SIZE | awk '{print 100-int(100*$1/$2)/100}'` MY_QCACHE_PRUNES=`echo $MY_STAT | grep -o "Qcache_lowmem_prunes [0-9]*" | awk '{print $2}'` MY_QCACHE_PRUNES_DAY=`echo $MY_QCACHE_PRUNES $MY_UPTIME | awk '{if ($2>0) {print int(100*$1*86400/$2)/100} else {print 0}}'` # Info about sorts MY_SORT_SCAN=`echo $MY_STAT | grep -o "Sort_scan [0-9]*" | awk '{print $2}'` MY_SORT_RANGE=`echo $MY_STAT | grep -o "Sort_range [0-9]*" | awk '{print $2}'` let MY_SORT_TOTAL=$MY_SORT_SCAN+$MY_SORT_RANGE MY_SORT_MERGE_PASSES=`echo $MY_STAT | grep -o "Sort_merge_passes [0-9]*" | awk '{print $2}'` MY_SORTS_TEMP_TABLES100=`echo $MY_SORT_MERGE_PASSES $MY_SORT_TOTAL | awk '{if ($2>0) {print int(10000*$1/$2)/100} else {print 0}}'` # Info about joins MY_SEL_RANGE_CHECK=`echo $MY_STAT | grep -o "Select_range_check [0-9]*" | awk '{print $2}'` MY_SEL_FULL_JOIN=`echo $MY_STAT | grep -o "Select_full_join [0-9]*" | awk '{print $2}'` let MY_JOINS_WO_INDEXES=$MY_SEL_RANGE_CHECK+$MY_SEL_FULL_JOIN MY_JOINS_WO_INDEXES100=`echo $MY_JOINS_WO_INDEXES $MY_UPTIME | awk '{if ($2>0) {print int(100*$1*86400/$2)/100} else {print 0}}'` # Info about open tables MY_OPEN_TABLES=`echo $MY_STAT | grep -o "Open_tables [0-9]*" | awk '{print $2}'` MY_OPENED_TABLES=`echo $MY_STAT | grep -o "Opened_tables [0-9]*" | awk '{print $2}'` # Info about caches MY_TABLE_CACHE_HIT_RATE=`echo $MY_OPEN_TABLES $MY_OPENED_TABLES | awk '{if ($2>0) {print int(10000*$MY_OPEN_TABLES/$MY_OPENED_TABLES)/100} else {print 100}}'` MY_TABLE_LOCKS_IMMEDIATE=`echo $MY_STAT | grep -o "Table_locks_immediate [0-9]*" | awk '{print $2}'` MY_TABLE_LOCKS_WAITED=`echo $MY_STAT | grep -o "Table_locks_waited [0-9]*" | awk '{print $2}'` MY_TABLE_LOCKS_IMMEDIATE100=`echo $MY_TABLE_LOCKS_IMMEDIATE $MY_TABLE_LOCKS_WAITED | awk '{ if ($1+$2>0) { print int(10000*$1/($1+$2))/100} else {print 100}}'` MY_THREADS_CREATED=`echo $MY_STAT | grep -o "Threads_created [0-9]*" | awk '{print $2}'` MY_THREAD_CACHE_HITRATE100=`echo $MY_THREADS_CREATED $MY_CONN | awk '{ if ($2>0) {print 100-int(10000*$1/$2)/100} else {print 100}}'` ######################################################################################################### # GENERAL INFO MODULES ######################################################################################################### # Module to get MySQL hostname echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tasync_string" echo -e "\t0" echo -e "\t" #echo -e "\t0 * * * *"" echo -e "\t" # Module to get MySQL version echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tasync_string" echo -e "\t0" echo -e "\t" #echo -e "\t0 * * * *"" echo -e "\t" # Module to get the number of databases echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tasync_data" echo -e "\t0" echo -e "\t#" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to get the number of tables echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tasync_data" echo -e "\t0" echo -e "\t#" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to get the size of stored data echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tasync_data" echo -e "\t0" echo -e "\tMB" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to get the size of stored indexes echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tasync_data" echo -e "\t0" echo -e "\tMB" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to get the default engine echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tasync_string" echo -e "\t0" echo -e "\t" #echo -e "\t0 * * * *"" echo -e "\t" # Module to get MySQL isolation level echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tasync_string" echo -e "\t0" echo -e "\t" #echo -e "\t0 * * * *"" echo -e "\t" # Module to get MySQL uptime echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\ts" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to get MySQL uptime since last flush echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\ts" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to get the number of users without password echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tasync_data" echo -e "\t0" echo -e "\t#" echo -e "\t0" echo -e "\t1" echo -e "\t" echo -e "\t" ######################################################################################################### # GENERAL LOG INFO MODULES ######################################################################################################### # Module to know if log is enabled echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tasync_proc" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to know if log is enabled echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tasync_proc" echo -e "\t0" echo -e "\t" echo -e "\t" ######################################################################################################### # SLOW LOG INFO MODULES ######################################################################################################### # Module to know if log slow queries is enabled echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tasync_proc" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to know the time to a query as slow echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tasync_data" echo -e "\t0" echo -e "\ts" echo -e "\t0" echo -e "\t" echo -e "\t" ######################################################################################################### # BINARY LOG INFO MODULES ######################################################################################################### # Module to know if binlog is enabled echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tasync_proc" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to know binlog format echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tasync_string" echo -e "\t0" echo -e "\t" #echo -e "\t0 * * * *"" echo -e "\t" # Module to know if binlog syncing is enabled echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tasync_proc" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to know the cache size of the binlog echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tasync_data" echo -e "\t0" echo -e "\tb" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to know the cache size of the binlog echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tasync_data" echo -e "\t0" echo -e "\tb" echo -e "\t0" echo -e "\t" echo -e "\t" ######################################################################################################### # OPEN FILES INFO MODULES ######################################################################################################### # Module to know the number of open files echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\t#" echo -e "\t0" echo -e "\t$MY_OPEN_FILES_LIMIT" echo -e "\t" echo -e "\t" # Module to know the % of open files echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\t%" echo -e "\t0" echo -e "\t100" echo -e "\t85" echo -e "\t94.99" echo -e "\t95" echo -e "\t100" echo -e "\t" echo -e "\t" ######################################################################################################### # CONNECTION INFO MODULES ######################################################################################################### # Module to know the number of connection attempts echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\tconn" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to know the number of aborted connections echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\tconn" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to know the % of aborted connections echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\t%" echo -e "\t0" echo -e "\t100" echo -e "\t5" echo -e "\t9.99" echo -e "\t10" echo -e "\t100" echo -e "\t" echo -e "\t" # Module to know the maximum number of used connections echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\tconn" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to know the maximum number of connections echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\tconn" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to know the maximum % of simultaneous connections echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\t%" echo -e "\t0" echo -e "\t100" echo -e "\t85" echo -e "\t94.99" echo -e "\t95" echo -e "\t100" echo -e "\t" echo -e "\t" ######################################################################################################### # TEMPORAL TABLES INFO MODULES ######################################################################################################### # Module to know the number of temporal tables created in memroy echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\ttables" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to know the number of temporal tables created in disk echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\ttables" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to know the % of temporal disk tables echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\t%" echo -e "\t0" echo -e "\t100" echo -e "\t25" echo -e "\t34.99" echo -e "\t35" echo -e "\t100" echo -e "\t" echo -e "\t" ######################################################################################################### # GENERAL QUERIES INFO MODULES ######################################################################################################### # Module to know the number of read queries echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\tqu" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to know the number of write queries echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\tqu" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to know the % of writes echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\t%" echo -e "\t0" echo -e "\t100" echo -e "\t" echo -e "\t" # Module to know the number of slow queries echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\tqu" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to know the number of questions sent to the server echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\tqu" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to know the % of slow queries echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\t%" echo -e "\t0" echo -e "\t100" echo -e "\t5" echo -e "\t14.99" echo -e "\t15" echo -e "\t100" echo -e "\t" echo -e "\t" ######################################################################################################### # BUFFER AND MEMORY INFO MODULES ######################################################################################################### # Module to get the size of the buffer of each possible thread echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tasync_data" echo -e "\t0" echo -e "\tb" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to get the max. size of the buffer of all threads echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tasync_data" echo -e "\t0" echo -e "\tb" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to get the max. used size of the buffer of simultaneous threads echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tasync_data" echo -e "\t0" echo -e "\tb" echo -e "\t0" echo -e "\t$MY_ALL_THREAD_BF" echo -e "\t" echo -e "\t" # Module to get the size of the buffer of the server echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tasync_data" echo -e "\t0" echo -e "\tb" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to get the max. possible consumed memory let MY_MAX_TOTAL_MEM=$MY_SERVER_BUFFERS+$MY_ALL_THREAD_BF echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tasync_data" echo -e "\t0" echo -e "\tb" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to get the max. used memory echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tasync_data" echo -e "\t0" echo -e "\tb" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to get the % of max possible consumed memory vs memory on the system echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tasync_data" echo -e "\t0" echo -e "\t%" echo -e "\t0" echo -e "\t100" echo -e "\t90" echo -e "\t99.99" echo -e "\t100" echo -e "\t" echo -e "\t" # Module to know the % of used key buffer echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\t%" echo -e "\t0" echo -e "\t100" echo -e "\t" echo -e "\t" # Module to know the % of keys retrieved from memory echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\t%" echo -e "\t0" echo -e "\t100" echo -e "\t0" echo -e "\t80" echo -e "\t80.01" echo -e "\t95" echo -e "\t" echo -e "\t" ######################################################################################################### # QUERY CACHE INFO MODULES ######################################################################################################### # Module to know the number of query cache hits echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\t#" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to know the query cache efficiency echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\t%" echo -e "\t0" echo -e "\t100" echo -e "\t0" echo -e "\t5" echo -e "\t5.01" echo -e "\t20" echo -e "\t" echo -e "\t" # Module to know the free memory of query cache echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\tb" echo -e "\t0" echo -e "\t$MY_QCACHE_SIZE" echo -e "\t" echo -e "\t" # Module to know the free memory of query cache echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\t%" echo -e "\t0" echo -e "\t100" echo -e "\t" echo -e "\t" # Module to know the number of query cache prunes echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\t#" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to estimate the number of query cache prunes per day echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\t#/day" echo -e "\t0" echo -e "\t100" echo -e "\t" echo -e "\t" # Module to know the % of cache hit rate echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\t%" echo -e "\t0" echo -e "\t100" echo -e "\t0" echo -e "\t19.99" echo -e "\t20" echo -e "\t30" echo -e "\t" echo -e "\t" ######################################################################################################### # SORTS INFO MODULES ######################################################################################################### # Module to know the number of sorts echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\t#" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to know the % of sorts requiring temporal tables echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\t%" echo -e "\t0" echo -e "\t100" echo -e "\t10" echo -e "\t19.99" echo -e "\t20" echo -e "\t100" echo -e "\t" echo -e "\t" ######################################################################################################### # JOINS INFO MODULES ######################################################################################################### # Module to know the number of joins without indexes echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\t#" echo -e "\t0" echo -e "\t" echo -e "\t" # Module to estimate the number of joins without indexes per day echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\t#/day" echo -e "\t0" echo -e "\t250" echo -e "\t" echo -e "\t" ######################################################################################################### # TABLE LOCKS INFO MODULES ######################################################################################################### # Module to know the table locks aquired immediatly echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\t%" echo -e "\t0" echo -e "\t100" echo -e "\t0" echo -e "\t89.99" echo -e "\t90" echo -e "\t95" echo -e "\t" echo -e "\t" ######################################################################################################### # THREAD CACHE INFO MODULES ######################################################################################################### # Module to know the % of connections that do NOT need to create a thread echo -e "\t" echo -e "\t" echo -e "\t" echo -e "\tgeneric_data" echo -e "\t0" echo -e "\t%" echo -e "\t0" echo -e "\t100" echo -e "\t0" echo -e "\t89.99" echo -e "\t90" echo -e "\t95" echo -e "\t" echo -e "\t"