前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >zabbix3.4监控mysql服务器性能 原

zabbix3.4监控mysql服务器性能 原

作者头像
拓荒者
发布2019-03-11 10:42:18
8710
发布2019-03-11 10:42:18
举报
文章被收录于专栏:运维经验分享运维经验分享
代码语言:javascript
复制
  1. 背景:由于zabbix3.4里面的mysql监控模板没有监控mysql的key,所以需要自己重新定义需要监控的key。
  2. Zabbix Server与Agent之间监控数据的采集主要是通过Zabbix Server主动向Agent询问某个Key的值,
  3. Agent会根据Key去调用相应的函数去获取这个值并返回给Server端。
  4. 监控需求:
  5. 1、监控MySQL的状态,当状态发生异常,发出报警;
  6. 2、监控MySQL的操作,并用图表展现;
  7. 3、使用自定义脚本监控扩展Agent。
  8. 一、授权mysql登录用户(agentd端操作)
代码语言:javascript
复制
  1. MariaDB [(none)]> grant usage on *.* to 'read'@'47.98.97.124' identified by '123456';
  2. Query OK, 0 rows affected (0.00 sec)
  3. MariaDB [(none)]> flush privileges;
  4. Query OK, 0 rows affected (0.00 sec)
代码语言:javascript
复制
二、编辑userparameter_mysql.conf文件
代码语言:javascript
复制
  1. [root@host-47-98-97-124 ~]# cp /root/zabbix-3.4.2/conf/zabbix_agentd/userparameter_mysql.conf /usr/local/zabbix/etc/zabbix_agentd.conf.d/
  2. [root@host-47-98-97-124 ~]# vi /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_mysql.conf
  3. UserParameter=mysql.version,mysql -V
  4. UserParameter=mysql.status[*],/usr/local/zabbix/scripts/chk_mysql.sh $1
  5. [root@host-47-98-97-124 ~]# mkdir /usr/local/zabbix/scripts
  6. [root@host-47-98-97-124 ~]# chmod +x /usr/local/zabbix/scripts/chk_mysql.sh
  7. [root@host-47-98-97-124 ~]# vi /usr/local/zabbix/etc/zabbix_agentd.conf
  8. Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf #开启
