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的更多相关文章

  1. zabbix利用自带模板-监控mysql性能

    环境: zabbix3.4.4 mariadb 5.5.56 要求:  利用zabbix 自带的模板 监控mariadb 上的 并发连接数,慢查询数量,增删改查.请求流量带宽,mysql响应流量带宽等 ...

  2. zabbix使用自带模板监控MySQL

    监控mysql不能直接使用zabbix自带模板,还需要到被监控的mysql客户端做配置. 1.在zabbix   web配置步骤如下图: 2.配置完之后去看mysql主机监控项的时候看到mysql的监 ...

  3. zabbix用自带模板监控mysql

    本身zabbix-agent没有提供对mysql监控的key,所以需要自定义key来应用这个模板 默认的模板有以下三类 mysql.status[var] mysql.ping mysql.versi ...

  4. Zabbix Server 自带模板监控更加灵活MySQL数据库

    Zabbix Server 自带模板监控更加灵活MySQL数据库 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  一.zabbix-agent端配置 1>.修改zabbix的 ...

  5. Zabbix Server 自带模板监控有密码MySQL数据库

    Zabbix Server 自带模板监控有密码MySQL数据库 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  一.Zabbix-agent端的配置 1>.为数据库设置密码 ...

  6. Zabbix Server 自带模板监控无密码MySQL数据库

    Zabbix Server 自带模板监控无密码MySQL数据库 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  一.安装MariaDB 1>.安装MariaDB  [root ...

  7. 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 ...

  8. Zabbix-3.0.3使用自带模板监控MySQL

    导读 Zabbix是一款优秀的,开源的,企业级监控软件,可以通过二次开发来监控你想要监控的很多服务,本文介绍使用Zabbix自带的模板监控MySQL服务. 配置userparameter_mysql. ...

  9. 007-Zabbix Server 自带模板监控MySQL数据库

    监控数据库分为三种: 1.Zabbix Server 自带模板监控无密码MySQL数据库 2.Zabbix Server 自带模板监控有密码MySQL数据库 3.Zabbix Server 自带模板监 ...

随机推荐

  1. Codeforces 676E The Last Fight Between Human and AI 规律

    链接 Codeforces 676E The Last Fight Between Human and AI 题意 给一个多项式,有些系数不确定.人和机器轮流填系数,系数可以是任何数,问是否能使得最后 ...

  2. MySQL学习(五)——使用JDBC完成用户表CRUD的操作

    通过案例我们发现“获得连接”和“释放资源”两次代码将在之后的增删改查所有功能中都存在,开发中遇到此种情况,将采用工具类的方法进行抽取,从而达到代码的重复利用. 1.使用properties配置文件 开 ...

  3. hiho 1564 - 简单dfs + 宏的危害!!!

    题目链接 H公司有 N 台服务器,编号1~N,组成了一个树形结构.其中中央服务器处于根节点,终端服务器处于叶子节点. 中央服务器会向终端服务器发送消息.一条消息会通过中间节点,到达所有的终端服务器.消 ...

  4. Springboot设置跨域的三种方式

    方式一(精细配置) 在需要跨域的整个Controller或者单个方法上添加@CrossOrigin注解 方式二(全局配置) @Configuration public class WebMvcConf ...

  5. mariadb 视图 事务 索引 外键

    视图 对于复杂的查询,在多个地方被使用,如果需求发生了改变,需要更改sql语句,则需要在多个地方进行修改,维护起来非常麻烦   假如因为某种需求,需要将user拆房表usera和表userb,该两张表 ...

  6. 高并发web系统设计

    转载自:http://blog.csdn.net/qq_26562641/article/details/53170913 一.一般高并发web系统这里的一般指的是秒杀之类的电子商务系统,比如说小米抢 ...

  7. sshd修改监听端口

    vi /etc/sshd/sshd_config ListenAddress 0.0.0.0 #修改为 ListenAddress 192.168.0.1 #代表只监听192.168.0.1的SSH请 ...

  8. CodeForces - 552E Vanya and Brackets

    Vanya and Brackets Time Limit: 1000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u ...

  9. C++primer书店程序

    #include <iostream> #include <string> #include <cassert> #include <algorithm> ...

  10. Java之旅(二)--- ServletContext

     什么是ServletContext?  WEB容器在启动时,它会为每一个WEB应用程序都创建一个相应的ServletContext对象.它代表当前web应用.通过使用这个对象,servlet能够 ...