• (十一)zabbix监控mysql


    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]

    3)定义监控项

    4)定义图形

    5)验证图形

     
  • 相关阅读:
    使用JDBC连接MySql时出现:The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration
    Mysql Lost connection to MySQL server at ‘reading initial communication packet', system error: 0
    mysql-基本命令
    C# 监听值的变化
    DataGrid样式
    C# 获取当前日期时间
    C# 中生成随机数
    递归和迭代
    PHP 时间转几分几秒
    PHP 根据整数ID,生成唯一字符串
  • 原文地址:https://www.cnblogs.com/shaonli/p/12089924.html
Copyright © 2020-2023  润新知