zabbix3.4監控mysql服務器性能

 
  1. 背景:因爲zabbix3.4裏面的mysql監控模板沒有監控mysql的key,因此須要本身從新定義須要監控的key。mysql

  2.  
  3. Zabbix Server與Agent之間監控數據的採集主要是經過Zabbix Server主動向Agent詢問某個Key的值,sql

  4. Agent會根據Key去調用相應的函數去獲取這個值並返回給Server端。緩存

  5.  
  6. 監控需求:bash

  7. 一、監控MySQL的狀態,當狀態發生異常,發出報警;服務器

  8. 二、監控MySQL的操做,並用圖表展示;ide

  9. 三、使用自定義腳本監控擴展Agent。 函數

  10.  
  11. 1、受權mysql登陸用戶(agentd端操做)性能

 
  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.  
  4. MariaDB [(none)]> flush privileges;

  5. Query OK, 0 rows affected (0.00 sec)

2、編輯userparameter_mysql.conf文件
 
  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.  
  3. [root@host-47-98-97-124 ~]# vi /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_mysql.conf

  4. UserParameter=mysql.version,mysql -V

  5. UserParameter=mysql.status[*],/usr/local/zabbix/scripts/chk_mysql.sh $1

  6.  
  7. [root@host-47-98-97-124 ~]# mkdir /usr/local/zabbix/scripts

  8. [root@host-47-98-97-124 ~]# chmod +x /usr/local/zabbix/scripts/chk_mysql.sh

  9.  
  10. [root@host-47-98-97-124 ~]# vi /usr/local/zabbix/etc/zabbix_agentd.conf

  11. Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf #開啓

  12.  
