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 自带模板监 ...
随机推荐
- Android ViewPager系列之ViewPager一屏显示多个子页面
ViewPager一屏显示多个子页面,常见的有两种形式: 1.当前展示的页面右侧显示一部分下个页面的内容 2.当前页面居中,左右两边分别显示上一个页面.下一个页面 第 1 种表现形式的实现代码 其实这 ...
- AOJ GRL_1_A: Single Source Shortest Path (Dijktra算法求单源最短路径,邻接表)
题目链接:http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=GRL_1_A Single Source Shortest Path In ...
- C语言中的作用域、链接属性与存储属性
C语言中的作用域.链接属性与存储属性 一.作用域(scope) 代码块作用域 表示{}之间的区域,下例所示,a可以在不同的代码块里面定义. #include<stdio.h> int ma ...
- c/s结构的自动化——pyautogui
环境:Python 3.5.3 pip install pyautogui -i http://pypi.douban.com/simple --trusted-host pypi.douban.co ...
- NOIp模拟赛二十九
又是受虐的一天呢~接下来四天都要打模拟赛QAQ 今日分数:0(100)+100+0=100 A题O(读入)结论题判断结果时没return 0被subtask卡成0分,喜提fstQAQ,B题DP,C题不 ...
- /etc/rsyncd.conf
[root@backup ~]# cat /etc/rsyncd.conf #Rsync server#created by oldboy ##rsyncd.conf start##uid = rsy ...
- nginx upstream
nginx转发http和tcp http转发 upstream goforit_201 { server 172.168.10.10:201; } server { listen 201; serve ...
- Vue异步组件Demo
Vue异步组件Demo 在大型应用中,我们可能需要将应用拆分为多个小模块,按需从服务器下载.为了进一步简化,Vue.js 允许将组件定义为一个工厂函数,异步地解析组件的定义.Vue.js 只在组件需要 ...
- 实验二实验结论&实验总结与体会
Part1:格式化输出函数printf()和格式化输入函数scanf() ① /* <C语言程序设计教程学习指导>p118 实验内容(1) 这是一个常用格式控制符使用示例 运行程序,结合运 ...
- C++primer书店程序
#include <iostream> #include <string> #include <cassert> #include <algorithm> ...