我们需要部署一个MySQL服务和一个zabbix-agentd客户端
2.1 编写监控mysql脚本
在nginx服务器(192.168.200.69)上安装一个MySQL 下面是监控mysql状态的一个shell脚本,内容如下:
mkdir -p /server/scripts
cd /server/scripts
vim check_mysql.sh
cat check_mysql.sh
1. #!/bin/bash
2. # author:Mr.sun
3.
4. MySQL_USER="root"
5. MySQL_PWD="linyaonie"
6. MySQL_HOST="127.0.0.1"
7. MySQL_PORT="3306"
8.
9. MySQL_CONN="/usr/local/mysql/bin/mysqladmin -u${MySQL_USER} -h${MySQL_HOST} -P${MySQL_PORT} -p${MySQL_PWD}"
10. if [ $# -ne "1" ];then
11. echo "arg error!"
12. fi
13. case $1 in
14. Uptime)
15. result=`${MySQL_CONN} status | cut -f2 -d":" | cut -f1 -d "T"`
16. echo $result
17. ;;
18. Com_update)
19. result=`${MySQL_CONN} extended-status | grep -w "Com_update" | cut -d"|" -f3`
20. echo $result
21. ;;
22. Slow_querles)
23. result=`${MySQL_CONN} status | cut -f5 -d":" | cut -f1 -d"O"`
24. echo $result
25. ;;
26. Com_select)
27. result=`${MySQL_CONN} extended-status | grep -w "Com_select" | cut -d "|" -f3`
28. echo $result
29. ;;
30. Com_rollback)
31. result=`${MySQL_CONN} extended-status | grep -w "Com_rollback" | cut -d"|" -f3`
32. echo $result
33. ;;
34. Questions)
35. result=`${MySQL_CONN} status | cut -f4 -d":" | cut -f1 -d"S"`
36. echo $result
37. ;;
38. Com_insert)
39. result=`${MySQL_CONN} extended-status | grep -w "Com_insert" | cut -d"|" -f3`
40. echo $result
41. ;;
42. Com_delete)
43. result=`${MySQL_CONN} extended-status | grep -w "Com_delete" | cut -d"|" -f3`
44. echo $result
45. ;;
46. Com_commit)
47. result=`${MySQL_CONN} extended-status | grep -w "Com_commit" | cut -d"|" -f3`
48. echo $result
49. ;;
50. Bytes_sent)
51. result=`${MySQL_CONN} extended-status | grep -w "Bytes_sent" | cut -d"|" -f3`
52. echo $result
53. ;;
54. Bytes_received)
55. result=`${MySQL_CONN} extended-status | grep -w "Bytes_received" | cut -d"|" -f3`
56. echo $result
57. ;;
58. Com_begin)
59. result=`${MySQL_CONN} extended-status | grep -w "Com_begin" | cut -d"|" -f3`
60. echo $result
61. ;;
62. *)
63. echo "Usage:$0(Uptime|Com_update|Slow_querles|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)"
64. ;;
65. esac
2.2在zabbix-agent端创建自定义键值配置文件
创建mysql.status的键值
chmod +x check_mysql.sh
chown zabbix.zabbix check_mysql.sh
cd /etc/zabbix/zabbix_agentd.d/
vim mysql_status.conf
cat mysql_status.conf
1. UserParameter=mysql.status[*],/server/scripts/check_mysql.sh $1
删除旧键值模板
rm -rf userparameter_mysql.conf
创建mysql.ping和mysql.version的键值
vim mysql_status.conf
cat mysql_status.conf
1. UserParameter=mysql.status[*],/server/scripts/check_mysql.sh $1
2. UserParameter=mysql.ping,/usr/bin/mysqladmin -uroot -plinyaonie ping | grep -c alive
3. UserParameter=mysql.version,/usr/bin/mysql -V
重启zabbix-agentd服务
/etc/init.d/zabbix-agent restart
2.3 在zabbix-server端测试键值
zabbix_get -s 192.168.200.69 -p 10050 -k "mysql.status[Uptime]"
zabbix_get -s 192.168.200.69 -p 10050 -k "mysql.status[Com_commit]"
zabbix_get -s 192.168.200.69 -p 10050 -k "mysql.status[Bytes_sent]"
zabbix_get -s 192.168.200.69 -p 10050 -k "mysql.status[Bytes_received]"
zabbix_get -s 192.168.200.69 -p 10050 -k "mysql.ping"
zabbix_get -s 192.168.200.69 -p 10050 -k "mysql.version"
2.4 在zabbix-server端Web前台引入zabbix监控MySQL的模版
zabbix自带监控MySQL的模版,我们只需要将模版引入到主机即可 配置-->主机-->选择主机-->模板,然后将MySQL模版连接到此主机即可
从图中可以发现模板里的键值都是我们之前已经定义好了的键值