(1)agent端配置
1)配置脚本获取mysql的各种参数
注意:脚本中定义host
#vim /etc/zabbix/zabbix_agentd.d/mysql_status.sh
#!/bin/bash
MySQlBin=/usr/bin/mysql
MySQLAdminBin=mysqladmin
Host=localhost
if [[ $# == 1 ]];then
case $1 in
Ping)
result=$($MySQLAdminBin -h$Host ping|grep alive|wc -l)
echo $result
;;
Threads)
result=$($MySQLAdminBin -h$Host status|cut -f3 -d":"|cut -f1 -d"Q")
echo $result
;;
Questions)
result=$($MySQLAdminBin -h$Host status|cut -f4 -d":"|cut -f1 -d"S")
echo $result
;;
Slowqueries)
result=$($MySQLAdminBin -h$Host status|cut -f5 -d":"|cut -f1 -d"O")
echo $result
;;
Qps)
result=$($MySQLAdminBin -h$Host status|cut -f9 -d":")
echo $result
;;
Slave_IO_State)
result=$(if [ "$($MySQlBin -h$Host -e "show slave statusG"| grep Slave_IO_Running|awk '{print $2}')" == "Yes" ];then echo 1; else echo 0;fi)
echo $result
;;
Slave_SQL_State)
result=$(if [ "$($MySQlBin -h$Host -e "show slave statusG"| grep Slave_SQL_Running|awk '{print $2}')" == "Yes" ];then echo 1; else echo 0;fi)
echo $result
;;
Key_buffer_size)
result=$($MySQlBin -h$Host -e "show variables like 'key_buffer_size';"| grep -v Value |awk '{print $2/1024^2}')
echo $result
;;
Key_reads)
result=$($MySQlBin -h$Host -e "show status like 'key_reads';"| grep -v Value |awk '{print $2}')
echo $result
;;
Key_read_requests)
result=$($MySQlBin -h$Host -e "show status like 'key_read_requests';"| grep -v Value |awk '{print $2}')
echo $result
;;
Key_cache_miss_rate)
result=$(echo $($MySQlBin -h$Host -e "show status like 'key_reads';"| grep -v Value |awk '{print $2}') $($MySQlBin -h$Host -e "show status like 'key_read_requests';"| grep -v Value |awk '{print $2}')| awk '{if($2==0)printf("%1.4f
",0);else printf("%1.4f
",$1/$2*100);}')
echo $result
;;
Key_blocks_used)
result=$($MySQlBin -h$Host -e "show status like 'key_blocks_used';"| grep -v Value |awk '{print $2}')
echo $result
;;
Key_blocks_unused)
result=$($MySQlBin -h$Host -e "show status like 'key_blocks_unused';"| grep -v Value |awk '{print $2}')
echo $result
;;
Key_blocks_used_rate)
result=$(echo $($MySQlBin -h$Host -e "show status like 'key_blocks_used';"| grep -v Value |awk '{print $2}') $($MySQlBin -h$Host -e "show status like 'key_blocks_unused';"| grep -v Value |awk '{print $2}')| awk '{if(($1==0) && ($2==0))printf("%1.4f
",0);else printf("%1.4f
",$1/($1+$2)*100);}')
echo $result
;;
Innodb_buffer_pool_size)
result=$($MySQlBin -h$Host -e "show variables like 'innodb_buffer_pool_size';"| grep -v Value |awk '{print $2/1024^2}')
echo $result
;;
Innodb_log_file_size)
result=$($MySQlBin -h$Host -e "show variables like 'innodb_log_file_size';"| grep -v Value |awk '{print $2/1024^2}')
echo $result
;;
Innodb_log_buffer_size)
result=$($MySQlBin -h$Host -e "show variables like 'innodb_log_buffer_size';"| grep -v Value |awk '{print $2/1024^2}')
echo $result
;;
Table_open_cache)
result=$($MySQlBin -h$Host -e "show variables like 'table_open_cache';"| grep -v Value |awk '{print $2}')
echo $result
;;
Open_tables)
result=$($MySQlBin -h$Host -e "show status like 'open_tables';"| grep -v Value |awk '{print $2}')
echo $result
;;
Opened_tables)
result=$($MySQlBin -h$Host -e "show status like 'opened_tables';"| grep -v Value |awk '{print $2}')
echo $result
;;
Open_tables_rate)
result=$(echo $($MySQlBin -h$Host -e "show status like 'open_tables';"| grep -v Value |awk '{print $2}') $($MySQlBin -h$Host -e "show status like 'opened_tables';"| grep -v Value |awk '{print $2}')| awk '{if(($1==0) && ($2==0))printf("%1.4f
",0);else printf("%1.4f
",$1/($1+$2)*100);}')
echo $result
;;
Table_open_cache_used_rate)
result=$(echo $($MySQlBin -h$Host -e "show status like 'open_tables';"| grep -v Value |awk '{print $2}') $($MySQlBin -h$Host -e "show variables like 'table_open_cache';"| grep -v Value |awk '{print $2}')| awk '{if(($1==0) && ($2==0))printf("%1.4f
",0);else printf("%1.4f
",$1/($1+$2)*100);}')
echo $result
;;
Thread_cache_size)
result=$($MySQlBin -h$Host -e "show variables like 'thread_cache_size';"| grep -v Value |awk '{print $2}')
echo $result
;;
Threads_cached)
result=$($MySQlBin -h$Host -e "show status like 'Threads_cached';"| grep -v Value |awk '{print $2}')
echo $result
;;
Threads_connected)
result=$($MySQlBin -h$Host -e "show status like 'Threads_connected';"| grep -v Value |awk '{print $2}')
echo $result
;;
Threads_created)
result=$($MySQlBin -h$Host -e "show status like 'Threads_created';"| grep -v Value |awk '{print $2}')
echo $result
;;
Threads_running)
result=$($MySQlBin -h$Host -e "show status like 'Threads_running';"| grep -v Value |awk '{print $2}')
echo $result
;;
Qcache_free_blocks)
result=$($MySQlBin -h$Host -e "show status like 'Qcache_free_blocks';"| grep -v Value |awk '{print $2}')
echo $result
;;
Qcache_free_memory)
result=$($MySQlBin -h$Host -e "show status like 'Qcache_free_memory';"| grep -v Value |awk '{print $2}')
echo $result
;;
Qcache_hits)
result=$($MySQlBin -h$Host -e "show status like 'Qcache_hits';"| grep -v Value |awk '{print $2}')
echo $result
;;
Qcache_inserts)
result=$($MySQlBin -h$Host -e "show status like 'Qcache_inserts';"| grep -v Value |awk '{print $2}')
echo $result
;;
Qcache_lowmem_prunes)
result=$($MySQlBin -h$Host -e "show status like 'Qcache_lowmem_prunes';"| grep -v Value |awk '{print $2}')
echo $result
;;
Qcache_not_cached)
result=$($MySQlBin -h$Host -e "show status like 'Qcache_not_cached';"| grep -v Value |awk '{print $2}')
echo $result
;;
Qcache_queries_in_cache)
result=$($MySQlBin -h$Host -e "show status like 'Qcache_queries_in_cache';"| grep -v Value |awk '{print $2}')
echo $result
;;
Qcache_total_blocks)
result=$($MySQlBin -h$Host -e "show status like 'Qcache_total_blocks';"| grep -v Value |awk '{print $2}')
echo $result
;;
Qcache_fragment_rate)
result=$(echo $($MySQlBin -h$Host -e "show status like 'Qcache_free_blocks';"| grep -v Value |awk '{print $2}') $($MySQlBin -h$Host -e "show status like 'Qcache_total_blocks';"| grep -v Value |awk '{print $2}')| awk '{if($2==0)printf("%1.4f
",0);else printf("%1.4f
",$1/$2*100);}')
echo $result
;;
Qcache_used_rate)
result=$(echo $($MySQlBin -h$Host -e "show variables like 'query_cache_size';"| grep -v Value |awk '{print $2}') $($MySQlBin -h$Host -e "show status like 'Qcache_free_memory';"| grep -v Value |awk '{print $2}')| awk '{if($1==0)printf("%1.4f
",0);else printf("%1.4f
",($1-$2)/$1*100);}')
echo $result
;;
Qcache_hits_rate)
result=$(echo $($MySQlBin -h$Host -e "show status like 'Qcache_hits';"| grep -v Value |awk '{print $2}') $($MySQlBin -h$Host -e "show status like 'Qcache_inserts';"| grep -v Value |awk '{print $2}')| awk '{if($1==0)printf("%1.4f
",0);else printf("%1.4f
",($1-$2)/$1*100);}')
echo $result
;;
Query_cache_limit)
result=$($MySQlBin -h$Host -e "show variables like 'query_cache_limit';"| grep -v Value |awk '{print $2}')
echo $result
;;
Query_cache_min_res_unit)
result=$($MySQlBin -h$Host -e "show variables like 'query_cache_min_res_unit';"| grep -v Value |awk '{print $2}')
echo $result
;;
Query_cache_size)
result=$($MySQlBin -h$Host -e "show variables like 'query_cache_size';"| grep -v Value |awk '{print $2}')
echo $result
;;
Sort_merge_passes)
result=$($MySQlBin -h$Host -e "show status like 'Sort_merge_passes';"| grep -v Value |awk '{print $2}')
echo $result
;;
Sort_range)
result=$($MySQlBin -h$Host -e "show status like 'Sort_range';"| grep -v Value |awk '{print $2}')
echo $result
;;
Sort_rows)
result=$($MySQlBin -h$Host -e "show status like 'Sort_rows';"| grep -v Value |awk '{print $2}')
echo $result
;;
Sort_scan)
result=$($MySQlBin -h$Host -e "show status like 'Sort_scan';"| grep -v Value |awk '{print $2}')
echo $result
;;
Handler_read_first)
result=$($MySQlBin -h$Host -e "show status like 'Handler_read_first';"| grep -v Value |awk '{print $2}')
echo $result
;;
Handler_read_key)
result=$($MySQlBin -h$Host -e "show status like 'Handler_read_key';"| grep -v Value |awk '{print $2}')
echo $result
;;
Handler_read_next)
result=$($MySQlBin -h$Host -e "show status like 'Handler_read_next';"| grep -v Value |awk '{print $2}')
echo $result
;;
Handler_read_prev)
result=$($MySQlBin -h$Host -e "show status like 'Handler_read_prev';"| grep -v Value |awk '{print $2}')
echo $result
;;
Handler_read_rnd)
result=$($MySQlBin -h$Host -e "show status like 'Handler_read_rnd';"| grep -v Value |awk '{print $2}')
echo $result
;;
Handler_read_rnd_next)
result=$($MySQlBin -h$Host -e "show status like 'Handler_read_rnd_next';"| grep -v Value |awk '{print $2}')
echo $result
;;
Com_select)
result=$($MySQlBin -h$Host -e "show status like 'com_select';"| grep -v Value |awk '{print $2}')
echo $result
;;
Com_insert)
result=$($MySQlBin -h$Host -e "show status like 'com_insert';"| grep -v Value |awk '{print $2}')
echo $result
;;
Com_insert_select)
result=$($MySQlBin -h$Host -e "show status like 'com_insert_select';"| grep -v Value |awk '{print $2}')
echo $result
;;
Com_update)
result=$($MySQlBin -h$Host -e "show status like 'com_update';"| grep -v Value |awk '{print $2}')
echo $result
;;
Com_replace)
result=$($MySQlBin -h$Host -e "show status like 'com_replace';"| grep -v Value |awk '{print $2}')
echo $result
;;
Com_replace_select)
result=$($MySQlBin -h$Host -e "show status like 'com_replace_select';"| grep -v Value |awk '{print $2}')
echo $result
;;
Table_scan_rate)
result=$(echo $($MySQlBin -h$Host -e "show status like 'Handler_read_rnd_next';"| grep -v Value |awk '{print $2}') $($MySQlBin -h$Host -e "show status like 'com_select';"| grep -v Value |awk '{print $2}')| awk '{if($2==0)printf("%1.4f
",0);else printf("%1.4f
",$1/$2*100);}')
echo $result
;;
Open_files)
result=$($MySQlBin -h$Host -e "show status like 'open_files';"| grep -v Value |awk '{print $2}')
echo $result
;;
Open_files_limit)
result=$($MySQlBin -h$Host -e "show variables like 'open_files_limit';"| grep -v Value |awk '{print $2}')
echo $result
;;
Open_files_rate)
result=$(echo $($MySQlBin -h$Host -e "show status like 'open_files';"| grep -v Value |awk '{print $2}') $($MySQlBin -h$Host -e "show variables like 'open_files_limit';"| grep -v Value |awk '{print $2}')| awk '{if($2==0)printf("%1.4f
",0);else printf("%1.4f
",$1/$2*100);}')
echo $result
;;
Created_tmp_disk_tables)
result=$($MySQlBin -h$Host -e "show status like 'created_tmp_disk_tables';"| grep -v Value |awk '{print $2}')
echo $result
;;
Created_tmp_tables)
result=$($MySQlBin -h$Host -e "show status like 'created_tmp_tables';"| grep -v Value |awk '{print $2}')
echo $result
;;
Created_tmp_disk_tables_rate)
result=$(echo $($MySQlBin -h$Host -e "show status like 'created_tmp_disk_tables';"| grep -v Value |awk '{print $2}') $($MySQlBin -h$Host -e "show status like 'created_tmp_tables';"| grep -v Value |awk '{print $2}')| awk '{if($2==0)printf("%1.4f
",0);else printf("%1.4f
",$1/$2*100);}')
echo $result
;;
Max_connections)
result=$($MySQlBin -h$Host -e "show variables like 'max_connections';"| grep -v Value |awk '{print $2}')
echo $result
;;
Max_used_connections)
result=$($MySQlBin -h$Host -e "show status like 'Max_used_connections';"| grep -v Value |awk '{print $2}')
echo $result
;;
Processlist)
result=$($MySQlBin -h$Host -e "show processlist" | grep -v "Id" | wc -l)
echo $result
;;
Max_connections_used_rate)
result=$(echo $($MySQlBin -h$Host -e "show status like 'Max_used_connections';"| grep -v Value |awk '{print $2}') $($MySQlBin -h$Host -e "show variables like 'max_connections';"| grep -v Value |awk '{print $2}')| awk '{if($2==0)printf("%1.4f
",0);else printf("%1.4f
",$1/$2*100);}')
echo $result
;;
Connection_occupancy_rate)
result=$(echo $($MySQlBin -h$Host -e "show status like 'Threads_connected';"| grep -v Value |awk '{print $2}') $($MySQlBin -h$Host -e "show variables like 'max_connections';"| grep -v Value |awk '{print $2}')| awk '{if($2==0)printf("%1.4f
",0);else printf("%5.4f
",$1/$2*100);}')
echo $result
;;
Table_locks_immediate)
result=$($MySQlBin -h$Host -e "show status like 'Table_locks_immediate';"| grep -v Value |awk '{print $2}')
echo $result
;;
Table_locks_waited)
result=$($MySQlBin -h$Host -e "show status like 'table_locks_waited';"| grep -v Value |awk '{print $2}')
echo $result
;;
Engine_select)
result=$(echo $($MySQlBin -h$Host -e "show status like 'Table_locks_immediate';"| grep -v Value |awk '{print $2}') $($MySQlBin -h$Host -e "show status like 'table_locks_waited';"| grep -v Value | awk '{print $2}') | awk '{if($2==0)printf("%1.4f
",0);else printf("%5.4f
",$1/$2*100);}')
echo $result
;;
*)
echo -e " 33[33mUsage: ./getmysqlinfo {Ping|Threads|Questions|Slowqueries|Qps|Slave_IO_State|Slave_SQL_State|Key_buffer_size|Key_reads|Key_read_requests|Key_cache_miss_rate|Key_blocks_used|Key_blocks_unused|Key_blocks_used_rate|Innodb_buffer_pool_size|Innodb_log_file_size|Innodb_log_buffer_size|Table_open_cache|Open_tables|Opened_tables|Open_tables_rate|Table_open_cache_used_rate|Thread_cache_size|Threads_cached|Threads_connected|Threads_created|Threads_running|Qcache_free_blocks|Qcache_free_memory|Qcache_hits|Qcache_inserts|Qcache_lowmem_prunes|Qcache_not_cached|Qcache_queries_in_cache|Qcache_total_blocks|Qcache_fragment_rate|Qcache_used_rate|Qcache_hits_rate|Query_cache_limit|Query_cache_min_res_unit|Query_cache_size|Sort_merge_passes|Sort_range|Sort_rows|Sort_scan|Handler_read_first|Handler_read_key|Handler_read_next|Handler_read_prev|Handler_read_rnd|Handler_read_rnd_next|Com_select|Com_insert|Com_insert_select|Com_update|Com_replace|Com_replace_select|Table_scan_rate|Open_files|Open_files_limit|Open_files_rate|Created_tmp_disk_tables|Created_tmp_tables|Created_tmp_disk_tables_rate|Max_connections|Max_used_connections|Processlist|Max_connections_used_rate|Table_locks_immediate|Table_locks_waited|Engine_select|Connection_occupancy_rate} 33[0m"
;;
esac
fi
2)修改脚本权限
chmod +x /etc/zabbix/zabbix_agentd.d/mysql_status.sh
3)修改agent配置文件
#vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
UserParameter=mysql.status[*],/etc/zabbix/zabbix_agentd.d/mysql_status.sh $1
4)重启服务
systemctl restart zabbix-agent
5)修改mysql配置文件:定义脚本中命令使用的用户名和密码,这样脚本中就不需要带user和password选项了
#vim /etc/my.cnf
[client]
user = root
password = redhat
(2)server端配置
思路:定义mysql模板--->定义应用集---定义监控项---定义图集---定义触发器---->添加主机或主机关联这个模板
1)zabbix-server端zabbix_get测试获取
# zabbix_get -s 192.168.1.33 -k mysql.status[Max_connections]
151
2)key值
mysql.status[Ping]
mysql.status[Threads]
mysql.status[Questions]
mysql.status[Slowqueries]
mysql.status[Qps]
mysql.status[Slave_IO_State]
mysql.status[Slave_SQL_State]
mysql.status[Key_buffer_size]
mysql.status[Key_reads]
mysql.status[Key_read_requests]
mysql.status[Key_cache_miss_rate]
mysql.status[Key_blocks_used]
mysql.status[Key_blocks_unused]
mysql.status[Key_blocks_used_rate]
mysql.status[Innodb_buffer_pool_size]
mysql.status[Innodb_log_file_size]
mysql.status[Innodb_log_buffer_size]
mysql.status[Table_open_cache]
mysql.status[Open_tables]
mysql.status[Opened_tables]
mysql.status[Open_tables_rate]
mysql.status[Table_open_cache_used_rate]
mysql.status[Thread_cache_size]
mysql.status[Threads_cached]
mysql.status[Threads_connected]
mysql.status[Threads_created]
mysql.status[Threads_running]
mysql.status[Qcache_free_blocks]
mysql.status[Qcache_free_memory]
mysql.status[Qcache_hits]
mysql.status[Qcache_inserts]
mysql.status[Qcache_lowmem_prunes]
mysql.status[Qcache_not_cached]
mysql.status[Qcache_queries_in_cache]
mysql.status[Qcache_total_blocks]
mysql.status[Qcache_fragment_rate]
mysql.status[Qcache_used_rate]
mysql.status[Qcache_hits_rate]
mysql.status[Query_cache_limit]
mysql.status[Query_cache_min_res_unit]
mysql.status[Query_cache_size]
mysql.status[Sort_merge_passes]
mysql.status[Sort_range]
mysql.status[Sort_rows]
mysql.status[Sort_scan]
mysql.status[Handler_read_first]
mysql.status[Handler_read_key]
mysql.status[Handler_read_next]
mysql.status[Handler_read_prev]
mysql.status[Handler_read_rnd]
mysql.status[Handler_read_rnd_next]
mysql.status[Com_select]
mysql.status[Com_insert]
mysql.status[Com_insert_select]
mysql.status[Com_update]
mysql.status[Com_replace]
mysql.status[Com_replace_select]
mysql.status[Table_scan_rate]
mysql.status[Open_files]
mysql.status[Open_files_limit]
mysql.status[Open_files_rate]
mysql.status[Created_tmp_disk_tables]
mysql.status[Created_tmp_tables]
mysql.status[Created_tmp_disk_tables_rate]
mysql.status[Max_connections]
mysql.status[Max_used_connections]
mysql.status[Processlist]
mysql.status[Max_connections_used_rate]
mysql.status[Table_locks_immediate]
mysql.status[Table_locks_waited]
mysql.status[Engine_select]
mysql.status[Connection_occupancy_rate]