一种通过ZABBIX监控MYSQL表空间的方法技术

技术编号:12398267 阅读:83 留言:0更新日期:2015-11-26 03:57
本发明专利技术提供一种通过ZABBIX监控MYSQL表空间的方法,其方法如下:通过创建键值为mysql.schema.size[mysql用户名,mysql密码,数据库名,表名]的监控项将参数传给mysqlsize.sh脚本,该脚本获取数据后传给zabbix并写入数据库。本发明专利技术的一种通过ZABBIX监控MYSQL表空间的方法和现有技术相比,可以实时监控集群中任意服务器上mysql所有表的总大小、某个数据库所有表的大小以及某个数据库中某张表的大小,并在Web界面上实时展现出来,当表空间超出指定大小时产生告警信息提醒用户。而且本发明专利技术还具有构思合理、使用方便、节省人力、智能化程度高等特点,因而具有很好的使用价值。

【技术实现步骤摘要】

本专利技术涉及计算机自动化运维与监控领域,具体地说是一种通过ZABBIX监控MYSQL表空间的方法
技术介绍
随着信息时代的持续发展,IT运维已经成为IT服务内涵中重要的组成部分。面对越来越复杂的业务,面对越来越多样化的用户需求,不断扩展的IT应用需要越来越合理的模式来保障IT服务能灵活便捷、安全稳定地持续保障,这种模式中的保障因素就是IT运维。从初期的几台服务器发展到庞大的数据中心,单靠人工已经无法满足在技术、业务、管理等方面的要求,那么标准化、自动化、架构优化、过程优化等降低IT服务成本的因素越来越被人们所重视。一个集群中往往有多台mysql数据库服务器,每个mysql中又有多个数据库,每个数据库中又有多张表,为了防止数据过多导致性能下降或者将硬盘写满导致不能正常运行,对mysql表空间大小进行实时监控是十分必要的工作。Zabbix是一个基于Web界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。本专利技术基于zabbix进行扩展。由于zabbix的Web系统有很多弊端,所以采用Spring、iBatis、JSP、Highcharts开发了一套新的Web系统。
技术实现思路
本专利技术的目的是克服现有技术中存在的不足,提供一种通过ZABBIX监控MYSQL表空间的方法。本专利技术的技术方案是按以下方式实现的,其方法如下: 在zabbix系统中找到要监控的数据库服务器,创建一个新的监控项,类型为“Zabbix代理”,键值为mysql.schema, size ; 根据数据库名与表名的不同分为三类: (1)、当参数“数据库名”为“all”时,参数“表名”无效,意为整个mysql所有表的大小,例如:mysql.schema, size ; (2)、当参数“数据库名”不为“all”,参数“表名”为“all”时意为该数据库下所有表的总大小,例如:mysql.schema, size ,即cmp数据库所有表的总大小; (3)、当参数“数据库名”与“表名”都不为“all”时意为该数据库下某张表的大小,例如:mysql.schema, size ,即 zabbix 数据库的 history 表的大小;修改 zabbix_agentd.conf 配置文件,添加 UserParameter=mysql.schema, size , /usr/local/zabbix/plugins/mysqlsize.sh $1 $2 $3 $4,其中 mysql.schema, size 是新创建的监控项的键值,mysqlsize.sh是收集表大小的shell脚本,$1 $2 $3 $4分别对应着监控项mysql.schema, size的四个参数:mysql用户名,mysql密码,数据库名,表名;将配置文件中的Timeout值设为10或更大,因为默认为3秒,而mysqlsize.sh执行一次的时间往往大于3秒,Timeout值必需大于mysqlsize.sh的执行时间才会正常执行; mysqlsize.sh 代码如下:#!/bin/bashuser=$lpassword=$2dbname=$3tablename=$4 if #查询mysql下所有数据库的总大小 thensize=$(mysql -u$ {user} -p$ {password} -D informat1n_schema -BN _e"SELECT SUM(DATA_LENGTH+INDEX_LENGTH) FROM TABLES;")echo $sizeelse if #查询数据库$dbname下所有表的总大小 thensize=$(mysql -u$ {user} -p$ {password} -D informat1n_schema -BN _e"SELECT SUM(DATA_LENGTH+INDEX_LENGTH) FROM TABLESWHERE TABLE—SCHEMA=’$dbname’ ;")echo $size else ##查询数据库$dbname下的$tablename表的大小size=$(mysql -u$ {user} -p$ {password} -D informat1n_schema -BN _e"SELECT SUM (DATA_LENGTH+INDEX_LENGTH) FROM TABLES WHERE TABLE_SCHEMA=' $dbnameJ AND TABLE—NAME=,$tablename,;")echo $sizefifi Zabbix系统将$1 $2 $3 $4传给mysqlsize.sh后,该脚本会根据用户名($1)与密码($2)登陆mysql,然后根据数据库名($3)与表名($4)进行查询,最后将结果返回给zabbix,然后写入zabbix的数据库本专利技术的优点是: 本专利技术的一种通过ZABBIX监控MYSQL表空间的方法和现有技术相比,可以实时监控集群中任意服务器上mysql所有表的总大小、某个数据库所有表的大小以及某个数据库中某张表的大小,并在Web界面上实时展现出来,当表空间超出指定大小时产生告警信息提醒用户。而且本专利技术还具有构思合理、使用方便、节省人力、智能化程度高等特点,因而具有很好的使用价值。实施方式 下面对本专利技术的一种通过ZABBIX监控MYSQL表空间的方法作以下详细说明。本专利技术的一种通过ZABBIX监控MYSQL表空间的方法,方法如下: 在zabbix系统中找到要监控的数据库服务器,创建一个新的监控项(item),类型为“Zabbix 代理(被动式)”,键值(key)为 mysql.schema, size 。根据数据库名与表名的不同分为三类: 1.当参数“数据库名”为“all”时,参数“表名”无效,意为整个mysql所有表的大小,例如:mysql.schema, size ; 2.当参数“数据库名”不为“all”,参数“表名”为“all”时意为该数据库下所有表的总大小,例如:mysql.schema, size ,即cmp数据库所有表的总大小; 3.当参数“数据库名”与“表名”都不为“all”时意为该数据库下某张表的大小,例如:mysql.schema, size ,艮P zabbix 数据库的 history 表的大小。修改zabbix—agentd.conf 配置文件,添加 UserParameter=mysql.schema.size,/usr/local/zabbix/plugins/mysqlsize.sh $1 $2 $3 $4,其中 mysql.schema.size是新创建的监控项的键值,my当前第1页1 2 本文档来自技高网...

