zabbix是如何实现监控MySQL
下文内容主要给大家带来zabbix是如何实现监控MySQL,所讲到的知识,与书籍不同,都是专业技术人员在与用户接触过程中,总结出来的,具有一定的经验分享价值,希望给广大读者带来帮助。
一、linux环境下监控MySQL
Zabbix Server自带了MySQL插件来监控mysql数据库的模板,只需要配置好agent客户端,然后在web端给主机增加模板就行了
监控项目:
Com_update: mysql执行的更新个数
Com_select: mysql执行的查询个数
Com_insert: mysql执行插入的个数
Com_delete: 执行删除的个数
Com_rollback: 执行回滚的操作个数
Bytes_received: 接受的字节数
Bytes_sent: 发送的字节数
Slow_queries: 慢查询语句的个数
Com_commit: 确认的事物个数
Com_begin: 开始的事物个数
Uptime: 云服务器已启动的秒数
Questions: 客户端发送到服务器的语句个数
监控模板下载地址:http://www.zabbix.org/wiki/Zabbix_Templates#External_template_resources
脚本下载地址:https://github.com/itnihao/zabbix-book
1)创建zabbix链接MySQL的用户名,密码并授予权限。
mysql> grant all on *.* to zabbix@'localhost'identified by "123456";mysql> flush privileges;
2)在zabbix_agent服务目录下创建 .my.cnf 连接文件
cd /usr/local/zabbix/etc/vim .my.cnf[client]user=zabbixpassword=123456
注意:
如果在数据库grant授权时,针对的是localhost,这个.my.cnf里面就不用加host参数了【如上配置】
但如果grant授权时针对的是本机的ip(如192.168.1.25),那么在.my.cnf文件里就要加上host参数进行指定:host=192.168.1.25
3)配置MySQL的key文件
这个可以从zabbix安装时的解压包里拷贝过来:
cp /usr/local/src/zabbix3.0.3/conf/zabbix_agentd/userparameter_mysql.conf /usr/local/zabbix/etc/zabbix_agentd.conf.d/
4)替换zabbix安装路径,注意如果MySQL没配置好环境变量可能找不到MySQL命令,可以用MySQL全路径
看到类似 HOME=/var/lib/zabbix 的路径设置,把路径全都替换为 /usr/local/zabbix/etc/,也就是上面的.my.cnf文件所在的目录路径。
cd /usr/local/zabbix/etc/zabbix_agentd.conf.d/vim userparameter_mysql.conf# For all the following commands HOME should be set to the directory that has .my.cnf file with password information.# Flexible parameter to grab global variables. On the frontend side, use keys like mysql.status[Com_insert].# Key syntax is mysql.status[variable].UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/usr/local/zabbix/etc/ mysql -N | awk '{print $$2}'# Flexible parameter to determine database or table size. On the frontend side, use keys like mysql.size[zabbix,history,data].# Key syntax is mysql.size[,,].# Database may be a database name or "all". Default is "all".# Table may be a table name or "all". Default is "all".# Type may be "data", "index", "free" or "both". Both is a sum of data and index. Default is "both".# Database is mandatory if a table is specified. Type may be specified always.# Returns value in bytes.# 'sum' on data_length or index_length alone needed when we are getting this information for whole database instead of a single tableUserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/usr/local/zabbix/etc/ mysql -N'UserParameter=mysql.ping,HOME=/usr/local/zabbix/etc/ mysqladmin ping | grep -c aliveUserParameter=mysql.version,mysql -V%s#/var/lib/zabbix#/usr/local/zabbix/etc/# #用命令替换也可以用这个shell脚本监控,包括主从监控:
### MySQL DB InfomationUserParameter=mysql.status[*],echo"show global status where Variable_name='$1';"|mysql--defaults-file=/usr/local/zabbix/etc/.my.cnf -N|awk '{print $$2}'UserParameter=mysql.variables[*],echo"show global variables where Variable_name='$1';"|mysql--defaults-file=/usr/local/zabbix/etc/.my.cnf -N|awk '{print $$2}'UserParameter=mysql.ping,mysqladmin--defaults-file=/usr/local/zabbix/etc/.my.cnf ping|grep -c aliveUserParameter=mysql.version,echo"select version();"|mysql--defaults-file=/usr/local/zabbix/etc/.my.cnf -N #### MySQL Master InformationUserParameter=mysql.master.Slave_count,echo"show slave hosts;"|mysql--defaults-file=/usr/local/zabbix/etc/.my.cnf -N|wc -lUserParameter=mysql.master.Binlog_file,echo"show master status;"|mysql--defaults-file=/usr/local/zabbix/etc/.my.cnf -N|awk '{print $1}'|awk -F.'{print $1}'UserParameter=mysql.master.Binlog_number,echo"show master status;"|mysql--defaults-file=/usr/local/zabbix/etc/.my.cnf -N|awk '{print $1}'|awk -F.'{print $2}'UserParameter=mysql.master.Binlog_position,echo"show master status;"|mysql --defaults-file=/usr/local/zabbix/etc/.my.cnf-N|awk '{print $2}'UserParameter=mysql.master.Binlog_count,echo"show binary logs;"|mysql--defaults-file=/usr/local/zabbix/etc/.my.cnf -N|wc -lUserParameter=mysql.master.Binlog_total_size,echo"show binary logs;"|mysql--defaults-file=/usr/local/zabbix/etc/.my.cnf -N|awk '{sum+=$NF}END{print sum}' #### MySQL Slave InformationUserParameter=mysql.slave.Seconds_Behind_Master,echo"show slave status\G"|mysql--defaults-file=/usr/local/zabbix/etc/.my.cnf|grep "Seconds_Behind_Master"|awk'{print $2}'UserParameter=mysql.slave.Slave_IO_Running,echo"show slave status\G"|mysql--defaults-file=/usr/local/zabbix/etc/.my.cnf|grep"Slave_IO_Running"|awk '{print $2}'UserParameter=mysql.slave.Slave_SQL_Running,echo"show slave status\G"|mysql--defaults-file=/usr/local/zabbix/etc/.my.cnf|grep"Slave_SQL_Running"|awk '{print $2}'UserParameter=mysql.slave.Relay_Log_Pos,echo"show slave status\G"|mysql--defaults-file=/usr/local/zabbix/etc/.my.cnf|grep"Relay_Log_Pos"|awk '{print $2}'UserParameter=mysql.slave.Exec_Master_Log_Pos,echo"show slave status\G"|mysql--defaults-file=/usr/local/zabbix/etc/.my.cnf|grep"Exec_Master_Log_Pos"|awk '{print $2}'UserParameter=mysql.slave.Read_Master_Log_Pos,echo"show slave status\G"|mysql--defaults-file=/usr/local/zabbix/etc/.my.cnf|grep"Read_Master_Log_Pos"|awk '{print $2}'
5)修改zabbix_agentd.conf配置文件,开启额外加载,就是去掉前面的#号
vim zabbix_agentd.confInclude=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
6)重启zabbix_agentd服务
/etc/init.d/zabbix_agentd restart
7)测试看能否获取到数据
# zabbix_get -s 127.0.0.1 -p 10050 -k mysql.status[Com_select]200661
8)登陆zabbix监控界面,在"配置"里为主机添加模板,完成监控。