3、mysql服務器性能監控腳本
 
  1. #!/bin/bash

  2.  
  3. #Filename:chk_mysql.sh

  4. #Author:zhangjunchao

  5.  
  6. MYSQL_SOCK="/var/lib/mysql/mysql.sock"

  7. MYSQL_USER='read'

  8. MYSQL_PASSWORD='123456'

  9. MYSQL_HOST='47.98.97.124'

  10. MYSQL_PORT='3306'

  11. MYSQL_Connect="/usr/bin/mysqladmin -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -P$MYSQL_PORT -S$MYSQL_SOCK"

  12.  
  13. if [ $# -ne 1 ];then

  14. echo "please input one arguement"

  15. fi

  16.  
  17. case $1 in

  18.  
  19. Uptime) #查詢當前MySQL本次啓動後的運行統計時間

  20. result=`${MYSQL_Connect} status | cut -d ":" -f 2 | cut -d " " -f 2`

  21. echo $result

  22. ;;

  23.  
  24. Slow_queries) #查看當前慢查詢語句的個數

  25. result=`${MYSQL_Connect} extended-status | grep -w "Slow_queries" | cut -d "|" -f 3`

  26. echo $result

  27. ;;

  28.  
  29. Com_rollback) #執行回滾的個數

  30. result=`${MYSQL_Connect} extended-status | grep -w "Com_rollback" | cut -d "|" -f 3`

  31. echo $result

  32. ;;

  33.  
  34. Questions)

  35. result=`${MYSQL_Connect} extended-status | grep -w "Questions" | cut -d "|" -f 3`

  36. echo $result

  37. ;;

  38.  
  39. Com_commit)

  40. result=`${MYSQL_Connect} extended-status | grep -w "Com_commit" | cut -d "|" -f 3`

  41. echo $result

  42. ;;

  43.  
  44. Bytes_sent) #發送的字節數

  45. result=`${MYSQL_Connect} extended-status | grep -w "Bytes_sent" | cut -d "|" -f 3`

  46. echo $result

  47. ;;

  48.  
  49. Bytes_received) #接受的字節數

  50. result=`${MYSQL_Connect} extended-status | grep -w "Bytes_received" | cut -d "|" -f 3`

  51. echo $result

  52. ;;

  53.  
  54. Com_begin)

  55. result=`${MYSQL_Connect} extended-status | grep -w "Com_begin" | cut -d "|" -f 3`

  56. echo $result

  57. ;;

  58.  
  59. Open_tables) #查看當前打開的表數量

  60. result=`${MYSQL_Connect} status | cut -d ":" -f 5 | cut -d " " -f 2`

  61. echo $result

  62. ;;

  63.  
  64. Threads_connected) #查看當前打開的鏈接數量

  65. result=`${MYSQL_Connect} extended-status | grep -w "Threads_connected" | cut -d "|" -f 3`

  66. echo $result

  67. ;;

  68.  
  69. Threads_cached) #查看線程緩存內的線程數量

  70. result=`${MYSQL_Connect} extended-status | grep -w "Threads_cached" | cut -d "|" -f 3`

  71. echo $result

  72. ;;

  73.  
  74. Threads_created) #查看建立用來處理鏈接的線程數。若是Threads_created較大,可能要增長thread_cache_size值。

  75. result=`${MYSQL_Connect} extended-status | grep -w "Threads_created" | cut -d "|" -f 3`

  76. echo $result

  77. ;;

  78.  
  79. Threads_running) #查看激活的(非睡眠狀態)線程數

  80. result=`${MYSQL_Connect} extended-status | grep -w "Threads_running" | cut -d "|" -f 3`

  81. echo $result

  82. ;;

  83.  
  84. Slow_launch_threads) #查看建立時間超過slow_launch_time秒的線程數

  85. result=`${MYSQL_Connect} extended-status | grep -w "Slow_launch_threads" | cut -d "|" -f 3`

  86. echo $result

  87. ;;

  88.  
  89. Com_select) #查看select語句的執行數

  90. result=`${MYSQL_Connect} extended-status | grep -w "Com_select" |cut -d "|" -f 3`

  91. echo $result

  92. ;;

  93.  
  94. Com_insert) #查看insert語句的執行數

  95. result=`${MYSQL_Connect} extended-status | grep -w "Com_insert" |cut -d "|" -f 3`

  96. echo $result

  97. ;;

  98.  
  99. Com_update) #查看update語句的執行數

  100. result=`${MYSQL_Connect} extended-status | grep -w "Com_update" | cut -d "|" -f 3`

  101. echo $result

  102. ;;

  103.  
  104. Com_delete) #查看delete語句的執行數

  105. result=`${MYSQL_Connect} extended-status | grep -w "Com_delete" | cut -d "|" -f 3`

  106. echo $result

  107. ;;

  108.  
  109. Connections) #查看試圖鏈接到MySQL(無論是否鏈接成功)的鏈接數

  110. result=`${MYSQL_Connect} extended-status | grep -w "Connections" | cut -d "|" -f 3`

  111. echo $result

  112. ;;

  113.  
  114. Table_locks_immediate) #查看當即得到的表的鎖的次數

  115. result=`${MYSQL_Connect} extended-status | grep -w "Table_locks_immediate" | cut -d "|" -f 3`

  116. echo $result

  117. ;;

  118.  
  119. Table_locks_waited) #查看不能當即得到的表的鎖的次數。若是該值較高,而且有性能問題,你應首先優化查詢,而後拆分表或使用複製

  120. result=`${MYSQL_Connect} extended-status | grep -w "Table_locks_waited" | cut -d "|" -f 3`

  121. echo $result

  122. ;;

  123.  
  124. *)

  125. 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)"

  126. ;;

  127. esac

4、測試數據
 
  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.  
  7. agentd端測試:

  8. [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

  9. mysql.status[Uptime] [t|83321]

  10. [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

  11. mysql.status[Connections] [t|11263]

5、登陸zabbix,添加mysql監控模板

這裏寫圖片描述

這裏寫圖片描述

 
  1. 固然,mysql監控模板的key只要那麼默認的幾個,要想監控到chk_mysql.sh腳本中的數據,就須要手動建立item啦,

  2. 固然,若是須要報警通知的話,就須要先手動建立trigger了,

  3. 固然,若是想圖形刷看到數據的話,就須要手動建立graph了。

相關文章
相關標籤/搜索