代码语言:javascript
复制
三、mysql服务器性能监控脚本
代码语言:javascript
复制
  1. #!/bin/bash
  2. #Filename:chk_mysql.sh
  3. #Author:zhangjunchao
  4. MYSQL_SOCK="/var/lib/mysql/mysql.sock"
  5. MYSQL_USER='read'
  6. MYSQL_PASSWORD='123456'
  7. MYSQL_HOST='47.98.97.124'
  8. MYSQL_PORT='3306'
  9. MYSQL_Connect="/usr/bin/mysqladmin -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -P$MYSQL_PORT -S$MYSQL_SOCK"
  10. if [ $# -ne 1 ];then
  11. echo "please input one arguement"
  12. fi
  13. case $1 in
  14. Uptime) #查询当前MySQL本次启动后的运行统计时间
  15. result=`${MYSQL_Connect} status | cut -d ":" -f 2 | cut -d " " -f 2`
  16. echo $result
  17. ;;
  18. Slow_queries) #查看当前慢查询语句的个数
  19. result=`${MYSQL_Connect} extended-status | grep -w "Slow_queries" | cut -d "|" -f 3`
  20. echo $result
  21. ;;
  22. Com_rollback) #执行回滚的个数
  23. result=`${MYSQL_Connect} extended-status | grep -w "Com_rollback" | cut -d "|" -f 3`
  24. echo $result
  25. ;;
  26. Questions)
  27. result=`${MYSQL_Connect} extended-status | grep -w "Questions" | cut -d "|" -f 3`
  28. echo $result
  29. ;;
  30. Com_commit)
  31. result=`${MYSQL_Connect} extended-status | grep -w "Com_commit" | cut -d "|" -f 3`
  32. echo $result
  33. ;;
  34. Bytes_sent) #发送的字节数
  35. result=`${MYSQL_Connect} extended-status | grep -w "Bytes_sent" | cut -d "|" -f 3`
  36. echo $result
  37. ;;
  38. Bytes_received) #接受的字节数
  39. result=`${MYSQL_Connect} extended-status | grep -w "Bytes_received" | cut -d "|" -f 3`
  40. echo $result
  41. ;;
  42. Com_begin)
  43. result=`${MYSQL_Connect} extended-status | grep -w "Com_begin" | cut -d "|" -f 3`
  44. echo $result
  45. ;;
  46. Open_tables) #查看当前打开的表数量
  47. result=`${MYSQL_Connect} status | cut -d ":" -f 5 | cut -d " " -f 2`
  48. echo $result
  49. ;;
  50. Threads_connected) #查看当前打开的连接数量
  51. result=`${MYSQL_Connect} extended-status | grep -w "Threads_connected" | cut -d "|" -f 3`
  52. echo $result
  53. ;;
  54. Threads_cached) #查看线程缓存内的线程数量
  55. result=`${MYSQL_Connect} extended-status | grep -w "Threads_cached" | cut -d "|" -f 3`
  56. echo $result
  57. ;;
  58. Threads_created) #查看创建用来处理连接的线程数。如果Threads_created较大,可能要增加thread_cache_size值。
  59. result=`${MYSQL_Connect} extended-status | grep -w "Threads_created" | cut -d "|" -f 3`
  60. echo $result
  61. ;;
  62. Threads_running) #查看激活的(非睡眠状态)线程数
  63. result=`${MYSQL_Connect} extended-status | grep -w "Threads_running" | cut -d "|" -f 3`
  64. echo $result
  65. ;;
  66. Slow_launch_threads) #查看创建时间超过slow_launch_time秒的线程数
  67. result=`${MYSQL_Connect} extended-status | grep -w "Slow_launch_threads" | cut -d "|" -f 3`
  68. echo $result
  69. ;;
  70. Com_select) #查看select语句的执行数
  71. result=`${MYSQL_Connect} extended-status | grep -w "Com_select" |cut -d "|" -f 3`
  72. echo $result
  73. ;;
  74. Com_insert) #查看insert语句的执行数
  75. result=`${MYSQL_Connect} extended-status | grep -w "Com_insert" |cut -d "|" -f 3`
  76. echo $result
  77. ;;
  78. Com_update) #查看update语句的执行数
  79. result=`${MYSQL_Connect} extended-status | grep -w "Com_update" | cut -d "|" -f 3`
  80. echo $result
  81. ;;
  82. Com_delete) #查看delete语句的执行数
  83. result=`${MYSQL_Connect} extended-status | grep -w "Com_delete" | cut -d "|" -f 3`
  84. echo $result
  85. ;;
  86. Connections) #查看试图连接到MySQL(不管是否连接成功)的连接数
  87. result=`${MYSQL_Connect} extended-status | grep -w "Connections" | cut -d "|" -f 3`
  88. echo $result
  89. ;;
  90. Table_locks_immediate) #查看立即获得的表的锁的次数
  91. result=`${MYSQL_Connect} extended-status | grep -w "Table_locks_immediate" | cut -d "|" -f 3`
  92. echo $result
  93. ;;
  94. Table_locks_waited) #查看不能立即获得的表的锁的次数。如果该值较高,并且有性能问题,你应首先优化查询,然后拆分表或使用复制
  95. result=`${MYSQL_Connect} extended-status | grep -w "Table_locks_waited" | cut -d "|" -f 3`
  96. echo $result
  97. ;;
  98. *)
  99. echo "Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)"
  100. ;;
  101. esac
代码语言:javascript
复制
四、测试数据
代码语言:javascript
复制
  1. server端测试:
  2. [root@host-39-108-217-12 ~]# /usr/local/zabbix/bin/zabbix_get -s 47.98.97.124 -p 10050 -k mysql.status[Connections]
  3. 11232
  4. [root@host-39-108-217-12 ~]# /usr/local/zabbix/bin/zabbix_get -s 47.98.97.124 -p 10050 -k mysql.status[Uptime]
  5. 83228
  6. agentd端测试:
  7. [root@host-47-98-97-124 ~]# /usr/local/zabbix/sbin/zabbix_agentd -t mysql.status[Uptime] -c /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_mysql.conf
  8. mysql.status[Uptime] [t|83321]
  9. [root@host-47-98-97-124 ~]# /usr/local/zabbix/sbin/zabbix_agentd -t mysql.status[Connections] -c /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_mysql.conf
  10. mysql.status[Connections] [t|11263]
代码语言:javascript
复制
五、登录zabbix,添加mysql监控模板
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
代码语言:javascript
复制
  1. 当然,mysql监控模板的key只要那么默认的几个,要想监控到chk_mysql.sh脚本中的数据,就需要手动创建item啦,
  2. 当然,如果需要报警通知的话,就需要先手动创建trigger了,
  3. 当然,如果想图形刷看到数据的话,就需要手动创建graph了。

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018/10/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档