二、windows下的MySQL监控
要想在Windows上取得MySQL的状态数据,可以用vbs脚本运行mysql命令
1)在d:\Zabbix\Scripts\目录下新建两个脚本文件内容如下:
mysql_ping.vbs
Set objFS =CreateObject("Scripting.FileSystemObject")Set objArgs = WScript.Argumentsstr1 = getCommandOutput("D:\SOFT_PHP_PACKAGE\mysql\bin\mysqladmin-ucactiuser -pcactiuser ping") //修改对应数据库路径,用户名和密码 If Instr(str1,"alive") > 0ThenWScript.Echo 1ElseWScript.Echo 0End If Function getCommandOutput(theCommand) Dim objShell, objCmdExecSet objShell =CreateObject("WScript.Shell")Set objCmdExec = objshell.exec(thecommand)getCommandOutput =objCmdExec.StdOut.ReadAllend Function
MYSQL-status.vbs
Set objFS = CreateObject("Scripting.FileSystemObject")Set objArgs = WScript.Argumentsstr1 = getCommandOutput("D:\SOFT_PHP_PACKAGE\mysql\bin\mysqladmin-u cactiuser -pcactiuser extended-status") //修改对应数据库路径,用户名和密码Arg = objArgs(0)str2 = Split(str1,"|") For i = LBound(str2) to UBound(str2) If Trim(str2(i)) = Arg Then WScript.Echo TRIM(str2(i+1))Exit ForEnd Ifnext Function getCommandOutput(theCommand) Dim objShell, objCmdExecSet objShell =CreateObject("WScript.Shell")Set objCmdExec = objshell.exec(thecommand)getCommandOutput =objCmdExec.StdOut.ReadAll end Function
2)修改windows上的zabbix_agentd.comf文件,设置key值。在UserParameter下面加两句;
UserParameter=mysql.status[*], cscript/nologo d:\Zabbix\Scripts\MySQL_Ext-Status_Script.vbs $1
UserParameter=mysql.ping, cscript /nologo d:\Zabbix\Scripts\MySql_Ping.vbs
3)重启zabbix_agentd,并给主机添加MySQL模版,查看items状态。

对于以上关于zabbix是如何实现监控MySQL,如果大家还有更多需要了解的可以持续关注我们的行业推新,如需获取专业解答,可在官网联系售前售后的,希望该文章可给大家带来一定的知识更新。
监控
个数
文件
路径
数据
配置
数据库
模板
用户
脚本
服务
主机
命令
密码
用户名
目录
专业
事物
内容
参数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
win10共享服务器
数据库中借书时长公式
经济与网络安全
湖南软件开发就找岚鸿
软件开发开源社区
公安网络安全专业考研
易云互联网科技有限公司
网网络安全的手抄报图片
织梦扫描数据库增加新文件
档案局网络安全检查总结
河北旧服务器回收云主机
南京软件开发实习
财税通数据库2014
用户 数据库设计
陕西hp服务器虚拟化优势
网络安全风险意识培训答案
广东推广软件开发询问报价
中国云谷科技集团互联网大会
服务器串口连笔记本
合肥新日网络安全技术服务
plsql查看数据库会话
数据库sql高级
打印服务器连续打印同一份文件
奥道网络技术
帮人做软件开发
计算机r网络技术
北京达因网络技术
联想服务器硬盘怎么拆
代码是怎么部署在服务器上的
计算机网络技术要掌握什么
相关文章