zabbix 使用自带模板监控mysql
1、这里可以采用zabbix自带的mysql模版,但是也需要在mysql服务器上准备获取mysql status的脚本chk_mysql.sh,zabbix通过调用这个脚本来获取mysql的运行信息。
在配置文件agent 上的 zabbix_agentd.d下面里面添加mysql监控信息:
cat /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
UserParameter=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=/var/lib/zabbix mysql -N'
UserParameter=mysql.ping,HOME=/etc/zabbix/ mysqladmin ping | grep -c alive
UserParameter=mysql.version,mysql -V
UserParameter=mysql.status[*],/data/service/script/zabbix/check_mysql.sh $1
2、添加监控mysql用户密码
grant usage on *.* to 'read'@'10.5.58.231' identified by '123456';
3、创建check 脚本如下:
cat /data/service/script/zabbix/check_mysql.sh
#!/bin/bash
#Filename:chk_mysql.sh
#Author:zhangjunchao
MYSQL_SOCK="/var/lib/mysql/mysql.sock"
MYSQL_USER='read'
MYSQL_PASSWORD='123456'
MYSQL_HOST='10.5.58.248'
MYSQL_PORT='3306'
MYSQL_Connect="/usr/bin/mysqladmin -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -P$MYSQL_PORT -S$MYSQL_SOCK"
if [ $# -ne 1 ];then
echo "please input one arguement"
fi
case $1 in
Uptime) #查询当前MySQL本次启动后的运行统计时间
result=`${MYSQL_Connect} status 2>/dev/null | cut -d ":" -f 2 | cut -d " " -f 2`
echo $result
;;
Slow_queries) #查看当前慢查询语句的个数
result=`${MYSQL_Connect} extended-status 2>/dev/null | grep -w "Slow_queries" | cut -d "|" -f 3`
echo $result
;;
Com_rollback) #执行回滚的个数
result=`${MYSQL_Connect} extended-status 2>/dev/null | grep -w "Com_rollback" | cut -d "|" -f 3`
echo $result
;;
Questions)
result=`${MYSQL_Connect} extended-status 2>/dev/null | grep -w "Questions" | cut -d "|" -f 3`
echo $result
;;
Com_commit)
result=`${MYSQL_Connect} extended-status 2>/dev/null | grep -w "Com_commit" | cut -d "|" -f 3`
echo $result
;;
Bytes_sent) #发送的字节数
result=`${MYSQL_Connect} extended-status 2>/dev/null | grep -w "Bytes_sent" | cut -d "|" -f 3`
echo $result
;;
Bytes_received) #接受的字节数
result=`${MYSQL_Connect} extended-status 2>/dev/null | grep -w "Bytes_received" | cut -d "|" -f 3`
echo $result
;;
Com_begin)
result=`${MYSQL_Connect} extended-status 2>/dev/null | grep -w "Com_begin" | cut -d "|" -f 3`
echo $result
;;
Open_tables) #查看当前打开的表数量
result=`${MYSQL_Connect} status 2>/dev/null | cut -d ":" -f 5 | cut -d " " -f 2`
echo $result
;;
Threads_connected) #查看当前打开的连接数量
result=`${MYSQL_Connect} extended-status 2>/dev/null | grep -w "Threads_connected" | cut -d "|" -f 3`
echo $result
;;
Threads_cached) #查看线程缓存内的线程数量
result=`${MYSQL_Connect} extended-status 2>/dev/null | grep -w "Threads_cached" | cut -d "|" -f 3`
echo $result
;;
Threads_created) #查看创建用来处理连接的线程数。如果Threads_created较大,可能要增加thread_cache_size值。
result=`${MYSQL_Connect} extended-status 2>/dev/null | grep -w "Threads_created" | cut -d "|" -f 3`
echo $result
;;
Threads_running) #查看激活的(非睡眠状态)线程数
result=`${MYSQL_Connect} extended-status 2>/dev/null | grep -w "Threads_running" | cut -d "|" -f 3`
echo $result
;;
Slow_launch_threads) #查看创建时间超过slow_launch_time秒的线程数
result=`${MYSQL_Connect} extended-status 2>/dev/null | grep -w "Slow_launch_threads" | cut -d "|" -f 3`
echo $result
;;
Com_select) #查看select语句的执行数
result=`${MYSQL_Connect} extended-status 2>/dev/null | grep -w "Com_select" |cut -d "|" -f 3`
echo $result
;;
Com_insert) #查看insert语句的执行数
result=`${MYSQL_Connect} extended-status 2>/dev/null | grep -w "Com_insert" |cut -d "|" -f 3`
echo $result
;;
Com_update) #查看update语句的执行数
result=`${MYSQL_Connect} extended-status 2>/dev/null | grep -w "Com_update" | cut -d "|" -f 3`
echo $result
;;
Com_delete) #查看delete语句的执行数
result=`${MYSQL_Connect} extended-status 2>/dev/null | grep -w "Com_delete" | cut -d "|" -f 3`
echo $result
;;
Connections) #查看试图连接到MySQL(不管是否连接成功)的连接数
result=`${MYSQL_Connect} extended-status 2>/dev/null | grep -w "Connections" | cut -d "|" -f 3`
echo $result
;;
Table_locks_immediate) #查看立即获得的表的锁的次数
result=`${MYSQL_Connect} extended-status 2>/dev/null | grep -w "Table_locks_immediate" | cut -d "|" -f 3`
echo $result
;;
Table_locks_waited) #查看不能立即获得的表的锁的次数。如果该值较高,并且有性能问题,你应首先优化查询,然后拆分表或使用复制
result=`${MYSQL_Connect} extended-status 2>/dev/null | grep -w "Table_locks_waited" | cut -d "|" -f 3`
echo $result
;;
*)
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)"
;;
esac
4、添加权限
chmod 755 /data/service/script/zabbix/check_mysql.sh
5、agent端:
mysqladmin -uread -p'123456' -h10.5.58.227 ping
mysqld is alive
如果MySQL状态正常,会显示mysqld is alive,否则会提示连接不上。
对于服务器端,mysqld is alive这样的句子不好理解,服务器端最好只接收1和0,1表示服务可用,0表示服务不可用。那么再改进一下这个命令,如下
mysqladmin -uread -p'123456' -h10.5.58.227 ping|grep -c alive
用户名和密码放在命令中对于以后的维护不好,所以我们在/etc/zabbix/下创建一个包含MySQL用户名和密码的配置文件“.my.cnf”,如下:(我这里没有这么做)
[client]
user=read
host=10.5.58.227
password=123456
# HOME=/etc/zabbix/ mysqladmin ping | grep -c alive
6、修改
在/etc/zabbix/zabbix_agentd.d/目录下创建userparameter_mysql.conf文件。在文件中添加如下命令:
# cat userparameter_mysql.conf
UserParameter=mysql.ping,HOME=/etc/zabbix/ mysqladmin ping | grep -c alive
这个命令中”UserParameter”表示这是一个用户自定义的脚本;“=”号后是脚本的内容;“mysql.ping”是Key,“,”号后的命令会在Zabbix Server向Agent发起获取“mysql.ping”这个key的请求时被调用,并将返回值返回给Server。
保存并退出后可以使用下面的命令测试是否正常工作。
客户端:
zabbix_agentd -t mysql.ping -c /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
mysql.ping [t|1]
zabbix_agentd -t mysql.status[Uptime] -c /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
mysql.status[Uptime] [t|773069]
服务端:
zabbix_agentd -t mysql.ping -c /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
mysql.ping [t|1]
zabbix_get -s10.5.58.227 -p 10050 -k mysql.ping
1
如果报错,提示无法通过localhost 连接,则执行如下语句。
ln -s /data/service/mysql/3306/tmpdir/mysql.sock /var/lib/mysql/mysql.sock
7、测试check_mysql
zabbix_get -s10.5.58.227 -p 10050 -k "mysql.status[Com_update]"
14480
表示成功。
8、添加监控视图
监控脚本运行正常后,就会在zabbix-server的host下面的graph里面看到mysql的监控性能视图.可以看到性能监控视图,zabbix自带模版默认有2个性能图,这些图要等运行一段时间后才能画出来:

