2.0 2013-06-18T21:28:45Z Templates {Template MySQL Server:mysql.secure_auth.last(0)}=0 MySQL: Accounts with old passwords on {HOSTNAME} 0 2 You should not allow users to authenticate with old passwords. Make sure secure_auth=1 in my.cnf 0 {Template MySQL Server:mysql.Anonymous_accounts_count.last(0)}>0 MySQL: Anonymous users allowed on {HOSTNAME} 0 3 Some accounts are present without usernames. This allows anonymous access. Consider removing these. 0 {Template MySQL Server:mysql.log_bin.last(0)}=0 MySQL: Binary log is not enabled on {HOSTNAME} 0 1 Binlog provides point-in-time recovery. You probably want this enabled. 0 {Template MySQL Server:mysql.sync_binlog.last(0)}=0 MySQL: Binlog is not sync'd to disk after each write on {HOSTNAME} 1 1 Setting sync_binlog=1 is slower, but insures you can recover from crashes and failures. 0 {Template MySQL Server:mysql.Percent_transactions_saved_tmp_file.last(0)}>30 MySQL: Binlog_cache_size too low ({ITEM.LASTVALUE}% written to disk) on {HOSTNAME} 0 4 Binlog_cache_size too low. Increase the binlog_cache_size variable in my.cnf 0 {Template MySQL Server:mysql.Percent_transactions_saved_tmp_file.last(0)}>10 MySQL: Binlog_cache_size too low ({ITEM.LASTVALUE}% written to disk) on {HOSTNAME} 0 2 Binlog_cache_size too low. Increase the binlog_cache_size variable in my.cnf 0 {Template MySQL Server:mysql.Change_innodb_additional_mem_pool_size.last(0)}=1 MySQL: Change the innodb_additional_mem_pool_size on {HOSTNAME} 1 1 Review Suggested_innodb_additional_mem_pool_size to determine the best setting 0 {Template MySQL Server:mysql.Change_innodb_log_buffer_size.last(0)}=1 MySQL: Change the innodb_log_buffer_size on {HOSTNAME} 1 1 Review Suggested_innodb_log_buffer_size to determine the best setting 0 {Template MySQL Server:mysql.Change_innodb_log_file_size.last(0)}=1 MySQL: Change the innodb_log_file_size on {HOSTNAME} 1 1 Review Suggested_innodb_log_file_size to determine the best setting 0 {Template MySQL Server:mysql.Change_key_buffer_size.last(0)}=1 MySQL: Change the key_buffer_size on {HOSTNAME} 1 1 Review Suggested_key_buffer_size to determine the best setting 0 {Template MySQL Server:mysql.Change_myisam_sort_buffer_size.last(0)}=1 MySQL: Change the myisam_sort_buffer_size on {HOSTNAME} 1 1 Review Suggested_myisam_sort_buffer_size to determine the best setting 0 {Template MySQL Server:mysql.Change_query_cache_size.last(0)}=1 MySQL: Change the query_cache_size on {HOSTNAME} 1 1 Review Suggested_query_cache_size to determine the best setting 0 {Template MySQL Server:mysql.Change_read_buffer_size.last(0)}=1 MySQL: Change the read_buffer_size on {HOSTNAME} 1 1 Review Suggested_read_buffer_size to determine the best setting 0 {Template MySQL Server:mysql.Change_read_rnd_buffer_size.last(0)}=1 MySQL: Change the read_rnd_buffer_size on {HOSTNAME} 1 1 Review Suggested_read_rnd_buffer_size to determine the best setting 0 {Template MySQL Server:mysql.Change_sort_buffer_size.last(0)}=1 MySQL: Change the sort_buffer_size on {HOSTNAME} 1 1 Review Suggested_sort_buffer_size to determine the best setting 0 {Template MySQL Server:mysql.Change_table_cache.last(0)}=1 MySQL: Change the table_cache on {HOSTNAME} 1 1 Review Suggested_table_cache to determine the best setting 0 {Template MySQL Server:mysql.Change_tmp_table_size.last(0)}=1 MySQL: Change the tmp_table_size on {HOSTNAME} 1 1 Review Suggested_tmp_table_size to determine the best setting 0 {Template MySQL Server:mysql.Excessive_revokes.last(0)}>0 MySQL: Excessive recent revokes on {HOSTNAME} 1 2 This is normal for development, but rare for production. Investigave via the binary logs. 0 {Template MySQL Server:mysql.Percent_tmp_tables_on_disk.last(0)}>25 MySQL: Excessive tmp disk tables created on {HOSTNAME} 1 2 Perhaps you should increase your tmp_table_size and/or max_heap_table_size to reduce the tables created on disk. 0 {Template MySQL Server:mysql.Percent_innodb_cache_hit_rate.last(0)}<95 MySQL: InnoDB Cache Hit Rate ({ITEM.LASTVALUE}%) on {HOSTNAME} 0 2 You want most InnoDB transactions to be from memory, to keep this percentage high. Start by increasing innodb_buffer_pool_size (can be 75/85% memory in InnoDB only installs). 0 {Template MySQL Server:mysql.Percent_innodb_cache_hit_rate.last(0)}<85 MySQL: InnoDB Cache Hit Rate ({ITEM.LASTVALUE}%) on {HOSTNAME} 0 4 You want most InnoDB transactions to be from memory, to keep this percentage high. Start by increasing innodb_buffer_pool_size (can be 75/85% memory in InnoDB only installs). 0 {Template MySQL Server:mysql.innodb_flush_log_at_trx_commit.last(0)}#2 MySQL: InnoDB log flush status on {HOSTNAME} 1 1 Your innodb_flush_log_at_trx_commit is not "2" now. Default value of 1 will mean each update transaction commit (or each statement outside of transaction) will need to flush log to the disk which is rather expensive, especially if you do not have Battery backed up cache. Many applications, especially those moved from MyISAM tables are OK with value 2 which means do not flush log to the disk but only flush it to OS cache. The log is still flushed to the disk each second so you normally would not loose more than 1-2 sec worth of updates. Value 0 is a bit faster but is a bit less secure as you can lose transactions even in case MySQL Server crashes. Value 2 only cause data loss with full OS crash. Adjust innodb_flush_log_at_trx_commit in your my.cnf accordingly. 0 {Template MySQL Server:mysql.Joins_without_indexes_per_day.last(0)}>100 MySQL: Joins without indices on {HOSTNAME} 1 3 >100 joins/day don't use indices. Consider increasing join_buffer_size or always use indices to improve. 0 {Template MySQL Server:mysql.local_infile.last(0)}=1 MySQL: LOAD DATA LOCAL allowed on {HOSTNAME} 0 1 There are numerous security risks with 'LOAD DATA LOCAL' commands. Consider setting local-infile=0 in your my.cnf file. 0 {Template MySQL Server:mysql.expire_logs_days.last(0)}=0 MySQL: Logs are not set to expire on {HOSTNAME} 1 1 You have not set expire_logs_days in your my.cnf file. With this, the mysqld will retain the entire binary log until RESET MASTER or PURGE MASTER LOGS commands are run manually. Setting expire_logs_days will allow you to remove old binary logs automatically 0 {Template MySQL Server:mysql.long_query_time.last(0)}>2 MySQL: Long query time is high on {HOSTNAME} 1 1 Your long query time is high now. <5s is recommended. Set long_query_time=2 to start with. 0 {Template MySQL Server:mysql.Percent_myisam_key_cache_hit_rate.last(0)}<85 MySQL: MyISAM: Key Cache Hit Rate ({ITEM.LASTVALUE}%) on {HOSTNAME} 1 4 Most MyISAM activity should hit the Key Cache. If this falls low, increase key_buffer_size. 0 {Template MySQL Server:mysql.Percent_myisam_key_cache_hit_rate.last(0)}<95 MySQL: MyISAM: Key Cache Hit Rate ({ITEM.LASTVALUE}%) on {HOSTNAME} 1 2 Most MyISAM activity should hit the Key Cache. If this falls low, increase key_buffer_size. 0 {Template MySQL Server:mysql.myisam_recover_options.last(0)}=0 MySQL: MyISAM auto recovery not enabled on {HOSTNAME} 0 1 You probably want MyISAM auto-recovery enabled, especially if you have a lot of small MyISAM tables. Corrupted tables can cause damage, and this is a reasonable compromise. Set myisam-recover=BACKUP,FORCE in your my.cnf file. 0 {Template MySQL Server:mysql.Com_grant.last(0)}>0 MySQL: New GRANTs have been given on {HOSTNAME} 1 2 This is normal for development, but rare for production. Investigave via the binary logs. 0 {Template MySQL Server:mysql.Percent_full_table_scans.last(0)}>{$PERCENTFULLSCAN.CRIT} MySQL: Percentage of queries ({ITEM.LASTVALUE}%) scanning full tables on {HOSTNAME} 1 4 Ratio of the number of rows read via full table scans to the sum of all handler variables (which denotes all row accesses). A high value indicates excessive table scans. You should examine tables and queries for proper use of indexes. Turn on the slow query log, identify the queries using full table scan and tune it. 0 {Template MySQL Server:mysql.Percent_full_table_scans.last(0)}>{$PERCENTFULLSCAN.WARN} MySQL: Percentage of queries ({ITEM.LASTVALUE}%) scanning full tables on {HOSTNAME} 1 2 Should be kept as low as possible. Use indexes or the slow query log to analyze. 0 {Template MySQL Server:mysql.Percent_aborted_connections.last(0)}>25 MySQL: Percent of connections ({ITEM.LASTVALUE}%) aborted on {HOSTNAME} 0 2 A large number of connections are getting aborted. Look for users/apps using incorrect passwords or from unauthorized hosts. Check connect_timeout too low. Set log_warnings=2 to force logging of offenders. 0 {Template MySQL Server:mysql.Percent_aborted_connections.last(0)}>30 MySQL: Percent of connections ({ITEM.LASTVALUE}%) aborted on {HOSTNAME} 0 4 A large number of connections are getting aborted. Look for users/apps using incorrect passwords or from unauthorized hosts. Check connect_timeout too low. Set log_warnings=2 to force logging of offenders. 0 {Template MySQL Server:mysql.Percent_innodb_cache_write_waits_required.last(0)}>0.01 MySQL: Percent of InnoDB cache writes ({ITEM.LASTVALUE}%) that had to wait on {HOSTNAME} 0 2 For best performance, InnoDB should never have to wait to write to the buffer pool. Increase innodb_buffer_pool_size and monitor. 0 {Template MySQL Server:mysql.Percent_innodb_cache_write_waits_required.last(0)}>0.1 MySQL: Percent of InnoDB cache writes ({ITEM.LASTVALUE}%) that had to wait on {HOSTNAME} 0 4 For best performance, InnoDB should never have to wait to write to the buffer pool. Increase innodb_buffer_pool_size and monitor. 0 {Template MySQL Server:mysql.Percent_connections_used.last(0)}>75 MySQL: Percent total connections ({ITEM.LASTVALUE}%) used on {HOSTNAME} 0 2 Using over 75% of the max_connections. Consider increasing. 0 {Template MySQL Server:mysql.Percent_connections_used.last(0)}>85 MySQL: Percent total connections ({ITEM.LASTVALUE}%) used on {HOSTNAME} 0 4 Using over 85% of the max_connections. Consider increasing. 0 {Template MySQL Server:mysql.Qcache_lowmem_prunes_per_day.last(0)}>100 MySQL: Queries pruning frequently on {HOSTNAME} 1 3 >100 queries are being pruned/day from your query cache. Consider increasing your query cache to improve. 0 {Template MySQL Server:mysql.Percent_tmp_sort_tables.last(0)}>100 MySQL: Queries require tmp sort table on {HOSTNAME} 0 3 >100% queries require a temporary sort table. Consider increasing sort_buffer_size and read_rnd_buffer_size to improve. 0 {Template MySQL Server:mysql.Percent_query_cache_fragmentation.last(0)}>20 MySQL: Query cache fragmented > 20% on {HOSTNAME} 1 1 Binlog provides point-in-time recovery. You probably want this enabled. 0 {Template MySQL Server:mysql.Percent_query_cache_hit_rate.last(0)}<20 MySQL: Query cache hit rate low on {HOSTNAME} 0 3 Your query_cache efficiency is <20%. Consider increasing your query cache to improve. 0 {Template MySQL Server:mysql.have_query_cache.last(0)}=0 MySQL: Query cache is not enabled on {HOSTNAME} 0 1 Settings for my.cnf: query_cache_type=1, query_cache_size=25% of total RAM, and query_cache_limit=1048576 (1-2MB) 0 {Template MySQL Server:mysql.Percent_query_cache_pruned_from_inserts.last(0)}>15 MySQL: Query cache pruned ({ITEM.LASTVALUE}%) due to memory on {HOSTNAME} 1 2 Query cache pruning due to memory at >15%. Increase the query_cache_size when this starts to hit 0 {Template MySQL Server:mysql.Percent_query_cache_pruned_from_inserts.last(0)}>20 MySQL: Query cache pruned ({ITEM.LASTVALUE}%) due to memory on {HOSTNAME} 1 4 Query cache pruning due to memory at >20%. Increase the query_cache_size when this starts to hit 0 {Template MySQL Server:mysql.Root_accounts_count.last(0)}>0 MySQL: Root account present on {HOSTNAME} 1 1 A user account named 'root' is really not needed, especially if the default 'root' with super-user privileges is still present. 0 {Template MySQL Server:mysql.Is_root_without_password.last(0)}=1 MySQL: Root has no password on {HOSTNAME} 0 3 Root has no password. This is a big security risk. 0 {Template MySQL Server:mysql.Is_root_remote_login_enabled.last(0)}=1 MySQL: Root remote login enabled on {HOSTNAME} 1 3 Root may log in remotely. This is a big security risk. 0 {Template MySQL Server:mysql.old_passwords.last(0)}=1 MySQL: Server generates old passwords on {HOSTNAME} 0 2 The server is always generating old passwords. Remove old_passwords from your my.cnf 0 {Template MySQL Server:mysql.skip_show_database.last(0)}=0 MySQL: SHOW DATABASES is enabled on {HOSTNAME} 0 2 This is ok for development, but a security risk for production. Add skip_show_database to your my.cnf file. 0 {Template MySQL Server:mysql.have_symlink.last(0)}=1 MySQL: Symlinks are enabled on {HOSTNAME} 0 2 This is ok for development, but a security risk for production. Add skip-symbolic-links to your my.cnf file. 0 {Template MySQL Server:mysql.Percent_table_cache_hit_rate.last(0)}<95 MySQL: Table cache hit rate ({ITEM.LASTVALUE}%) is low on {HOSTNAME} 1 3 Opening tables can be expensive. For example MyISAM tables mark MYI header to mark table as currently in use. You do not want this to happen so frequently and it is typically best to size your cache so it is large enough to keep most of your tables open. It uses some OS resources and some memory but for modern hardware it is typically not the problem. 1024 is good value for applications with couple hundreds tables (remember each connection needs its own entry) if you have many connections or many tables increase it larger. 0 {Template MySQL Server:mysql.Percent_table_lock_contention.last(0)}>30 MySQL: Table lock contention ({ITEM.LASTVALUE}%) is degrading performance on {HOSTNAME} 0 2 Table lock contention at >30%. Look for LOCK TABLES using SHOW PROCESS LIST 0 {Template MySQL Server:mysql.Percent_table_lock_contention.last(0)}>60 MySQL: Table lock contention ({ITEM.LASTVALUE}%) is degrading performance on {HOSTNAME} 0 4 Table lock contention at >60%. Look for LOCK TABLES using SHOW PROCESS LIST 0 {Template MySQL Server:mysql.Fragmented_table_count.last(0)}>{$FRAGTABLES.WARN} MySQL: Tables are fragmented on {HOSTNAME} 0 3 You have {ITEM.LASTVALUE} tables fragmented. Please optimize. 0 {Template MySQL Server:mysql.Percent_tmp_tables_on_disk.last(0)}>75 MySQL: Temp tables using disk ({ITEM.LASTVALUE}%) on {HOSTNAME} 0 4 Disk usage for tmp tables now at >75%. Change tmp_table_size or max_heap_table_size so that tables can be create in-memory more 0 {Template MySQL Server:mysql.Percent_tmp_tables_on_disk.last(0)}>50 MySQL: Temp tables using disk ({ITEM.LASTVALUE}%) on {HOSTNAME} 0 2 Disk usage for tmp tables now at >50%. Change tmp_table_size or max_heap_table_size so that tables can be create in-memory more 0 {Template MySQL Server:mysql.Percent_thread_cache_hit_rate.last(0)}<93 MySQL: Thread cache hit ratio ({ITEM.LASTVALUE}%) falling on {HOSTNAME} 0 2 Threads are starting to miss Thread Cache. Consider increasing thread_cache_sizeto improve 0 {Template MySQL Server:mysql.Percent_thread_cache_hit_rate.last(0)}<90 MySQL: Thread cache hit ratio ({ITEM.LASTVALUE}%) falling on {HOSTNAME} 0 4 Threads are starting to miss Thread Cache (now at ITEM.LASTVALUE}%). Consider increasing thread_cache_sizeto improve 0 {Template MySQL Server:mysql.Percent_files_open.last(0)}>85 MySQL: Too many files open on {HOSTNAME} 0 3 >85% of files are open. Consider increasing open_files_limit to improve. 0 {Template MySQL Server:mysql.Threads_running.last(0)}>24 MySQL: Too many threads ({ITEM.LASTVALUE}) running on {HOSTNAME} 0 4 Too many active threads indicate a heavy load. Look for unoptimized queries and large result sets frequently being returned. 0 {Template MySQL Server:mysql.Threads_running.last(0)}>19 MySQL: Too many threads ({ITEM.LASTVALUE}) running on {HOSTNAME} 0 2 Too many active threads indicate a heavy load. Look for unoptimized queries and large result sets frequently being returned. 0 {Template MySQL Server:mysql.Accounts_with_broad_host_specifier.last(0)}>0 MySQL: Users have blank or wildcard hosts on {HOSTNAME} 1 3 Users without a host or users with a host of '%' only are security risks. Consider specifying valid hosts for these users. 0 {Template MySQL Server:mysql.Accounts_without_password.last(0)}>0 MySQL: Users without passwords on {HOSTNAME} 0 2 Users without passwords is a big security risk. Please consider assigning passwords on these accounts. 0 {Template MySQL Server:mysql.sql_mode.last(0)}=0 MySQL: Validation (sql_mode) is not enabled on {HOSTNAME} 0 1 Utilize MySQL sql validation by setting the sql_mode variable in my.cnf to one of the following: TRADITIONAL, STRICT_TRANS_TABLES, STRICT_ALL_TABLES. 0 {Template MySQL Server:proc.num[mysqld].avg(120)}=0 MySQL is not running on {HOST.NAME} 0 5 0