背景:多台服务器管理,出现问题时只能跑到指定机器上查看日志信息。
而cpu,mem使用情况在日志里面只能凭个人经验来判断是cpu,还是mem或者io出现问题,导致机器出现故障。而zabbix可以保存这些时间段,机器各项的信息从而能快速定位问题。
zabbix:包含了系统常用的监控,同时还可以自定义选项来监控(exp:访问量、在线)。扩展起来非常方便,所以就选择了zabbix。
对linux来说基本很大一部分机器都装有mysql。同时官网也提供了php的监控方法(采用的时候zabbix_sender进行推送),但是这样每个机器就得装php才能监控,可是想想不用php也完全能完成(shell)。于是就自己写了监控脚本和大家大奖分享下。
具体思路:
- 采集mysql自身的运行信息
View Code SQL
show global status;
- 讲打印出来的mysql运行信息保存至临时文件(exp:/tmp/zabbix_mysql_%M.log).
这里很多人会问为什么要保存至文件呢,而不是直接返回呢?
<1>.为了保证mysql取值时,不会频繁的进行数据库连接查询,而zabbix获取数据有事周期性的(本人使用的是60s/次)。所以本人使用分钟来生成文件,分钟内都取同一个文件。
<2>.为了保证各项数据取到没有时间差。保证生成的线条一致性。
好了废话不多说,下面是she脚本。
-
View Code SHELL
#!/bin/sh dateM=`date "+%M"`; fileName='/tmp/zabbix_mysql_status_'$dateM".log"; if [ ! -f $fileName ]; then rm -f /tmp/zabbix_mysql_status*; mysql -uroot -p$1 -e 'show global status;' > $fileName; fi; if [ -f $fileName ]; then cat $fileName | grep -w "$2" | awk 'BEGIN {FS=" "} {print $2}' fi;
usage:
- 复制以上内容保存到/usr/bin/zabbix_mysql.sh(或者直接下载).
- 赋予执行去权限(chmod +x /usr/bin/zabbix_mysql.sh)
- 里面有两个参数 $1:表示root密码,$2:监控项。
exp:zabbix_mysql.sh rootpass Com_select(启动mysql的总查询次数)
mysql status 介绍:
http://dev.mysql.com/doc/refman/5.0/en/server-status-variables.html
效果图: