共计 3796 个字符,预计需要花费 10 分钟才能阅读完成。
Zabbix 自己提供的模板可以监控 MySQL slow queries,mysqlversion,uptime,alive 等。
1.Zabbix 官方提供的监控 mysql 的模板 Template AppMySQL, 可以看到相关的 Items 和 key。
2. 把该模板 Template App MySQL Link 到相关的主机上面, 发现 Item 的 Status 是不可用的,因为 key 的值是通过 Mysql 用户查看 ”showglobal status” 信息或者用 mysqladmin 命令查看 status 或 extended-status 的信息而取的值。
1. mysql> show global status;
2. mysql> show status;
3. 结合官方提供的 key 编写 Shell 脚本,从数据库中取出 Items 的 key 的值。
1. #!/bin/sh
2. #Create by huxianglin 2015.04.14
3. MYSQL_SOCK=”/tmp/mysql.sock”
4. MYSQL_PWD=xxxxxx
5. ARGS=1
6. if [$# -ne “$ARGS”];then
7. echo “Please input onearguement:”
8. fi
9. case $1 in
10. Uptime)
11. result=`mysqladmin -uroot-p${MYSQL_PWD} -S $MYSQL_SOCK status|cut -f2 -d”:”|cut -f1-d”T”`
12. echo $result
13. ;;
14. Com_update)
15. result=`mysqladmin -uroot-p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w”Com_update”|cut -d”|” -f3`
16. echo $result
17. ;;
18. Slow_queries)
19. result=`mysqladmin -uroot -p${MYSQL_PWD}-S $MYSQL_SOCK status |cut -f5 -d”:”|cut -f1 -d”O”`
20. echo $result
21. ;;
22. Com_select)
23. result=`mysqladmin -uroot-p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w”Com_select”|cut -d”|” -f3`
24. echo $result
25. ;;
26. Com_rollback)
27. result=`mysqladmin -uroot-p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w”Com_rollback”|cut -d”|” -f3`
28. echo $result
29. ;;
30. Questions)
31. result=`mysqladmin -uroot -p${MYSQL_PWD}-S $MYSQL_SOCK status|cut -f4 -d”:”|cut -f1 -d”S”`
32. echo $result
33. ;;
34. Com_insert)
35. result=`mysqladmin -uroot-p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w”Com_insert”|cut -d”|” -f3`
36. echo $result
37. ;;
38. Com_delete)
39. result=`mysqladmin -uroot-p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w”Com_delete”|cut -d”|” -f3`
40. echo $result
41. ;;
42. Com_commit)
43. result=`mysqladmin -uroot-p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w”Com_commit”|cut -d”|” -f3`
44. echo $result
45. ;;
46. Bytes_sent)
47. result=`mysqladmin -uroot-p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w “Bytes_sent”|cut -d”|” -f3`
48. echo $result
49. ;;
50. Bytes_received)
51. result=`mysqladmin -uroot-p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w”Bytes_received” |cut -d”|” -f3`
52. echo $result
53. ;;
54. Com_begin)
55. result=`mysqladmin -uroot-p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w”Com_begin”|cut -d”|” -f3`
56. echo $result
57. ;;
58.
59. *)
60. echo”Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions)”
61. ;;
62.esac
修改权限 chmod 755 /etc/zabbix-2.4.4/scripts/checkmysqlperformance.sh
4. 在 Zabbix_agentd.conf 里面添加 UserParameter,格式如下,对于 Zabbix 来说,脚本其实就是一个插件。
1. UserParameter=mysql.version,mysql -V
2. UserParameter=mysql.ping,mysqladmin -uroot -pxxxxxx -S /tmp/mysql.sock ping | grep -c alive
3. UserParameter=mysql.status[*],/etc/zabbix-2.4.4/scripts/checkmysqlperformance.sh $1 $2
5. 重启 agentd 服务器,然后在 zabbix server 中添加模板 Template AppMySQL。
6. 在 zabbix 前端可以实时查看 SQL 语句每秒钟的操作次数。
7. 在 zabbix 前端可以实时查看 mysql 发送接收的字节数。其中 bytes received 表示从所有客户端接收到的字节数,bytes sent 表示发送给所有客户端的字节数。
总结
把该脚本放到要监控的服务器上面(Modifymysql user and password),修改 UserParameter 的参数并重启 agentd,Link 官方提供的 Template App MySQL 模板即可。
我这里是测试环境用 root 账号,线上服务器安全期间可以给 mysql 用户授权 readonly 权限。
根据实际的需求,除了监控上述监控项之外,还可以监控 mysqlprocesslist,Innodb 等。
一些 Zabbix 相关教程集合:
安装部署分布式监控系统 Zabbix 2.06 http://www.linuxidc.com/Linux/2013-07/86942.htm
《安装部署分布式监控系统 Zabbix 2.06》http://www.linuxidc.com/Linux/2013-07/86942.htm
CentOS 6.3 下 Zabbix 安装部署 http://www.linuxidc.com/Linux/2013-05/83786.htm
Zabbix 分布式监控系统实践 http://www.linuxidc.com/Linux/2013-06/85758.htm
CentOS 6.3 下 Zabbix 监控 apache server-status http://www.linuxidc.com/Linux/2013-05/84740.htm
CentOS 6.3 下 Zabbix 监控 MySQL 数据库参数 http://www.linuxidc.com/Linux/2013-05/84800.htm
64 位 CentOS 6.2 下安装 Zabbix 2.0.6 http://www.linuxidc.com/Linux/2014-11/109541.htm
ZABBIX 的详细介绍:请点这里
ZABBIX 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-04/116304.htm