9、添加Myql_Status


zabbix 使用自带模板监控mysql的更多相关文章
- zabbix利用自带模板-监控mysql性能
环境: zabbix3.4.4 mariadb 5.5.56 要求: 利用zabbix 自带的模板 监控mariadb 上的 并发连接数,慢查询数量,增删改查.请求流量带宽,mysql响应流量带宽等 ...
- zabbix使用自带模板监控MySQL
监控mysql不能直接使用zabbix自带模板,还需要到被监控的mysql客户端做配置. 1.在zabbix web配置步骤如下图: 2.配置完之后去看mysql主机监控项的时候看到mysql的监 ...
- zabbix用自带模板监控mysql
本身zabbix-agent没有提供对mysql监控的key,所以需要自定义key来应用这个模板 默认的模板有以下三类 mysql.status[var] mysql.ping mysql.versi ...
- Zabbix Server 自带模板监控更加灵活MySQL数据库
Zabbix Server 自带模板监控更加灵活MySQL数据库 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.zabbix-agent端配置 1>.修改zabbix的 ...
- Zabbix Server 自带模板监控有密码MySQL数据库
Zabbix Server 自带模板监控有密码MySQL数据库 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Zabbix-agent端的配置 1>.为数据库设置密码 ...
- Zabbix Server 自带模板监控无密码MySQL数据库
Zabbix Server 自带模板监控无密码MySQL数据库 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装MariaDB 1>.安装MariaDB [root ...
- Zabbix-agent使用自带模板监控 MySQL
1.rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm 2.yum ...
- Zabbix-3.0.3使用自带模板监控MySQL
导读 Zabbix是一款优秀的,开源的,企业级监控软件,可以通过二次开发来监控你想要监控的很多服务,本文介绍使用Zabbix自带的模板监控MySQL服务. 配置userparameter_mysql. ...
- 007-Zabbix Server 自带模板监控MySQL数据库
监控数据库分为三种: 1.Zabbix Server 自带模板监控无密码MySQL数据库 2.Zabbix Server 自带模板监控有密码MySQL数据库 3.Zabbix Server 自带模板监 ...
随机推荐
- Ubuntu16.04+OpenCV3.2.0+Opencv_Contrib3.2.0安装
为了学习slam,在ubuntu16.04系统上安装opencv3.2.0以及对应的opencv_contrib3.2.0 安装过程 下载 Github上下载有的时候比较慢,我这里分享了OpenCV3 ...
- POJ 1951 模拟
思路: 坑爹模拟毁我一生 给两组数据: 输入: YOURE TRAVELING THROUGH ANOTHER DIMENSION A DIMENSION NOT OF SIGHT. 输出: YR T ...
- Batch脚本获取日期SET YEAR=%date:~10,4%
在batch脚本中我们可以通过下面的语句来对日期进行操作: SET YEAR=%date:~10,4% SET MONTH=%date:~4,2% SET DAY=%date:~7,2% SET HO ...
- 有关马氏距离和hinge loss的学习记录
关于度量学习,之前没有看太多相关的文献.不过南京的周老师的一篇NIPS,确实把这个问题剖析得比较清楚. Mahalanobis距离一般表示为d=(x-y)TM(x-y),其中x和y是空间中两个样本点, ...
- 修复EJBInvokerServlet漏洞
1600/invoker/EJBInvokerServlet(存在命令执行) 修复方案: # 删除接口 # 设置中间件的访问控制权限,禁止web访问 /invoker 目录 http://www.cn ...
- lua中调用C++函数
lua中调用C++函数 我们产品中提供了很多lua-C API给用户在lua中调用,之前一直没用深究其实现原理,只是根据已有的代码在编码.显然这不是一个好的习惯,没用达到知其所以然的目的. 一.基本原 ...
- SpringCloud学习笔记(3)----Spring Cloud Netflix之深入理解Eureka
1. Eureka服务端的启动过程 1.1 入口类EurekaServerInitializerConfiguration类, public void start() { (new Thread(n ...
- div隐藏但是依然占位置
<!doctype html> <html> <head> <meta charset="utf-8"> <script ty ...
- Html标记语言学习一2017年6月12日
今天主要学习了 frame的用法. <frameset> 可以将网页分成几个不同的部分 使用 cols 和 rows 两种标记.前者是列,后者是行 <frame/> 单标 ...
- 【转载】CPU架构、指令集与指令集体系结构(ISA)
最近学习计算机系统基础,了解到指令集体系结构. 对CPU架构.指令集和指令集体系结构的关系不清楚,特此记录. 指令集体系结构(ISA)包括 指令集.指令集编码.基本数据类型等. CPU架构 实现了 指 ...