【技术保护点】
一种通过ZABBIX监控MYSQL表空间的方法,其特征在于方法如下:在zabbix系统中找到要监控的数据库服务器,创建一个新的监控项,类型为“Zabbix代理”,键值为mysql.schema.size[mysql用户名,mysql密码,数据库名,表名];根据数据库名与表名的不同分为三类:(1)、当参数“数据库名”为“all”时,参数“表名”无效,意为整个mysql所有表的大小,例如:mysql.schema.size[root,root,all];(2)、当参数“数据库名”不为“all”,参数“表名”为“all”时意为该数据库下所有表的总大小,例如:mysql.schema.size[root,root,cmp,all],即cmp数据库所有表的总大小;(3)、当参数“数据库名”与“表名”都不为“all”时意为该数据库下某张表的大小,例如:mysql.schema.size[root,root,zabbix,history],即zabbix数据库的history表的大小;修改zabbix_agentd.conf配置文件,添加UserParameter=mysql.schema.size[*],/usr/local/zabbix/plugins/mysqlsize.sh $1 $2 $3 $4,其中mysql.schema.size[*]是新创建的监控项的键值,mysqlsize.sh 是收集表大小的shell脚本,$1 $2 $3 $4分别对应着监控项mysql.schema.size的四个参数:mysql用户名,mysql密码,数据库名,表名;将配置文件中的Timeout值设为10或更大,因为默认为3秒,而mysqlsize.sh执行一次的时间往往大于3秒,Timeout值必需大于mysqlsize.sh的执行时间才会正常执行;mysqlsize.sh代码如下:#!/bin/bashuser=$1password=$2dbname=$3tablename=$4if [ $dbname == all ]   #查询mysql下所有数据库的总大小thensize=$(mysql ‑u${user} ‑p${password} ‑D information_schema ‑BN ‑eSELECT SUM(DATA_LENGTH+INDEX_LENGTH) FROM TABLES;)echo $sizeelseif [ $tablename == all ]#查询数据库$dbname下所有表的总大小thensize=$(mysql ‑u${user} ‑p${password} ‑D information_schema ‑BN ‑eSELECT SUM(DATA_LENGTH+INDEX_LENGTH) FROM TABLESWHERE TABLE_SCHEMA='$dbname';)echo $sizeelse    ##查询数据库$dbname下的$tablename表的大小size=$(mysql ‑u${user} ‑p${password} ‑D information_schema ‑BN ‑eSELECT SUM(DATA_LENGTH+INDEX_LENGTH) FROM TABLES WHERE TABLE_SCHEMA='$dbname' AND TABLE_NAME='$tablename';)        echo $size        fifiZabbix系统将$1 $2 $3 $4传给mysqlsize.sh后,该脚本会根据用户名($1)与密码($2)登陆mysql,然后根据数据库名($3)与表名($4)进行查询,最后将结果返回给zabbix,然后写入zabbix的数据库。...

【技术特征摘要】

【专利技术属性】
技术研发人员:周庆勇付迅
申请(专利权)人:浪潮软件股份有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1