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 restart7)测试看能否获取到数据
# zabbix_get -s 127.0.0.1 -p 10050 -k mysql.status[Com_select]2006618)登陆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.vbs3)重启zabbix_agentd,并给主机添加MySQL模版,查看items状态。
对于以上关于zabbix是如何实现监控MySQL,如果大家还有更多需要了解的可以持续关注我们的行业推新,如需获取专业解答,可在官网联系售前售后的,希望该文章可给大家带来一定的知识更新。
监控 个数 文件 路径 数据 配置 数据库 模板 用户 脚本 服务 主机 命令 密码 用户名 目录 专业 事物 内容 参数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 苹果更新服务器连接失败 首届厦门青少年网络安全 服务器正忙登录不上去 汤森路透数据库叫什么 软件开发项目汇报ppt mysql 数据库账号 网络数据库的作用 我国对中学生网络安全报告 软件开发项目怎么定价 嘉兴服务器工控机厂家 网络安全龙虎榜 计算机专业网络技术考试 怎么用java开发服务器 数据库课程设计系统功能分析 北京有竹居网络技术公司 适合网络安全售后工程师的书籍 数据库表扩域 滦平租房软件开发 手机绘图软件开发 服务器如何安装ftp服务 软件开发对日 ebsco数据库基本检索 网络安全咨询师的现状 东台大地网络技术有限公司简介 数据库表在word文档 网络技术专家难吗 存储服务器能否安装 周秀山网络安全教育 我的世界服务器第二季 seer数据库中有治疗后评估吗相关文章